From 082773fbf2823ed81f05fe8b768e3aeee8ad07e2 Mon Sep 17 00:00:00 2001 From: Polkadot Wiki CI Date: Tue, 25 Jun 2024 13:11:36 +0000 Subject: [PATCH] Deploy website - based on 8f3a35ca55100f4577dd6710d1959cf346372e33 --- 404.html | 4 +- assets/js/2f3b630e.26afbc1a.js | 1 + assets/js/2f3b630e.9d927409.js | 1 - assets/js/ad762f86.4c1e9475.js | 1 - assets/js/ad762f86.cadc1f7d.js | 1 + ...n.33c6c220.js => runtime~main.1547e607.js} | 2 +- docs/alpha-program.html | 4 +- docs/ambassadors.html | 4 +- docs/apps-index.html | 4 +- docs/bug-bounty.html | 4 +- docs/build-archive-index.html | 4 +- docs/build-client-index.html | 4 +- docs/build-client-side.html | 4 +- docs/build-dapp.html | 4 +- docs/build-data.html | 4 +- docs/build-guide.html | 4 +- docs/build-guides-coretime-start.html | 4 +- docs/build-guides-coretime-troubleshoot.html | 4 +- docs/build-guides-install-deps.html | 4 +- docs/build-guides-template-basic.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-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/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/decentralized-voices.html | 4 +- docs/dev-heroes.html | 4 +- docs/explore-index.html | 4 +- docs/faq.html | 4 +- docs/general-index.html | 4 +- docs/general/dune-analytics.html | 4 +- .../dune-analytics/acala-dashboards.html | 4 +- .../dune-analytics/assethub-dashboards.html | 4 +- .../dune-analytics/astar-dashboards.html | 4 +- .../dune-analytics/bifrost-dashboards.html | 4 +- .../dune-analytics/bridgehub-dashboards.html | 4 +- .../dune-analytics/centrifuge-dashboards.html | 4 +- .../collectives-dashboards.html | 4 +- .../dune-analytics/coretime-dashboards.html | 4 +- .../dune-analytics/energywebx-dashboards.html | 4 +- .../dune-analytics/frequency-dashboards.html | 4 +- .../dune-analytics/hydration-dashboards.html | 4 +- .../dune-analytics/interlay-dashboards.html | 4 +- .../dune-analytics/invarch-dashboards.html | 4 +- .../dune-analytics/litentry-dashboards.html | 4 +- .../dune-analytics/manta-dashboards.html | 4 +- .../dune-analytics/moonbeam-dashboards.html | 4 +- .../dune-analytics/neuroweb-dashboards.html | 4 +- .../dune-analytics/nodle-dashboards.html | 4 +- .../dune-analytics/parachain-dashboards.html | 4 +- .../dune-analytics/pendulum-dashboards.html | 4 +- .../dune-analytics/people-dashboards.html | 4 +- .../dune-analytics/phala-dashboards.html | 4 +- .../dune-analytics/polimec-dashboards.html | 4 +- .../dune-analytics/polkadex-dashboards.html | 4 +- .../polkadot-dashboards-governance.html | 4 +- .../polkadot-dashboards-network.html | 4 +- .../polkadot-dashboards-overview.html | 4 +- .../polkadot-dashboards-staking.html | 4 +- .../dune-analytics/polkadot-dashboards.html | 4 +- .../polkadot-dot-ordinals.html | 4 +- .../polkadot-governance-dashboard.html | 4 +- .../polkadot-opengov-referenda-home.html | 4 +- ...ot-opengov-referendum-voting-analysis.html | 4 +- ...dot-staking-dashboard-nomination-pool.html | 4 +- ...polkadot-staking-dashboard-nominators.html | 4 +- ...olkadot-staking-dashboard-pool-member.html | 4 +- ...polkadot-staking-dashboard-validators.html | 4 +- .../polkadot-staking-dashboard.html | 4 +- .../dune-analytics/snowbridge-dashboards.html | 4 +- .../dune-analytics/stellaswap-dashboards.html | 4 +- .../dune-analytics/unique-dashboards.html | 4 +- docs/general/dunesql-cheatsheet.html | 4 +- .../onboarding-status-and-key-dashboards.html | 4 +- docs/general/polkadot-ecosystem-overview.html | 4 +- docs/general/project-dashboards.html | 4 +- docs/getting-started.html | 4 +- docs/glossary.html | 4 +- docs/governance-apps.html | 4 +- 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 | 4 +- docs/learn-account-abstraction.html | 4 +- docs/learn-account-advanced.html | 8 +-- docs/learn-account-balances.html | 4 +- docs/learn-account-multisig.html | 4 +- docs/learn-accounts.html | 4 +- docs/learn-advanced-index.html | 4 +- docs/learn-agile-coretime-index.html | 4 +- docs/learn-agile-coretime.html | 4 +- docs/learn-architecture.html | 4 +- docs/learn-archive.html | 4 +- docs/learn-asset-conversion-assethub.html | 4 +- docs/learn-assets-index.html | 4 +- docs/learn-assets.html | 4 +- docs/learn-async-backing.html | 4 +- docs/learn-auction.html | 4 +- docs/learn-basics-index.html | 4 +- docs/learn-bridge-hub.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-crowdloans.html | 4 +- docs/learn-cryptography.html | 4 +- docs/learn-dot-ksm-bridge.html | 4 +- docs/learn-elastic-scaling.html | 4 +- docs/learn-future-implementations-index.html | 4 +- docs/learn-guides-accounts-multisig.html | 4 +- docs/learn-guides-accounts-proxy-pure.html | 4 +- docs/learn-guides-accounts-proxy.html | 4 +- docs/learn-guides-accounts.html | 4 +- docs/learn-guides-asset-conversion.html | 4 +- docs/learn-guides-assets-create.html | 4 +- docs/learn-guides-assets-ledger.html | 4 +- docs/learn-guides-assets.html | 4 +- docs/learn-guides-bounties.html | 4 +- docs/learn-guides-bridges.html | 4 +- docs/learn-guides-coretime-marketplaces.html | 4 +- docs/learn-guides-coretime-parachains.html | 4 +- docs/learn-guides-dot-ksm-bridge.html | 4 +- docs/learn-guides-identity.html | 4 +- docs/learn-guides-ledger.html | 4 +- docs/learn-guides-nominator.html | 4 +- docs/learn-guides-polkadot-opengov.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-hyperbridge.html | 4 +- docs/learn-identity.html | 4 +- docs/learn-implementations.html | 4 +- docs/learn-index.html | 4 +- docs/learn-inflation.html | 4 +- docs/learn-jam-chain.html | 4 +- docs/learn-jam-faq.html | 4 +- docs/learn-jam.html | 4 +- docs/learn-nft-pallets.html | 4 +- docs/learn-nft-projects.html | 4 +- docs/learn-nft.html | 4 +- docs/learn-nomination-pools.html | 4 +- docs/learn-nominator.html | 4 +- docs/learn-offenses.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-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 | 54 +++++++++++-------- docs/learn-polkadot-technical-fellowship.html | 4 +- docs/learn-polkadotjs.html | 4 +- docs/learn-proxies-pure.html | 4 +- docs/learn-proxies.html | 4 +- docs/learn-runtime-upgrades.html | 4 +- docs/learn-sassafras.html | 4 +- docs/learn-scams.html | 4 +- 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-validator.html | 4 +- docs/learn-video-tutorials.html | 4 +- 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 | 4 +- docs/learn-xcm-usecases.html | 4 +- docs/learn-xcm.html | 4 +- docs/learn-xcvm.html | 4 +- docs/learn/learn-controller.html | 4 +- docs/learn/learn-governance.html | 4 +- docs/learn/learn-launch.html | 4 +- docs/learn/learn-redenomination.html | 4 +- docs/learn/learn-treasury.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 +- .../fundamentals/multilocation-example.html | 4 +- .../fundamentals/multilocation-junctions.html | 4 +- .../fundamentals/multilocation-summary.html | 4 +- .../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 +- .../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-archive.html | 4 +- docs/maintain-bootnode.html | 4 +- docs/maintain-collator-index.html | 4 +- docs/maintain-endpoints.html | 4 +- docs/maintain-errors.html | 4 +- docs/maintain-guides-async-backing.html | 4 +- docs/maintain-guides-how-to-chill.html | 4 +- ...ntain-guides-how-to-monitor-your-node.html | 4 +- ...aintain-guides-how-to-stop-validating.html | 4 +- docs/maintain-guides-how-to-systemd.html | 4 +- docs/maintain-guides-how-to-upgrade.html | 4 +- ...aintain-guides-how-to-validate-kusama.html | 4 +- ...ntain-guides-how-to-validate-polkadot.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-node-index.html | 4 +- docs/maintain-polkadot-parameters.html | 4 +- docs/maintain-rpc.html | 4 +- docs/maintain-sync.html | 4 +- docs/maintain-validator-index.html | 4 +- docs/maintain-wss.html | 4 +- docs/maintain/maintain-guides-democracy.html | 4 +- .../maintain-guides-how-to-join-council.html | 4 +- ...aintain-guides-how-to-vote-councillor.html | 4 +- docs/metadata.html | 4 +- docs/multisig-apps.html | 4 +- docs/parachains-apps.html | 4 +- docs/parity-data-dashboards.html | 4 +- docs/polkadot-direction.html | 4 +- docs/polkadot-v1.html | 4 +- docs/polkadot-vault.html | 4 +- docs/polkadot-vision-index.html | 4 +- docs/polkadotjs-ui.html | 4 +- docs/polkadotjs.html | 4 +- docs/programs-index.html | 4 +- docs/research.html | 4 +- docs/staking-apps.html | 4 +- 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 +- 318 files changed, 660 insertions(+), 652 deletions(-) create mode 100644 assets/js/2f3b630e.26afbc1a.js delete mode 100644 assets/js/2f3b630e.9d927409.js delete mode 100644 assets/js/ad762f86.4c1e9475.js create mode 100644 assets/js/ad762f86.cadc1f7d.js rename assets/js/{runtime~main.33c6c220.js => runtime~main.1547e607.js} (99%) diff --git a/404.html b/404.html index b56154b4c626..a60eda993b13 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/2f3b630e.26afbc1a.js b/assets/js/2f3b630e.26afbc1a.js new file mode 100644 index 000000000000..b767b8e39a34 --- /dev/null +++ b/assets/js/2f3b630e.26afbc1a.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[9226],{35703:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294);const o=function(e){var t,n=e.message,o=(0,a.useState)(!0),i=o[0],r=o[1];return a.createElement(a.Fragment,null,i&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var a=n(74165),o=n(15861),i=n(67294),r=n(87152),l=n(9712),s=n(67425);function d(e,t,n){return p.apply(this,arguments)}function p(){return(p=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var i,s,d,p,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 d=new r.U(i),e.next=21,l.G.create({provider:d});case 21:p=e.sent,(c=n.split(".")).forEach((function(e){e in p&&(p=p[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return s=p.toString(),e.abrupt("break",35);case 29:return e.next=31,p();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 u=function(e){var t=e.network,n=e.path,r=e.defaultValue,l=e.filter,s=void 0===l?void 0:l,p=(0,i.useState)(""),u=p[0],m=p[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://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusama-people":e="wss://kusama-people-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,d(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)}}}),[]),u}},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:()=>y,contentTitle:()=>f,default:()=>T,frontMatter:()=>g,metadata:()=>v,toc:()=>b});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"})))),d=["p0","p1","p2","p4","p8","p16","p32"],p={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 u(e){d.forEach((function(t){var n=document.getElementById(t);"polkadot"===e?n.innerText=p[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?u("polkadot"):"Governance V1 \xb7 Guide"===e||"Introduction to Polkadot OpenGov \xb7 Guide"===e?u("kusama"):console.log("Unknown wiki/guide type")}),[]),s};var h=n(35703),k=["components"],g={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"},f=void 0,v={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:1719300816,formattedLastUpdatedAt:"Jun 25, 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"}},y={},b=[{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:"Referenda",id:"referenda",level:2},{value:"Referenda Timeline",id:"referenda-timeline",level:3},{value:"Origins and Tracks",id:"origins-and-tracks",level:3},{value:"Voluntary Locking (Conviction Voting)",id:"voluntary-locking-conviction-voting",level:3},{value:"Approval and Support",id:"approval-and-support",level:3},{value:"Enactment",id:"enactment",level:3},{value:"Cancelling, Killing & Blacklisting",id:"cancelling-killing--blacklisting",level:3},{value:"Voting on a Referendum",id:"voting-on-a-referendum",level:2},{value:"Voting Without Conviction",id:"voting-without-conviction",level:3},{value:"Voting with Conviction",id:"voting-with-conviction",level:3},{value:"Multirole Delegation",id:"multirole-delegation",level:2},{value:"Resources",id:"resources",level:2}],w={toc:b},N="wrapper";function T(e){var t=e.components,i=(0,o.Z)(e,k);return(0,r.kt)(N,(0,a.Z)({},w,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(h.Z,{message:"Before voting or delegating in Polkadot OpenGov, get familiar with [balances and locks](./learn-account-balances#locks).",mdxType:"MessageBox"}),(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/learn-governance"},"Governance V1"),"). Governance is a constantly evolving protocol at\nthis stage in its lifecycle."),(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)("p",null,"Polkadot uses a sophisticated governance\nmechanism that allows it to evolve gracefully overtime at the ultimate behest of its assembled\nstakeholders. The goal is to ensure that most of the stake can always command the network."),(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/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/learn-governance#technical-committee"},"Technical Committee"),": A technocratic\ncommittee to manage upgrade timelines."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn/learn-governance#council"},"Council"),': An approval-voted, elected executive\n"government" to manage 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/learn-governance#alternating-voting-timetable"},"alternating voting timetable")," allowed\nto vote either 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\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"Governance v1")," to better understand the need for and the direction\nof Polkadot OpenGov."),(0,r.kt)("h2",{id:"summary"},"Summary"),(0,r.kt)("p",null,"In Governance v1, active token holders (public) and the Council administrated the network's upgrade\ndecisions. Whether the public or the council initiated the proposal, it would eventually have to go\nthrough a referendum to let all holders (weighted by stake and conviction) make the decision."),(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/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/learn-governance#technical-committee"},"Technical Committee")," and\nestablishing the broader ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-polkadot-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/learn-governance#summary"},"this page")," for a comparison with the structure of\nGovernance 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 to 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:"/docs/learn-polkadot-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 based on the\norigin's privileges. When both the approval and support criteria are satisfied for a specific period\n(called the confirmation period), the referendum passes and will be executed after the enactment\nperiod."),(0,r.kt)("p",null,"All referenda within each track and across tracks can be voted on simultaneously (assuming the\ntrack's maximum 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)("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/learn-governance#council"},"Council"),", the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn/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:"/docs/learn-polkadot-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/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/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 than 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/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:"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/learn-governance#council-referenda"},"council referenda"),"\nare no longer present in Polkadot OpenGov."),(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#public-referenda"},"this page")," for more information about public\nreferenda in Governance v1.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"In Polkadot OpenGov all referenda are public.")," Anyone can start a referendum at any time and do\nso as often as they wish. Previous 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 facilitate the flow and processing of the\nsubmitted referenda. The ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-technical-fellowship"},"Technical Fellowship")," has the\noption to ",(0,r.kt)("a",{parentName:"p",href:"#whitelisting"},"whitelist")," referenda 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/learn-governance#referenda-timeline"},"this page")," for more information about the\nvoting timetable 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, approved, and\nultimately enacted. Instead, the proposal will stay within a ",(0,r.kt)("strong",{parentName:"p"},"Lead-in Period")," until it fulfills\nthree 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)("admonition",{title:"Decision Deposit Amounts",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In Polkadot OpenGov, someone must submit the Decision Deposit for a referendum to enter its Decision\nPeriod. The number of tokens required for the Decision Deposit depends on the track\u2019s privilege\nlevel. The higher the privilege, the higher the deposit. For example, malicious referenda posted on\nthe Small Tipper track inflict low economic damage to the network. In contrast, malicious referenda\non the Root track can inflict more significant harm, such as changing the entire network's runtime.")),(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 voting can continue. 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 track. Root origin track has more extended periods than the other tracks. 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 to be on 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 a pipeline in which the proposal lives and proceeds,\nindependent of other origins' tracks. The proposer of the referenda now selects an appropriate\nOrigin 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 time interval during which a proposal's outcome can be decided."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Confirmation Period"),": the minimum amount of time the approval and support criteria must hold\nbefore the proposal is approved and moved to the enactment period. The confirmation period should\nstart before the end of the decision period.")),(0,r.kt)("admonition",{title:"Example Scenario of an Edge Case",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"A referendum may enter the confirmation period just one block before the decision period ends. In\nthis scenario, the referendum will pass if it satisfies approval and support thresholds for the\nminimum confirmation period (track-dependent).")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Voting Period"),": The period in which voting is allowed on a referendum, which includes\npreparation, decision, and confirmation periods."),(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:"voluntary-locking-conviction-voting"},"Voluntary Locking (Conviction Voting)"),(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)("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)("p",null,'Votes are always "counted" at the same time (at the end of the voting period), no matter how long\nthe 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 both Logan and Kevin vote with more\nDOT than Peter, the lock period for both of them\nis less than Peter\u2019s, leading to their voting power counting as less."),(0,r.kt)("admonition",{title:"Staked tokens can be used in governance",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"While the tokens are locked, you can still use them for voting and ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking"),".\nYou are only prohibited from transferring these tokens to another account. ",(0,r.kt)("strong",{parentName:"p"},"See the section about\n",(0,r.kt)("a",{parentName:"strong",href:"#voting-on-a-referendum"},"OpenGov locks"),", and learn more about locks on the\n",(0,r.kt)("a",{parentName:"strong",href:"/docs/learn-account-balances#locks"},"Balances 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,\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#adaptive-quorum-biasing"},"Adaptive quorum biasing")," used in Governance\nV1 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 ",(0,r.kt)("a",{parentName:"li",href:"#voluntary-locking"},"conviction"),"-weighted ",(0,r.kt)("em",{parentName:"li"},"aye")," votes\nagainst the conviction-weighted total of ",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"nay")," votes. The code implementation can be\nviewed\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/blob/f2fbba3be1d7deaf7cfc731cea00552c212ddfcf/substrate/frame/conviction-voting/src/types.rs#L77"},"here")),(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)("p",null,"For example, let us consider a hypothetical example where the total active issuance is\n100 DOT"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'An account A votes "Aye" with 10 DOT with 4x\nconviction'),(0,r.kt)("li",{parentName:"ul"},'An account B votes "Nay" with 5 DOT with 2x\nconviction'),(0,r.kt)("li",{parentName:"ul"},'An account C votes "Abstain" with 20 DOT. (no\nconviction can be applied to "Abstain" votes)')),(0,r.kt)("p",null,"In this scenario, only 35 DOT from the total\nactive issuance participated in voting on the referendum. Now, let us calculate the Approval and\nSupport values for that referendum."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Approval is calculated as (Aye') / (Aye' + Nay\u2019), where Aye' and Nay' are the votes after applying\nthe conviction multiplier. Hence, Approval = (10 x 4) / (10 x 4 + 5 x 2) = 40/50 which is 80%."),(0,r.kt)("li",{parentName:"ul"},'Support is calculated as (Aye + Abstain) / (total active issuance), where "Aye" and "Abstain" are\nthe votes without the conviction multiplier. Hence, Support = (10 + 20) / 100 which is 30%.')),(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 or 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 a 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 following:"),(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\napproval curve), the proposal only enters the confirmation period once the support threshold is\nalso reached (i.e., % current support is greater than the underlying support curve)."),(0,r.kt)("li",{parentName:"ul"},"If the referendum meets the approval and support thresholds for the duration of the confirmation\nperiod, the proposal will be approved and will be scheduled for enactment. Each track has a\ndefault minimum Enactment Period, and the approved referendum needs to wait till the end of it to\nbe executed. Powerful Tracks like ",(0,r.kt)("inlineCode",{parentName:"li"},"Root")," enforce a larger Enactment Period to ensure the network\nhas ample time to prepare for any changes the proposal may bring. The referendum proposers can\nalso set the enactment period higher than its default value."),(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 clock is reset. For example, suppose the confirmation period is 20 minutes,\nand a referendum enters it just for 5 min before exiting. The next time it enters, it must be\nconfirmed for 20 minutes (not 15 minutes)."),(0,r.kt)("li",{parentName:"ul"},"It is possible that a referendum meets the approval and support thresholds almost at the end of\nthe decision period. In this case, even though the decision period elapses, the referendum can\npass if it stays confirming for the duration of the track-specific confirmation period. It is\nrejected immediately if it exits the confirmation period after the decision period elapses."),(0,r.kt)("li",{parentName:"ul"},"The approval curve starts at 100% and gradually decreases to 50%, but never below 50%. Assuming\nall the active token supply has voted on a proposal, the conviction vote-weighted support should\nalways be above 50% to pass.")),(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"),". With proposals that use\nless privileged 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"),"."),(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/learn-governance#enactment"},"this page")," for more information about enactment in\nGovernance v1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, the proposer suggests the enactment period, but there is also a minimum set for\neach Origin Track. For example, ",(0,r.kt)("inlineCode",{parentName:"p"},"root")," Origin approvals require an extended period because of the\nimportance of the changes they bring to the network."),(0,r.kt)("h3",{id:"cancelling-killing--blacklisting"},"Cancelling, Killing & 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/learn-governance#cancelling-proposals"},"this page")," for more information about\ncancelling referenda in Governance v1.")),(0,r.kt)("p",null,"Polkadot OpenGov has two origins dedicated to rejecting ongoing referenda:\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#referendum-canceller"},"Referendum Canceller")," and\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#referendum-killer"},"Referendum Killer"),"."),(0,r.kt)("p",null,"Referendum Canceller aims to cancel an already ongoing referendum. When this origin cancels a\nreferendum, the Submission and Decision Deposit are refunded to their originators. An example of\nwhen a referendum might be considered to be canceled is if the originator has made some errors in\ncreating the preimage and did not necessarily do anything malicious. Cancellation has a lower\nDecision Period, and Approval and Support criteria are much easier to meet over time than most other\nOrigins. This is because the cancellation of a referendum usually comes with a sense of urgency."),(0,r.kt)("p",null,"Referendum Killer aims to instantly kill an ongoing referendum, slashing submission and decision\ndeposit (the account(s) that posted these deposits will lose those funds). This origin can be\nengaged if, for example, a malicious actor submits a referendum on the Root Track to set the code of\nthe chains' runtime to stop block production."),(0,r.kt)("p",null,"The Decision Deposit for the Referendum Killer track itself is high to prevent malicious actors from\nattempting to slash deposits of good referenda. A subsequent Referendum Killer can kill an existing\nReferendum Killer."),(0,r.kt)("p",null,"For more information about how to cancel or kill 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/learn-governance#blacklisting-proposals"},"the same as in Governance v1"),".")),(0,r.kt)("h2",{id:"voting-on-a-referendum"},"Voting on a Referendum"),(0,r.kt)("p",null,"If you are a voter, it means that you will vote with your\nDOT on each single 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"),". Voting with conviction is not possible when\nabstaining or splitting the votes."),(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)("p",null,"In general, you can remove your vote:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"While a referendum is ongoing (your vote does not count)"),(0,r.kt)("li",{parentName:"ul"},"After a referendum ended (your vote counts)")),(0,r.kt)("p",null,"If you voted without conviction, there's no conviction lock in either case. If you voted with\nconviction, you only get a conviction lock if the referendum ended and you voted with the winning\nside."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"voting-locks-1",src:n(71307).Z,width:"1626",height:"912"})),(0,r.kt)("admonition",{title:"Revoke your delegation on a track if you like to vote on your own",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you want to vote on a referendum on a specific track on your own, you will need to revoke any\nexisting ",(0,r.kt)("a",{parentName:"p",href:"#multirole-delegation"},"delegation")," on that track (i.e. undelegate). You can have a\nconviction lock on the track, but you cannot have an active delegation.")),(0,r.kt)("h3",{id:"voting-without-conviction"},"Voting Without Conviction"),(0,r.kt)("p",null,"If you vote without conviction, the referendum is ongoing, and you remove the vote, you can unlock\nyour tokens immediately. If the referendum ended, you can remove your vote and unlock your tokens\nimmediately, regardless of whether you are on the winning or losing side of the referendum. The\ngovernance app or interface you used for participating in Polkadot OpenGov should show an option to\nunlock your DOT."),(0,r.kt)("h3",{id:"voting-with-conviction"},"Voting with Conviction"),(0,r.kt)("p",null,"If you voted with conviction, the referendum is ongoing, and you removed the vote, you can unlock\nyour tokens immediately. If the referendum ended and you are on the losing side, you can remove your\nvote and unlock the tokens immediately. However, if you are on the winning side of the referendum,\nyou will get a conviction lock."),(0,r.kt)("p",null,"Conviction locks are calculated from the time the referendum ended but are applied when you remove\nthe vote."),(0,r.kt)("p",null,"For example, if you voted with conviction 1x with 10\nDOT, those 10\nDOT will be locked for 7 days after the\nreferendum ends (assuming you are on the winning side). If you remove the vote 3 days after the\nreferendum ended, your tokens will be locked for 4 more days. If you remove it on the 8th day after\nthe end of the referendum, the tokens can be unlocked right away (after you remove the vote). When\nyou remove the vote, the lock expiration block is calculated and added to the chain state."),(0,r.kt)("p",null,"If you voted on multiple referenda, and you are on the winning side of all those referenda, you will\nget multiple conviction voting locks for all those referenda. ",(0,r.kt)("strong",{parentName:"p"},"Locks do not stack"),"; the length and\nsize of the lock decides. This means that - assuming you used the same conviction on the same number\nof tokens - when the conviction lock on the latest referendum (see below, Ref 4) expires, you will\nbe able to unlock your tokens. In the meantime, the previous locks (1 to 3) might have expired, and\nyou can remove those locks (after removing the votes)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"voting-locks-2",src:n(96878).Z,width:"1626",height:"914"})),(0,r.kt)("p",null,"When you delegate your votes, the locking mechanism differs slightly. Please check the next section\non Multirole Delegation for more information."),(0,r.kt)("h2",{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/learn-governance#delegations"},"vote delegation feature from Governance v1")," where a\nvoter can delegate 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)("p",null,"Contrary to solo voting, with delegations, any conviction locks are applied as soon as you\nundelegate, regardless of whether your delegated votes were used for voting during that time. If\nyour delegated votes were used in any ongoing referenda, they would be removed from those referenda\nwhen you undelegate. Alternatively, after undelegating, you can delegate to another person or modify\nyour delegation. The only way to modify the delegation is to undelegate and delegate again. You do\nnot have to do this yourself; wallets and extensions should have implemented UI to modify delegation\nwithout you knowing this."),(0,r.kt)("p",null,"If you delegate without conviction and you undelegate, you can unlock your tokens immediately.\nAlternatively, after undelegating, you can always delegate to another person or modify your\ndelegation."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"delegation-locks-1",src:n(30074).Z,width:"1627",height:"913"})),(0,r.kt)("p",null,"In the case you delegated with 1x conviction, you undelegate and re-delegate with 2x conviction; the\ntime you undelegate again, you will have created two conviction locks: one for the 1x and one for\nthe 2x conviction. If you re-delegate immediately with 1x conviction and undelegate, you will get a\nsecond 1x conviction lock, but the 2x conviction lock will be the one deciding when your token can\nbe unlocked."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"delegation-locks-2",src:n(31191).Z,width:"1630",height:"912"})),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"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",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"Before delegating a specific track, you must remove any ",(0,r.kt)("a",{parentName:"strong",href:"#voting-on-a-referendum"},"vote")," on that\ntrack."))),(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)("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/polkadot-sdk/tree/master/substrate/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"),".")))}T.isMDXComponent=!0},30074:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/delegation-locks-1-c203e10abb20e87ec907c910c0221a8f.png"},31191:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/delegation-locks-2-db32ffe7daa316d3b96a6311cccdea85.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"},71307:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/voting-locks-1-23e3e07cb23d8a6b30e50be110a5119b.png"},96878:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/voting-locks-2-d8eaa8ef9a38f7460042b27fadd0d166.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/2f3b630e.9d927409.js b/assets/js/2f3b630e.9d927409.js deleted file mode 100644 index dca0f9d40365..000000000000 --- a/assets/js/2f3b630e.9d927409.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[9226],{35703:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294);const o=function(e){var t,n=e.message,o=(0,a.useState)(!0),i=o[0],r=o[1];return a.createElement(a.Fragment,null,i&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var a=n(74165),o=n(15861),i=n(67294),r=n(87152),l=n(9712),s=n(67425);function d(e,t,n){return p.apply(this,arguments)}function p(){return(p=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var i,s,d,p,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 d=new r.U(i),e.next=21,l.G.create({provider:d});case 21:p=e.sent,(c=n.split(".")).forEach((function(e){e in p&&(p=p[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return s=p.toString(),e.abrupt("break",35);case 29:return e.next=31,p();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 u=function(e){var t=e.network,n=e.path,r=e.defaultValue,l=e.filter,s=void 0===l?void 0:l,p=(0,i.useState)(""),u=p[0],m=p[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://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusama-people":e="wss://kusama-people-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,d(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)}}}),[]),u}},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:()=>y,contentTitle:()=>f,default:()=>T,frontMatter:()=>k,metadata:()=>v,toc:()=>b});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"})))),d=["p0","p1","p2","p4","p8","p16","p32"],p={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 u(e){d.forEach((function(t){var n=document.getElementById(t);"polkadot"===e?n.innerText=p[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?u("polkadot"):"Governance V1 \xb7 Guide"===e||"Introduction to Polkadot OpenGov \xb7 Guide"===e?u("kusama"):console.log("Unknown wiki/guide type")}),[]),s};var h=n(35703),g=["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"},f=void 0,v={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:"Leemo",lastUpdatedAt:1719231753,formattedLastUpdatedAt:"Jun 24, 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"}},y={},b=[{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:"Voluntary Locking (Conviction Voting)",id:"voluntary-locking-conviction-voting",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:"Voting Without Conviction",id:"voting-without-conviction",level:3},{value:"Voting with Conviction",id:"voting-with-conviction",level:3},{value:"Multirole Delegation",id:"multirole-delegation",level:2},{value:"Decision Deposit Amounts",id:"decision-deposit-amounts",level:2},{value:"Cancelling & Killing Referenda",id:"cancelling--killing-referenda",level:2},{value:"Resources",id:"resources",level:2}],w={toc:b},N="wrapper";function T(e){var t=e.components,i=(0,o.Z)(e,g);return(0,r.kt)(N,(0,a.Z)({},w,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(h.Z,{message:"Before voting or delegating in Polkadot OpenGov, get familiar with [balances and locks](./learn-account-balances#locks).",mdxType:"MessageBox"}),(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/learn-governance"},"Governance V1"),"). Governance is a constantly evolving protocol at\nthis stage in its lifecycle."),(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)("p",null,"Polkadot uses a sophisticated governance\nmechanism that allows it to evolve gracefully overtime at the ultimate behest of its assembled\nstakeholders. The goal is to ensure that most of the stake can always command the network."),(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/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/learn-governance#technical-committee"},"Technical Committee"),": A technocratic\ncommittee to manage upgrade timelines."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn/learn-governance#council"},"Council"),': An approval-voted, elected executive\n"government" to manage 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/learn-governance#alternating-voting-timetable"},"alternating voting timetable")," allowed\nto vote either 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\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"Governance v1")," to better understand the need for and the direction\nof Polkadot OpenGov."),(0,r.kt)("h2",{id:"summary"},"Summary"),(0,r.kt)("p",null,"In Governance v1, active token holders (public) and the Council administrated the network's upgrade\ndecisions. Whether the public or the council initiated the proposal, it would eventually have to go\nthrough a referendum to let all holders (weighted by stake and conviction) make the decision."),(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/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/learn-governance#technical-committee"},"Technical Committee")," and\nestablishing the broader ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-polkadot-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/learn-governance#summary"},"this page")," for a comparison with the structure of\nGovernance 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 to 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:"/docs/learn-polkadot-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 based on the\norigin's privileges. When both the approval and support criteria are satisfied for a specific period\n(called the confirmation period), the referendum passes and will be executed after the enactment\nperiod."),(0,r.kt)("p",null,"All referenda within each track and across tracks can be voted on simultaneously (assuming the\ntrack's maximum 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)("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/learn-governance#council"},"Council"),", the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn/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:"/docs/learn-polkadot-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/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/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 than 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/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/learn-governance#proposals"},"this page")," for more information about starting\nreferenda in Governance 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 facilitate the flow and processing of the\nsubmitted referenda."),(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/learn-governance#cancelling-proposals"},"this page")," for more information about\ncancelling referenda 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/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/learn-governance#council-referenda"},"council referenda"),"\nare no longer present in Polkadot OpenGov."),(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#public-referenda"},"this page")," for more information about public\nreferenda in 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:"/docs/learn-polkadot-technical-fellowship"},"Technical Fellowship")," has the option to\n",(0,r.kt)("a",{parentName:"p",href:"#whitelisting"},"whitelist")," referenda 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/learn-governance#referenda-timeline"},"this page")," for more information about the\nvoting timetable 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, approved, and\nultimately enacted. Instead, the proposal will stay within a ",(0,r.kt)("strong",{parentName:"p"},"Lead-in Period")," until it fulfills\nthree 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 voting can continue. 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 track. Root origin track has more extended periods than the other tracks. 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 to be on 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 a pipeline in which the proposal lives and proceeds,\nindependent of other origins' tracks. The proposer of the referenda now selects an appropriate\nOrigin 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 time interval during which a proposal's outcome can be decided."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Confirmation Period"),": the minimum amount of time the approval and support criteria must hold\nbefore the proposal is approved and moved to the enactment period. The confirmation period should\nstart before the end of the decision period.")),(0,r.kt)("admonition",{title:"Example Scenario of an Edge Case",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"A referendum may enter the confirmation period just one block before the decision period ends. In\nthis scenario, the referendum will pass if it satisfies approval and support thresholds for the\nminimum confirmation period (track-dependent).")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Voting Period"),": The period in which voting is allowed on a referendum, which includes\npreparation, decision, and confirmation periods."),(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:"voluntary-locking-conviction-voting"},"Voluntary Locking (Conviction Voting)"),(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)("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)("p",null,'Votes are always "counted" at the same time (at the end of the voting period), no matter how long\nthe 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 both Logan and Kevin vote with more\nDOT than Peter, the lock period for both of them\nis less than Peter\u2019s, leading to their voting power counting as less."),(0,r.kt)("admonition",{title:"Staked tokens can be used in governance",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"While the tokens are locked, you can still use them for voting and ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking"),".\nYou are only prohibited from transferring these tokens to another account. ",(0,r.kt)("strong",{parentName:"p"},"See the section about\n",(0,r.kt)("a",{parentName:"strong",href:"#voting-on-a-referendum"},"OpenGov locks"),", and learn more about locks on the\n",(0,r.kt)("a",{parentName:"strong",href:"/docs/learn-account-balances#locks"},"Balances 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,\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#adaptive-quorum-biasing"},"Adaptive quorum biasing")," used in Governance\nV1 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 ",(0,r.kt)("a",{parentName:"li",href:"#voluntary-locking"},"conviction"),"-weighted ",(0,r.kt)("em",{parentName:"li"},"aye")," votes\nagainst the conviction-weighted total of ",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"nay")," votes. The code implementation can be\nviewed\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/blob/f2fbba3be1d7deaf7cfc731cea00552c212ddfcf/substrate/frame/conviction-voting/src/types.rs#L77"},"here")),(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)("p",null,"For example, let us consider a hypothetical example where the total active issuance is\n100 DOT"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'An account A votes "Aye" with 10 DOT with 4x\nconviction'),(0,r.kt)("li",{parentName:"ul"},'An account B votes "Nay" with 5 DOT with 2x\nconviction'),(0,r.kt)("li",{parentName:"ul"},'An account C votes "Abstain" with 20 DOT. (no\nconviction can be applied to "Abstain" votes)')),(0,r.kt)("p",null,"In this scenario, only 35 DOT from the total\nactive issuance participated in voting on the referendum. Now, let us calculate the Approval and\nSupport values for that referendum."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Approval is calculated as (Aye') / (Aye' + Nay\u2019), where Aye' and Nay' are the votes after applying\nthe conviction multiplier. Hence, Approval = (10 x 4) / (10 x 4 + 5 x 2) = 40/50 which is 80%."),(0,r.kt)("li",{parentName:"ul"},'Support is calculated as (Aye + Abstain) / (total active issuance), where "Aye" and "Abstain" are\nthe votes without the conviction multiplier. Hence, Support = (10 + 20) / 100 which is 30%.')),(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 or 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 a 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 following:"),(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\napproval curve), the proposal only enters the confirmation period once the support threshold is\nalso reached (i.e., % current support is greater than the underlying support curve)."),(0,r.kt)("li",{parentName:"ul"},"If the referendum meets the approval and support thresholds for the duration of the confirmation\nperiod, the proposal will be approved and will be scheduled for enactment. Each track has a\ndefault minimum Enactment Period, and the approved referendum needs to wait till the end of it to\nbe executed. Powerful Tracks like ",(0,r.kt)("inlineCode",{parentName:"li"},"Root")," enforce a larger Enactment Period to ensure the network\nhas ample time to prepare for any changes the proposal may bring. The referendum proposers can\nalso set the enactment period higher than its default value."),(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 clock is reset. For example, suppose the confirmation period is 20 minutes,\nand a referendum enters it just for 5 min before exiting. The next time it enters, it must be\nconfirmed for 20 minutes (not 15 minutes)."),(0,r.kt)("li",{parentName:"ul"},"It is possible that a referendum meets the approval and support thresholds almost at the end of\nthe decision period. In this case, even though the decision period elapses, the referendum can\npass if it stays confirming for the duration of the track-specific confirmation period. It is\nrejected immediately if it exits the confirmation period after the decision period elapses."),(0,r.kt)("li",{parentName:"ul"},"The approval curve starts at 100% and gradually decreases to 50%, but never below 50%. Assuming\nall the active token supply has voted on a proposal, the conviction vote-weighted support should\nalways be above 50% to pass.")),(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"),". With proposals that use\nless privileged 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"),"."),(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/learn-governance#enactment"},"this page")," for more information about enactment in\nGovernance v1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, the proposer suggests the enactment period, but there is also a minimum set for\neach Origin Track. For example, ",(0,r.kt)("inlineCode",{parentName:"p"},"root")," Origin approvals require an 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,"If you are a voter, it means that you will vote with your\nDOT on each single 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"),". Voting with conviction is not possible when\nabstaining or splitting the votes."),(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)("p",null,"In general, you can remove your vote:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"While a referendum is ongoing (your vote does not count)"),(0,r.kt)("li",{parentName:"ul"},"After a referendum ended (your vote counts)")),(0,r.kt)("p",null,"If you voted without conviction, there's no conviction lock in either case. If you voted with\nconviction, you only get a conviction lock if the referendum ended and you voted with the winning\nside."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"voting-locks-1",src:n(71307).Z,width:"1626",height:"912"})),(0,r.kt)("admonition",{title:"Revoke your delegation on a track if you like to vote on your own",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you want to vote on a referendum on a specific track on your own, you will need to revoke any\nexisting ",(0,r.kt)("a",{parentName:"p",href:"#multirole-delegation"},"delegation")," on that track (i.e. undelegate). You can have a\nconviction lock on the track, but you cannot have an active delegation.")),(0,r.kt)("h3",{id:"voting-without-conviction"},"Voting Without Conviction"),(0,r.kt)("p",null,"If you vote without conviction, the referendum is ongoing, and you remove the vote, you can unlock\nyour tokens immediately. If the referendum ended, you can remove your vote and unlock your tokens\nimmediately, regardless of whether you are on the winning or losing side of the referendum. The\ngovernance app or interface you used for participating in Polkadot OpenGov should show an option to\nunlock your DOT."),(0,r.kt)("h3",{id:"voting-with-conviction"},"Voting with Conviction"),(0,r.kt)("p",null,"If you voted with conviction, the referendum is ongoing, and you removed the vote, you can unlock\nyour tokens immediately. If the referendum ended and you are on the losing side, you can remove your\nvote and unlock the tokens immediately. However, if you are on the winning side of the referendum,\nyou will get a conviction lock."),(0,r.kt)("p",null,"Conviction locks are calculated from the time the referendum ended but are applied when you remove\nthe vote."),(0,r.kt)("p",null,"For example, if you voted with conviction 1x with 10\nDOT, those 10\nDOT will be locked for 7 days after the\nreferendum ends (assuming you are on the winning side). If you remove the vote 3 days after the\nreferendum ended, your tokens will be locked for 4 more days. If you remove it on the 8th day after\nthe end of the referendum, the tokens can be unlocked right away (after you remove the vote). When\nyou remove the vote, the lock expiration block is calculated and added to the chain state."),(0,r.kt)("p",null,"If you voted on multiple referenda, and you are on the winning side of all those referenda, you will\nget multiple conviction voting locks for all those referenda. ",(0,r.kt)("strong",{parentName:"p"},"Locks do not stack"),"; the length and\nsize of the lock decides. This means that - assuming you used the same conviction on the same number\nof tokens - when the conviction lock on the latest referendum (see below, Ref 4) expires, you will\nbe able to unlock your tokens. In the meantime, the previous locks (1 to 3) might have expired, and\nyou can remove those locks (after removing the votes)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"voting-locks-2",src:n(96878).Z,width:"1626",height:"914"})),(0,r.kt)("p",null,"When you delegate your votes, the locking mechanism differs slightly. Please check the next section\non Multirole Delegation for more information."),(0,r.kt)("h2",{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/learn-governance#delegations"},"vote delegation feature from Governance v1")," where a\nvoter can delegate 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)("p",null,"Contrary to solo voting, with delegations, any conviction locks are applied as soon as you\nundelegate, regardless of whether your delegated votes were used for voting during that time. If\nyour delegated votes were used in any ongoing referenda, they would be removed from those referenda\nwhen you undelegate. Alternatively, after undelegating, you can delegate to another person or modify\nyour delegation. The only way to modify the delegation is to undelegate and delegate again. You do\nnot have to do this yourself; wallets and extensions should have implemented UI to modify delegation\nwithout you knowing this."),(0,r.kt)("p",null,"If you delegate without conviction and you undelegate, you can unlock your tokens immediately.\nAlternatively, after undelegating, you can always delegate to another person or modify your\ndelegation."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"delegation-locks-1",src:n(30074).Z,width:"1627",height:"913"})),(0,r.kt)("p",null,"In the case you delegated with 1x conviction, you undelegate and re-delegate with 2x conviction; the\ntime you undelegate again, you will have created two conviction locks: one for the 1x and one for\nthe 2x conviction. If you re-delegate immediately with 1x conviction and undelegate, you will get a\nsecond 1x conviction lock, but the 2x conviction lock will be the one deciding when your token can\nbe unlocked."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"delegation-locks-2",src:n(31191).Z,width:"1630",height:"912"})),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"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",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"Before delegating a specific track, you must remove any ",(0,r.kt)("a",{parentName:"strong",href:"#voting-on-a-referendum"},"vote")," on that\ntrack."))),(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)("h2",{id:"decision-deposit-amounts"},"Decision Deposit Amounts"),(0,r.kt)("p",null,"In Polkadot OpenGov, someone must submit the Decision Deposit for a referendum to enter its Decision Period. The number of tokens required for the Decision Deposit depends on the track\u2019s privilege level. The higher the privilege, the higher the deposit. For example, malicious referenda posted on the Small Tipper track inflict low economic damage to the network. In contrast, malicious referenda on the Root track can inflict more significant harm, such as changing the entire network's runtime."),(0,r.kt)("h2",{id:"cancelling--killing-referenda"},"Cancelling & Killing Referenda"),(0,r.kt)("p",null,"Polkadot OpenGov has two origins dedicated to rejecting ongoing referenda: Referendum Canceller and Referendum Killer."),(0,r.kt)("p",null,"Referendum Canceller aims to cancel an already ongoing referendum. When this origin cancels a referendum, the Submission and Decision Deposit are refunded to their originators. An example of when a referendum might be considered to be canceled is if the originator has made some errors in creating the preimage and did not necessarily do anything malicious. Cancellation has a lower Decision Period, and Approval and Support criteria are much easier to meet over time than most other Origins. This is because the cancellation of a referendum usually comes with a sense of urgency."),(0,r.kt)("p",null,"Referendum Killer aims to instantly kill an ongoing referendum, slashing submission and decision deposit (the account(s) that posted these deposits will lose those funds). This origin can be engaged if, for example, a malicious actor submits a referendum on the Root Track to set the code of the chains' runtime to stop block production."),(0,r.kt)("p",null,"The Decision Deposit for the Referendum Killer track itself is high to prevent malicious actors from attempting to slash deposits of good referenda. A subsequent Referendum Killer can kill an existing Referendum Killer"),(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/polkadot-sdk/tree/master/substrate/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"),".")))}T.isMDXComponent=!0},30074:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/delegation-locks-1-c203e10abb20e87ec907c910c0221a8f.png"},31191:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/delegation-locks-2-db32ffe7daa316d3b96a6311cccdea85.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"},71307:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/voting-locks-1-23e3e07cb23d8a6b30e50be110a5119b.png"},96878:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/voting-locks-2-d8eaa8ef9a38f7460042b27fadd0d166.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/ad762f86.4c1e9475.js b/assets/js/ad762f86.4c1e9475.js deleted file mode 100644 index c2737027aaf3..000000000000 --- a/assets/js/ad762f86.4c1e9475.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[7940],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>u});var n=a(74165),o=a(15861),r=a(67294),i=a(87152),s=a(9712),l=a(67425);function d(e,t,a){return c.apply(this,arguments)}function c(){return(c=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var r,l,d,c,p;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 d=new i.U(r),e.next=21,s.G.create({provider:d});case 21:c=e.sent,(p=a.split(".")).forEach((function(e){e in c&&(c=c[e])})),e.t1=p[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=c.toString(),e.abrupt("break",35);case 29:return e.next=31,c();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,a,n){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,n);break;case"precise":(0,l.Precise)(e,a,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,a);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,a=e.path,i=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,c=(0,r.useState)(""),u=c[0],m=c[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?p(i.toString(),l,t,m):m(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://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusama-people":e="wss://kusama-people-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,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,d(t,a,m);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?p(o,l,t,m):m(o);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",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"}};e.exports={HumanReadable:function(e,i,s){var l=void 0;if(i===t||i===o)l=3;else{if(i!==a&&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,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===o)s=1;else{if(i!==a&&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())}}},79569:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=a(47940),s=["components"],l={id:"learn-account-advanced",title:"Polkadot Accounts In-Depth",sidebar_label:"Accounts",description:"Advanced Concepts about Polkadot's Accounts.",keywords:["account","polkadot account","polkadotjs","indices","identity","reaping","ENS","domain","ETH"],slug:"../learn-account-advanced"},d=void 0,c={unversionedId:"learn/learn-account-advanced",id:"learn/learn-account-advanced",title:"Polkadot Accounts In-Depth",description:"Advanced Concepts about Polkadot's Accounts.",source:"@site/../docs/learn/learn-account-advanced.md",sourceDirName:"learn",slug:"/learn-account-advanced",permalink:"/docs/learn-account-advanced",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-account-advanced.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1712558849,formattedLastUpdatedAt:"Apr 8, 2024",frontMatter:{id:"learn-account-advanced",title:"Polkadot Accounts In-Depth",sidebar_label:"Accounts",description:"Advanced Concepts about Polkadot's Accounts.",keywords:["account","polkadot account","polkadotjs","indices","identity","reaping","ENS","domain","ETH"],slug:"../learn-account-advanced"},sidebar:"docs",previous:{title:"XCM Instructions",permalink:"/docs/learn-xcm-instructions"},next:{title:"Advanced Staking Concepts",permalink:"/docs/learn-staking-advanced"}},p={},u=[{value:"Address Format",id:"address-format",level:2},{value:"For the Curious: How Prefixes Work",id:"for-the-curious-how-prefixes-work",level:3},{value:"Address Conversion Tools",id:"address-conversion-tools",level:2},{value:"How to Verify a Public Key's Associated Address",id:"how-to-verify-a-public-keys-associated-address",level:3},{value:"Using Subkey to Retrieve Public Key from SS58 Address",id:"using-subkey-to-retrieve-public-key-from-ss58-address",level:4},{value:"Address Verification",id:"address-verification",level:4},{value:"Consider the following example:",id:"consider-the-following-example",level:5},{value:"Portability",id:"portability",level:2},{value:"Derivation Paths",id:"derivation-paths",level:2},{value:"Soft and Hard Derivation",id:"soft-and-hard-derivation",level:3},{value:"Password Derivation",id:"password-derivation",level:3},{value:"Account Derivation on Ledger Live",id:"account-derivation-on-ledger-live",level:3},{value:"Account Derivation on Subkey and Polkadot Vault",id:"account-derivation-on-subkey-and-polkadot-vault",level:3},{value:"System Accounts",id:"system-accounts",level:2},{value:"Indices",id:"indices",level:2},{value:"Creating Accounts with Subkey",id:"creating-accounts-with-subkey",level:2},{value:"Using ENS with DOT/KSM accounts",id:"using-ens-with-dotksm-accounts",level:2},{value:"Adding via the UI",id:"adding-via-the-ui",level:3},{value:"Wallet Support",id:"wallet-support",level:3},{value:"Relevant links",id:"relevant-links",level:3},{value:"Transferring Polkadot-JS Apps Accounts/Addresses From One Computer to Another",id:"transferring-polkadot-js-apps-accountsaddresses-from-one-computer-to-another",level:2}],m={toc:u},h="wrapper";function k(e){var t=e.components,l=(0,o.Z)(e,s);return(0,r.kt)(h,(0,n.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"address-format"},"Address Format"),(0,r.kt)("p",null,"The address format used in Substrate-based chains is SS58. SS58 is a modification of Base-58-check\nfrom Bitcoin with some minor changes. Notably, the format contains an ",(0,r.kt)("em",{parentName:"p"},"address type")," prefix that\nidentifies an address belonging to a specific network."),(0,r.kt)("p",null,"For example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Polkadot addresses ",(0,r.kt)("strong",{parentName:"li"},"always start with")," the number ",(0,r.kt)("strong",{parentName:"li"},"1"),"."),(0,r.kt)("li",{parentName:"ul"},"Kusama addresses always start with a capital letter, such as ",(0,r.kt)("strong",{parentName:"li"},"C, D, F, G, H, J"),"."),(0,r.kt)("li",{parentName:"ul"},"Generic Substrate addresses ",(0,r.kt)("strong",{parentName:"li"},"always start with")," the number ",(0,r.kt)("strong",{parentName:"li"},"5"),".")),(0,r.kt)("p",null,"These prefixes, including how to validate addresses, are embedded in the Substrate SS58 format.\nNever use regular expressions for address validation."),(0,r.kt)("p",null,"It's important to understand that different network formats are ",(0,r.kt)("strong",{parentName:"p"},"merely other representations of\nthe same public key in a private-public keypair")," generated by an address generation tool. As a\nresult, the addresses across Substrate-based chains are compatible if the format is converted\ncorrectly."),(0,r.kt)("p",null,"As of Runtime 28, the default ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts##address-format"},"address format")," is the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/primitives/runtime/src/multiaddress.rs"},(0,r.kt)("inlineCode",{parentName:"a"},"MultiAddress")),"\ntype."),(0,r.kt)("p",null,"This ",(0,r.kt)("inlineCode",{parentName:"p"},"enum")," is a multi-format address wrapper for on-chain accounts and allows us to describe\nPolkadot's default address format to represent many different address types. This includes ",(0,r.kt)("strong",{parentName:"p"},"20\nbyte"),", ",(0,r.kt)("strong",{parentName:"p"},"32 byte"),", and ",(0,r.kt)("strong",{parentName:"p"},"arbitrary raw byte")," variants. It also enhances the original\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#indices"},(0,r.kt)("inlineCode",{parentName:"a"},"indices"))," lookup."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Many wallets allow you to convert between formats. Stand-alone tools exist as well; you can find\nthem in the ",(0,r.kt)("a",{parentName:"p",href:"#address-conversion-tools"},"address conversion tools")," section.")),(0,r.kt)("h3",{id:"for-the-curious-how-prefixes-work"},"For the Curious: How Prefixes Work"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json"},"SS58 registry")," states\nthat:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Polkadot has an address type of ",(0,r.kt)("inlineCode",{parentName:"li"},"00000000b")," (",(0,r.kt)("inlineCode",{parentName:"li"},"0")," in decimal)."),(0,r.kt)("li",{parentName:"ul"},"Kusama (Polkadot Canary) has an address type of ",(0,r.kt)("inlineCode",{parentName:"li"},"00000010b")," (",(0,r.kt)("inlineCode",{parentName:"li"},"2")," in decimal)."),(0,r.kt)("li",{parentName:"ul"},"Generic Substrate has ",(0,r.kt)("inlineCode",{parentName:"li"},"00101010b")," as the address type (",(0,r.kt)("inlineCode",{parentName:"li"},"42")," in decimal).")),(0,r.kt)("p",null,"Because the ",(0,r.kt)("inlineCode",{parentName:"p"},"Base58-check")," alphabet has no number 0, the lowest value is indeed 1. So ",(0,r.kt)("inlineCode",{parentName:"p"},"00000000b")," is\n1 in Base58-check. If we try to\n",(0,r.kt)("a",{parentName:"p",href:"https://www.better-converter.com/Encoders-Decoders/Base58Check-to-Hexadecimal-Decoder"},"decode")," a\nPolkadot address like ",(0,r.kt)("inlineCode",{parentName:"p"},"1FRMM8PEiWXYax7rpS6X4XZX1aAAxSWx1CrKTyrVYhV24fg"),", the result is\n",(0,r.kt)("inlineCode",{parentName:"p"},"000aff6865635ae11013a83835c019d44ec3f865145943f487ae82a8e7bed3a66b29d7"),". The first byte is ",(0,r.kt)("inlineCode",{parentName:"p"},"00"),",\nwhich is indeed ",(0,r.kt)("inlineCode",{parentName:"p"},"00000000")," in binary and ",(0,r.kt)("inlineCode",{parentName:"p"},"0")," in decimal and thus matches the address type of\nPolkadot."),(0,r.kt)("p",null,"Let's take a look at Substrate addresses. If we decode\n",(0,r.kt)("inlineCode",{parentName:"p"},"5CK8D1sKNwF473wbuBP6NuhQfPaWUetNsWUNAAzVwTfxqjfr"),", we get\n",(0,r.kt)("inlineCode",{parentName:"p"},"2a0aff6865635ae11013a83835c019d44ec3f865145943f487ae82a8e7bed3a66b77e5"),". The first byte is ",(0,r.kt)("inlineCode",{parentName:"p"},"2a"),"\nwhich when\n",(0,r.kt)("a",{parentName:"p",href:"https://www.rapidtables.com/convert/number/hex-to-decimal.html"},"converted from hex to decimal"),"\nis 42. 42 is ",(0,r.kt)("inlineCode",{parentName:"p"},"00101010")," in binary, just as the SS58 document states."),(0,r.kt)("p",null,"Finally, let's look at Kusama addresses. Decoding ",(0,r.kt)("inlineCode",{parentName:"p"},"CpjsLDC1JFyrhm3ftC9Gs4QoyrkHKhZKtK7YqGTRFtTafgp"),"\ngives us ",(0,r.kt)("inlineCode",{parentName:"p"},"020aff6865635ae11013a83835c019d44ec3f865145943f487ae82a8e7bed3a66b0985")," with the first\nbyte being ",(0,r.kt)("inlineCode",{parentName:"p"},"02"),", just as specified. If we try a Kusama address that starts with a completely\ndifferent letter, like ",(0,r.kt)("inlineCode",{parentName:"p"},"J4iggBtsWsb61RemU2TDWDXTNHqHNfBSAkGvVZBtn1AJV1a"),", we still get ",(0,r.kt)("inlineCode",{parentName:"p"},"02")," as the\nfirst byte: ",(0,r.kt)("inlineCode",{parentName:"p"},"02f2d606a67f58fa0b3ad2b556195a0ef905676efd4e3ec62f8fa1b8461355f1142509"),". It seems\ncounterintuitive that some addresses always have the same prefix and others like Kusama can vary\nwildly, but it's just a quirk of Base58-check encoding."),(0,r.kt)("h2",{id:"address-conversion-tools"},"Address Conversion Tools"),(0,r.kt)("p",null,"You can use the tools below to convert any SS58 address for any network for use on different\nnetworks"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.subscan.io/tools/ss58_transform"},"handy subscan tool")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot-address-convertor.netlify.app/"},"simple address converter"))),(0,r.kt)("h3",{id:"how-to-verify-a-public-keys-associated-address"},"How to Verify a Public Key's Associated Address"),(0,r.kt)("p",null,"You can verify your public key's associated address through a series of inspection steps, where the\nkey is a base-16 (hexadecimal) address."),(0,r.kt)("h4",{id:"using-subkey-to-retrieve-public-key-from-ss58-address"},"Using Subkey to Retrieve Public Key from SS58 Address"),(0,r.kt)("p",null,"This is to showcase that the ",(0,r.kt)("strong",{parentName:"p"},'SS58 address is based on the public key (aka "Account ID")')),(0,r.kt)("p",null,"The Subkey Tool's The\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/#inspecting-keys"},"Inspecting Keys"),"\nsection explains how to use the ",(0,r.kt)("inlineCode",{parentName:"p"},"inspect")," command to recalculate your key pair's public key and\naddress."),(0,r.kt)("p",null,"Start by inspecting your account's Polkadot address by running the inspect command against your\naccount's address:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ subkey inspect 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n\nPublic Key URI `1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F` is account:\n Network ID/version: polkadot\n Public key (hex): 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Account ID: 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n SS58 Address: 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n")),(0,r.kt)("p",null,'Take note of the hexadecimal string for "Public key (hex)". This is your account\'s public key.'),(0,r.kt)("p",null,"Running the ",(0,r.kt)("inlineCode",{parentName:"p"},"inspect")," command on your public key along with the ",(0,r.kt)("inlineCode",{parentName:"p"},"--public")," parameter the SS58\naddress for the default network (substrate) is returned."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ subkey inspect --public 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n\nNetwork ID/version: substrate\n Public key (hex): 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Account ID: 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Public key (SS58): 5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp\n SS58 Address: 5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp\n")),(0,r.kt)("p",null,"Using the ",(0,r.kt)("inlineCode",{parentName:"p"},"--network")," flag, you can define the network that you would like to inspect, where the\nSS58 address will be based on that network. Now, running the ",(0,r.kt)("inlineCode",{parentName:"p"},"inspect")," command with\n",(0,r.kt)("inlineCode",{parentName:"p"},"--network polkadot")," return your original Polkadot address, thus verifying the public key."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ subkey inspect --network polkadot 5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp\n\nPublic Key URI `5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp` is account:\n Network ID/version: polkadot\n Public key (hex): 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Account ID: 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Public key (SS58): 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n SS58 Address: 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n")),(0,r.kt)("p",null,"You will notice that the Subkey Tool recognizes the correct address network and returns the\nassociated public key. The public key is returned as a hexadecimal string (i.e. prefixed with\n",(0,r.kt)("strong",{parentName:"p"},'"0x"'),"). ",(0,r.kt)("strong",{parentName:"p"},"For both SS58 addresses, the same public key is returned.")),(0,r.kt)("h4",{id:"address-verification"},"Address Verification"),(0,r.kt)("h5",{id:"consider-the-following-example"},"Consider the following example:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"19",src:a(2080).Z,width:"739",height:"543"})),(0,r.kt)("p",null,"If you are comfortable enough to distinguish between each account parameter, you can prefix the\npublic-key string with ",(0,r.kt)("strong",{parentName:"p"},'"0x"')," on your own:"),(0,r.kt)("p",null,"From:\n",(0,r.kt)("inlineCode",{parentName:"p"},"Pay DOTs to the Polkadot account:192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce"),',\nwe prefix the address by "0x" ->\n',(0,r.kt)("inlineCode",{parentName:"p"},"0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce"),"."),(0,r.kt)("p",null,"Using the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/tools/ss58_transform"},"handy subscan tool"),', you can verify\nboth address associations to your public key. Copy your public key into the "Input Account or Public\nKey" textbox and click "Transform" at the bottom. On the right-hand side, the addresses for Polkadot\nand Substrate that are returned based on your public key should match the ones you inspected.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"20",src:a(81779).Z,width:"1505",height:"759"})),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"You may have to scroll down to the bottom of the menu to find the Substrate address based on the\nmenu listings. You will notice that many networks that also use the same Substrate address.")),(0,r.kt)("p",null,"You can verify your public key verification by recalling that Polkadot addresses start with a '1',\nwhereas Substrate addresses generally start with a '5' (Kusama addresses start with a capital\nletter). See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#address-format"},"Addresses")," for more details."),(0,r.kt)("p",null,"Furthermore, the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/utility-scripts"},"Utility Scripts")," can be referenced for how\nthe verification is performed:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/utility-scripts/blob/master/src/misc/pubkeyToAddress.js"},"pubkeyToAddress.js"),"\ndemonstrates how a single public key interprets a Polkadot, Substrate, or Kusama address."),(0,r.kt)("h2",{id:"portability"},"Portability"),(0,r.kt)("p",null,"Portability is the ability to use a mnemonic phrase or seed across multiple wallets."),(0,r.kt)("p",null,"Most wallets generate a mnemonic phrase for users to back up their wallets and generate a private\nkey from the mnemonic. Not all wallets use the same algorithm to convert from mnemonic phrase to\nprivate key, which affects the ability to use the same mnemonic phrase in multiple wallets. Wallets\nthat use different measures will arrive at a different set of addresses from the exact mnemonic\nphrase."),(0,r.kt)("admonition",{title:"Not all wallets use the same algorithm to convert from mnemonic phrase to private key",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey")," and Polkadot-JS based\nwallets use the BIP39 dictionary for mnemonic generation, but use the entropy byte array to generate\nthe private key, while full BIP39 wallets (like Ledger) use 2048 rounds of PBKDF2 on the mnemonic.\nThe same mnemonic may generate different private keys on other wallets due to the various\ncryptographic algorithms used. See\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-bip39"},"Substrate BIP39 Repo")," for more information.")),(0,r.kt)("p",null,"Portability depends on several factors:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Derivation path"),(0,r.kt)("li",{parentName:"ul"},"Mnemonic format"),(0,r.kt)("li",{parentName:"ul"},"Seed derivation"),(0,r.kt)("li",{parentName:"ul"},"Signature scheme")),(0,r.kt)("p",null,"To use the exact mnemonic across multiple wallets, ensure they follow compatible methods for\ngenerating keys and signing messages. If you are still looking for understandable documentation,\ncontact the project maintainers."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"}),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mnemonic Format"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Derivation Path"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Seed Derivation"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Signature Support"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Polkadot{.js} Extension"),(0,r.kt)("td",{parentName:"tr",align:"center"},"Standard"),(0,r.kt)("td",{parentName:"tr",align:"center"},"User-Defined"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32"),(0,r.kt)("td",{parentName:"tr",align:"center"},"sr25519")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Polkadot-JS Apps"),(0,r.kt)("td",{parentName:"tr",align:"center"},"Standard","*"),(0,r.kt)("td",{parentName:"tr",align:"center"},"User-Defined"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32"),(0,r.kt)("td",{parentName:"tr",align:"center"},"sr25519, ed25519, secp256k")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Ledger"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP39"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP44","\u2020"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32","\u2021"),(0,r.kt)("td",{parentName:"tr",align:"center"},"ed25519","\xa7")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Subkey"),(0,r.kt)("td",{parentName:"tr",align:"center"},"Standard","*"),(0,r.kt)("td",{parentName:"tr",align:"center"},"User-Defined"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32"),(0,r.kt)("td",{parentName:"tr",align:"center"},"sr25519, ed25519, secp256k1")))),(0,r.kt)("p",null,"*"," Ed25519 keys have ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-bip39"},"limited compatibility")," with\nBIP39."),(0,r.kt)("p",null,"\u2020"," ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/satoshilabs/slips/blob/master/slip-0044.md"},"BIP44 Registry")),(0,r.kt)("p",null,"\u2021"," Ed25519 and BIP32 based on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/LedgerHQ/orakolo/blob/master/papers/Ed25519_BIP%20Final.pdf"},"Khovratovich")),(0,r.kt)("p",null,"\xa7"," Sr25519 planned"),(0,r.kt)("h2",{id:"derivation-paths"},"Derivation Paths"),(0,r.kt)("p",null,"If you want to create and manage several accounts on the network using the same seed, you can use\nderivation paths. We can think of the derived accounts as child accounts of the root account created\nusing the original mnemonic seed phrase."),(0,r.kt)("h3",{id:"soft-and-hard-derivation"},"Soft and Hard Derivation"),(0,r.kt)("p",null,"A soft derivation allows someone to potentially \"go backward\u201d to figure out the initial account's\nprivate key if they know the derived account's private key. It is also possible to determine that\ndifferent accounts generated from the same seed are linked to that seed. A hard derivation path does\nnot allow either of these - even if you know a derived private key, it's not feasible to figure out\nthe private key of the root address, and it's impossible to prove that the first account is linked\nwith the second. These derivation methods have their use cases, given that the private keys for all\nthe derived accounts are fully secure. Unless you have a specific need for a soft derivation, it is\nrecommended to generate the account using a hard derivation path."),(0,r.kt)("p",null,"Many Polkadot key generation tools support\nhard and soft derivation. For instance, if you intend to create an account to be used on the\nPolkadot chain, you can derive a ",(0,r.kt)("strong",{parentName:"p"},"hard key"),"\nchild account using ",(0,r.kt)("strong",{parentName:"p"},"//")," after the mnemonic phrase."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"'caution juice atom organ advance problem want pledge someone senior holiday very//0'\n")),(0,r.kt)("p",null,"and a ",(0,r.kt)("strong",{parentName:"p"},"soft key")," child account using ",(0,r.kt)("strong",{parentName:"p"},"/")," after the mnemonic phrase"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"'caution juice atom organ advance problem want pledge someone senior holiday very/0'\n")),(0,r.kt)("p",null,"If you want to create another account using the Polkadot chain using the same seed, you can change\nthe number at the end of the string above. For example, ",(0,r.kt)("inlineCode",{parentName:"p"},"/1"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"/2"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"/3")," will create different\nderived accounts."),(0,r.kt)("p",null,"You can use any letters or numbers in the derivation path as long as they make sense to you; they do\nnot have to follow any specific pattern. You may combine multiple derivations in your path, as well.\nFor instance, ",(0,r.kt)("inlineCode",{parentName:"p"},"//bill//account//1")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"//john/polkadot/initial")," are both valid. To recreate a\nderived account, you must know both the seed and the derivation path, so you should either use a\nwell-defined sequence (e.g. //0, //1, //2...) or be sure to write down any derivation paths you use."),(0,r.kt)("p",null,"See the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey documentation")," for\ndetails and examples of derivation path formats. The Polkadot-JS Apps and Extension and Parity\nSigner support custom derivation paths using the same syntax as Subkey."),(0,r.kt)("p",null,"Some wallets will automatically add derivation paths to the end of the generated mnemonic phrase.\nThis will generate separate seeds for different paths, allowing separate signing keys with the same\nmnemonic, e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"//polkadot")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"//kusama"),". Although you may\ncorrectly save the mnemonic phrase, using it in another wallet will generate the same addresses only\nif both wallets use the same derivation paths."),(0,r.kt)("p",null,"Polkadot and Kusama both have paths registered in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/satoshilabs/slips/blob/master/slip-0044.md"},"BIP44 registry"),"."),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"You must have the ",(0,r.kt)("em",{parentName:"p"},"parent")," private key and the derivation path to arrive at the key for an address.\nOnly use custom derivation paths if you are comfortable with your knowledge of this topic.")),(0,r.kt)("h3",{id:"password-derivation"},"Password Derivation"),(0,r.kt)("p",null,"There is an additional type of derivation called password derivation. On Polkadot you can derive a\n",(0,r.kt)("strong",{parentName:"p"},"password key")," account using ",(0,r.kt)("strong",{parentName:"p"},"///")," after the mnemonic phrase"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"'caution juice atom organ advance problem want pledge someone senior holiday very///0'\n")),(0,r.kt)("p",null,"In this type of derivation, if the mnemonic phrase leaks, accounts cannot be derived without the\ninitial password. In fact, for soft- and hard-derived accounts, if someone knows the mnemonic phrase\nand the derivation path, they will have access to your account. For password-derived accounts, the\npassword is applied on the derivation path. You can know the mnemonic phrase and the derivation\npath, but without the password, it is impossible to access the account. In mathematical terms, if we\nhave a ",(0,r.kt)("inlineCode",{parentName:"p"},"written derivation path")," and a ",(0,r.kt)("inlineCode",{parentName:"p"},"password"),", we can calculate the ",(0,r.kt)("inlineCode",{parentName:"p"},"real derivation path")," as\n",(0,r.kt)("inlineCode",{parentName:"p"},"f(written derivation path, password)"),", where ",(0,r.kt)("inlineCode",{parentName:"p"},"f")," is a function. We can then calculate the\n",(0,r.kt)("inlineCode",{parentName:"p"},"account key pair")," using ",(0,r.kt)("inlineCode",{parentName:"p"},"f(seed, real derivation path)"),". Unlike hard and soft derivations that can\nbe mixed, only a single password should be specified per derivation."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Password-derived account are as secure as the chosen password.")),(0,r.kt)("h3",{id:"account-derivation-on-ledger-live"},"Account Derivation on ",(0,r.kt)("a",{parentName:"h3",href:"/docs/ledger"},"Ledger")," Live"),(0,r.kt)("p",null,"Ledger Live will only show the main account with BIP44 path 44'/354'/0'/0'/0'. This means that if\nyou created a derived account with a derivation path 44'/354'/0'/0'/1' on a wallet or extension, it\nwill not be displayed on the Ledger Live App. Consequently, it is not possible to transact with\nderived accounts using the Ledger Live App, but it is possible to do so using Polkadot-JS. Check\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts"},"the accounts page")," for more information about derived accounts and\nderivation paths."),(0,r.kt)("p",null,"",""),(0,r.kt)("h3",{id:"account-derivation-on-subkey-and-polkadot-vault"},"Account Derivation on ",(0,r.kt)("a",{parentName:"h3",href:"#creating-accounts-with-subkey"},"Subkey")," and ",(0,r.kt)("a",{parentName:"h3",href:"/docs/polkadot-vault"},"Polkadot Vault")),(0,r.kt)("p",null,"The Subkey tool and Polkadot Vault App use the following Polkadot Standard Hard Derivation scheme:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network")," as the primary account for ",(0,r.kt)("inlineCode",{parentName:"li"},"network"),", named according to ",(0,r.kt)("inlineCode",{parentName:"li"},"network"),"'s named chain\nspecification",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//0"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"//network//1"),", ... as the secondary high-security accounts for ",(0,r.kt)("inlineCode",{parentName:"li"},"network"))))),(0,r.kt)("p",null,"For example, the Vault app will generate a new account from a ",(0,r.kt)("inlineCode",{parentName:"p"},"SEED PHRASE"),", and for each network\nwill create a derived child account from that seed. For the default networks Polkadot, Kusama and\nWestend the derivation path will be:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//polkadot")," for Polkadot, with ",(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//polkadot//0")," as the first secondary\nhigh-security account"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//kusama")," for Kusama, with ",(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//kusama//0")," as the first secondary\nhigh-security account"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//westend")," for Westend, with ",(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//westend//0")," as the first secondary\nhigh-security account")),(0,r.kt)("p",null,"Additionally, although it is not strictly necessary, users can adopt the following good practice\nscheme:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//pub")," as the primary high-security public account for ",(0,r.kt)("inlineCode",{parentName:"li"},"network"),' (the one the user is\nhappy to be associated with their "real" ID)',(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//pub//0"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"//network//pub//0"),", ... as the secondary high-security public accounts for\n",(0,r.kt)("inlineCode",{parentName:"li"},"network")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//hot")," as the primary low-security account for ",(0,r.kt)("inlineCode",{parentName:"li"},"network")," (the one whose secret key the\nuser exports from the Vault app to carry on an internet-connected device)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//hot//0"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"//network//hot//1"),", ... as the secondary low-security accounts for\n",(0,r.kt)("inlineCode",{parentName:"li"},"network"))))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For more information about account derivation best practices, see\n",(0,r.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/polkadot-standards-proposal-psp-to-define-hierarchical-deterministic-hd-key-derivation-paths/2941/2"},"this post"),"\non the Polkadot Forum.")),(0,r.kt)("h2",{id:"system-accounts"},"System Accounts"),(0,r.kt)("p",null,"As the word suggests, system accounts are used by the system. They are used, for example, for the\ntreasury, crowdloans, and nomination pools. From the point of view of the runtime, these accounts\nare like any other account on-chain. These special system accounts are just public keys, with the\nprivate key being unknown (and unattainable). So, that means that only the pallet itself can\ninteract with this account. These accounts can never issue a signed\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-transactions"},"extrinsic")," since they do not have a private key."),(0,r.kt)("admonition",{title:"Explore System Accounts",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Treasury account address -\n",(0,r.kt)("inlineCode",{parentName:"p"},"13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB"),"",""),(0,r.kt)("p",{parentName:"admonition"},"You can view the existing system accounts on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/account_list?role=module"},"Subscan"),".")),(0,r.kt)("p",null,'Let us take a look at how system accounts are generated under the hood. For instance, to generate\nthe treasury account, the raw bytes of the strings "modl" and "py/trsry" are combined to create the\n',(0,r.kt)("inlineCode",{parentName:"p"},"AccountID"),". For more information, check the post on Substrate StackExchange on\n",(0,r.kt)("a",{parentName:"p",href:"https://substrate.stackexchange.com/questions/536/how-do-treasury-accounts-compare-to-end-user-accounts-in-frame"},"Treasury accounts"),'.\nSimilarly, to generate the crowdloan account, the raw bytes of the strings "modl" and "py/cfund"\nalong with the fund index are combined to create the ',(0,r.kt)("inlineCode",{parentName:"p"},"AccountID"),". Similar logic applies to\nnomination pool and parachain accounts as well."),(0,r.kt)("h2",{id:"indices"},"Indices"),(0,r.kt)("p",null,"Polkadot addresses can have indices. An index\nis like a short and easy-to-remember version of an address. Claiming an index requires a deposit of\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.indices.deposit",defaultValue:1e11,filter:"humanReadable",mdxType:"RPC"}),"","\nthat is released when the index is cleared. Any index can be claimed if it is not taken by someone\nelse."),(0,r.kt)("p",null,"But what if an account gets reaped, as explained above? In that case, the index is emptied. In other\nwords, the slot frees up again, making it available for anyone to claim. It is possible to ",(0,r.kt)("em",{parentName:"p"},"freeze"),"\nan index and permanently assign it to an address. ",(0,r.kt)("strong",{parentName:"p"},"This action consumes a deposit, and the index\nwill be permanently bound to the address with no option to release it.")),(0,r.kt)("admonition",{title:"Lookup Account Index on-chain",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"When someone shares their account index, their actual account address on-chain can be looked up\nthrough Polkadot-JS Apps UI > Developer > Chain state > Storage and selecting state query on indices\npallet for the account corresponding to the index.")),(0,r.kt)("p",null,"Here is an example snapshot that shows how to lookup the corresponding account address of the\naccount index 1988 on\n",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-networks#westend-test-network"},"Westend network (Polkadot Test Network)"),",\nusing Polkadot-JS Apps UI. The output shows the account address, deposit amount, and a boolean flag\nindicating whether this is claimed permanently."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"query account index",src:a(65610).Z,width:"2012",height:"998"})),(0,r.kt)("p",null,"Submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"claim")," extrinsic to the ",(0,r.kt)("inlineCode",{parentName:"p"},"indices")," pallet to register an index. The easiest way to do this\nis via Polkadot-JS UI through the ",(0,r.kt)("em",{parentName:"p"},"Developer -> Extrinsics")," menu:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Indices extrinsics",src:a(38872).Z,width:"786",height:"386"})),(0,r.kt)("p",null,"To find available indices to claim on Polkadot or Kusama,\n",(0,r.kt)("a",{parentName:"p",href:"https://www.shawntabrizi.com/substrate-js-utilities/indices/"},"this helper tool may come in handy"),"."),(0,r.kt)("p",null,"For keeping the index permanently, you can follow up with a ",(0,r.kt)("inlineCode",{parentName:"p"},"freeze")," extrinsic as mentioned above."),(0,r.kt)("h2",{id:"creating-accounts-with-subkey"},"Creating Accounts with Subkey"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/bin/utils/subkey"},"Subkey")," is\nrecommended for technically advanced users comfortable with the command line and compiling Rust\ncode. Subkey lets you generate keys on any device that can compile the code. Subkey may also be\nuseful for automated account generation using an air-gapped device. It is not recommended for\ngeneral users. Follow the instructions in the\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey documentation"),"."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using Subkey, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/SWfE_EwxgIU"},(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/65000180519-how-to-create-an-account-in-subkey"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("h2",{id:"using-ens-with-dotksm-accounts"},"Using ENS with DOT/KSM accounts"),(0,r.kt)("p",null,"ENS (Ethereum Name Service) is a distributed and open system of smart contracts on the Ethereum\nblockchain which allows users to claim domain names like ",(0,r.kt)("inlineCode",{parentName:"p"},"bruno.eth"),"."),(0,r.kt)("p",null,"The ENS is equivalent to a DNS (Domain Name System) domain. Instead, it offers a decentralized and\nsecure way to translate text via smart contracts. Supporting wallets can then allow senders to input\nENS domains instead of long and unwieldy addresses. This prevents phishing, fraud, and typos and\nadds a layer of usability to the regular wallet user experience."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"You will need an ENS name and an Ethereum account with some ether to follow along with this guide.\nTo register an ENS name, visit the ",(0,r.kt)("a",{parentName:"p",href:"https://app.ens.domains"},"ENS App")," or any number of subdomain\nregistrars like ",(0,r.kt)("a",{parentName:"p",href:"https://nameth.io"},"Nameth"),". Note that if you're using an older ENS name, you should\nmake sure you're using the\n",(0,r.kt)("a",{parentName:"p",href:"https://medium.com/the-ethereum-name-service/ens-registry-migration-is-over-now-what-a-few-things-to-know-fb05f921872a"},"new resolver"),".\nVisiting the ENS App will warn you about this. You will also need some way to use your Ethereum\naddress - following this guide on a personal computer is recommended. Wallets like\n",(0,r.kt)("a",{parentName:"p",href:"https://frame.sh/"},"Frame")," and ",(0,r.kt)("a",{parentName:"p",href:"https://metamask.io"},"Metamask")," are safe and will make interacting\nwith the Ethereum blockchain through your browser very easy.")),(0,r.kt)("p",null,"Despite living on the Ethereum blockchain, the ENS system has multi-chain support. In this guide,\nyou'll go through the process of adding a KSM and DOT address to ENS. We cover both KSM and DOT to\nshow two different approaches."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"DOT can currently only be added using the Resolver method. KSM can be added through both methods are\ndescribed below.")),(0,r.kt)("p",null,"This guide is also available in video format ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/XKjZk-5_mQc"},"on YouTube"),"."),(0,r.kt)("h3",{id:"adding-via-the-ui"},"Adding via the UI"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://app.ens.domains"},"ENS App")," allows an ENS domain owner to inspect all records bound to\nthe domain, and to add new ones."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"bruno.eth domain name in the ENS application",src:a(51804).Z,width:"977",height:"842"})),(0,r.kt)("p",null,"In the example above, the domain ",(0,r.kt)("inlineCode",{parentName:"p"},"bruno.eth")," has an Ethereum and a Bitcoin address attached. Let's\nattach a KSM account. First, click the ",(0,r.kt)("inlineCode",{parentName:"p"},"[+]")," icon in the Records tab."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"The plus icon in the records tab",src:a(27038).Z,width:"951",height:"190"})),(0,r.kt)("p",null,'Then, pick "Other Addresses", "KSM", and input the Kusama address:'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Inputs needed to register a KSM address",src:a(95860).Z,width:"914",height:"224"})),(0,r.kt)("p",null,"After clicking Save, your Ethereum wallet will ask you to confirm a transaction. Once processed, the\nrecord will show up on the domain's page:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"KSM address now visible in bruno.eth records",src:a(91581).Z,width:"936",height:"367"})),(0,r.kt)("p",null,"The exact process applies to adding your DOT address."),(0,r.kt)("p",null,"Once the transaction is confirmed, your address will be bound to your ENS domain."),(0,r.kt)("h3",{id:"wallet-support"},"Wallet Support"),(0,r.kt)("p",null,"There is no wallet support for ENS names for either KSM or DOT at this time, but the crypto\naccounting and portfolio application ",(0,r.kt)("a",{parentName:"p",href:"https://rotki.com/"},"Rotki")," does support KSM ENS resolution."),(0,r.kt)("h3",{id:"relevant-links"},"Relevant links"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.ens.domains/"},"ENS docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://medium.com/the-ethereum-name-service/ens-launches-multi-coin-support-15-wallets-to-integrate-92518ab20599"},"ENS Multi-chain announcement")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/ensdomains/address-encoder"},"Address encoder")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://swolfeyes.github.io/ethereum-namehash-calculator/"},"Namehash calculator")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.shawntabrizi.com/substrate-js-utilities/"},"Address to pubkey converter"))),(0,r.kt)("h2",{id:"transferring-polkadot-js-apps-accountsaddresses-from-one-computer-to-another"},"Transferring Polkadot-JS Apps Accounts/Addresses From One Computer to Another"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"This will overwrite existing accounts with the same pubkey on your new computer. This generally\nshould not make a difference (since it can still access the same account), but it might if you have\ne.g. an account that was stored externally in the extension on the old computer but was created\ndirectly in the browser on the new one.")),(0,r.kt)("p",null,"This has been tested on Brave and Chrome, but not other browsers."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Go to Polkadot-JS Apps"),(0,r.kt)("li",{parentName:"ol"},"Go to JavaScript console on the browser (Available in Developer Tools)"),(0,r.kt)("li",{parentName:"ol"},"Type in the command:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"JSON.stringify(localStorage)\n")),(0,r.kt)("ol",{start:4},(0,r.kt)("li",{parentName:"ol"},"Copy and paste the returned string to a text editor and save the file."),(0,r.kt)("li",{parentName:"ol"},"Check that the string you pasted begins and ends with a tick mark ('). If not, add one to the\nbeginning and end."),(0,r.kt)("li",{parentName:"ol"},"Save and send that file with the copied string to the new computer."),(0,r.kt)("li",{parentName:"ol"},"On the new computer, go to Polkadot-JS Apps"),(0,r.kt)("li",{parentName:"ol"},"Open the Javascript console on the browser (Available in Developer Tools)"),(0,r.kt)("li",{parentName:"ol"},"Set a variable raw equal to the string from the text file")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"raw = ... copy-pasted json from original computer ...\n")),(0,r.kt)("ol",{start:10},(0,r.kt)("li",{parentName:"ol"},"Run the following code on the console:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"accounts = JSON.parse(raw);\nfor (var key in accounts) {\n if (accounts.hasOwnProperty(key)) {\n val = JSON.stringify(accounts[key]).replace(/\\\\/g,'').slice(1,-1);\n console.log(key + \" -> \" + val);\n localStorage.setItem(key, val);\n }\n}\n")),(0,r.kt)("ol",{start:11},(0,r.kt)("li",{parentName:"ol"},"Refresh Polkadot-JS App browser and check the Accounts and Addresses pages. All of your accounts\nand addresses should now be available.")))}k.isMDXComponent=!0},38872:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/index-a2000a16d514f2136b303dd1d29a17f4.png"},2080:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/pubkey-1-6dc18c2b04022519cc6dd0fb3af36f94.png"},81779:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/pubkey-2-16f0cbc7db6ab6eb8248a05df94adc35.png"},65610:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/query-index-6db697cbe5e058388b830fee34bc4415.png"},51804:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/01-min-dd1b37ae350384f3941bf8f446ec0994.png"},27038:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n="data:image/png;base64,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"},95860:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA5IAAADgCAMAAABGral3AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAIcUExURfD2+v7+/tPT09/f3/Dw8Pv7+/b39v///1OE/u3t7f9ZWczMzL6+vv8AAOTm6OLi4v//0ebq7NH////9/+uva63m/9DQ0YsrilRVU+z//0LgaDQzNK+7zvb//4zO/u3y9f/orfX19f/NjO7m3uzw8vL0861naP//9uXv+mmu6///67u8zS2N0Nra28LY+2pprY0yNP/+41yL/0pQU9H0/t/h5Pr6+m4zM//psa2+2M/e/LOwtNCMK9z4/jMyj+v2+8XFyLjq/5aWlcj3/4fF99uiVeT7/57Y/1ZNRdXW1/Lv83267rnV7DpAWLy9vE9ag//4y22PyX9/f2Op4U99vr/1/ysrK7HK4Z25/P/WnG+y7FCLy4Km/s+OaPbEhrd5UvDt5lOE/8fs+H9ZSvHj//bNj//vv86NNVGb1fD27f/51+25fYfsoF24//D34sWHTjI1h//gqFVrsGnlhnBRi1E9NjBssN/Pz7Z3NHCd/pCw/fbarZJrUe/t8TY5cZNUamuW/s6lcDJhqNjr97uNZzNOmDA3TlOE/Yiu0phbO+ja1OXKq8DK1ExPbYE4as7c6GY5VVuBrEdumuTW/9KTTduxj4tnrV2X1PT1/5FEfsax/v7s///796elcVZZpf7jwDCBwJzK66GO/pZfjKhcg22QnF7Hd4OE/qzxvfxNO3R3ZLeP/tAqL7fvz9LP1YSEhIGQb5TtquzfxOz5yt+iR3QAABP5SURBVHja7Jv9TxPZGsenS+lJU1NlqbVYixQsFbRKUywSQItQ6AsIisJFIxgI4MJmBRUgkXAjghHVFQ1evYmubnY195e7u/fef/A+z5npG7QIQrWx34/SDp0zM8+ceT7znDNVRQAAcggFXQAAlAQAQEkAoCQAAEoC8I0oadAbAQBfFr0hk5IKAODrACUByH0lDegXAL4ShnRK6tEvAHwl9OmUNKJfAPhKGKEkAFASAAAlAYCSAAAoCQCUBABASQCgJAAASgIAJdEvAEBJAACUBABKAgCgJADfnJI/HTtE9J1VKvj90AlFeUSfdJxVlAp677uvaCs6FGWW3urpXbnOa46ilwHIipJ9RUV/kIoVhzqKioqOKo8O9T2z8u/H6p95jtU3yRVm06EhZbZ+aK+J3HSZ6p+F2VEAQBaU7FBfKrhCKuxbm6Ic5po4xBVSW8Evs/W1vLr2h0D9fXQxAOv44Y8nRMeuKPlIVkkaljZx1VR3H6DBrPxNKjkrq2QtNx3iIW39s7O4BACkKBmQk8Bdmku2yfHpUSWtknIueTahpKLsfcLTTwBAFpTsKzKxa4mBa5OikJuz6oc8cO0wB/jD2MBVqbivrQYAZGMueZ0rY/LjHVPq4x357EeJP96huSSvaUM3A5AdJeVMUR2f9mlfgijJX4KcUFxWKoqJL0Ge0AKe8ACQDSU3gjkiADmlJAAASgIAJQEAUBIAKAklAYCSAAAoCQCUBABASQCgJAAASgIAJQEAUBIAKAkAgJIAQEkoCQCUBABASQCgJAAASgIAJQEAUBIAKAkAgJIAQEkAAJQEAEpCSQCgJAAASgIAJQEAUBIAKAkAgJIAQEkAAJQEAEoCAKAkAFASSgIAJQEAUBIAKAkAyKqSp6yBPTlAwHrqU2dm9lhNOYDVY948zsNH9EaQb+iPHN4dJU8FrGaDTnx1dAazNbCplGarx+jPhUj9Ro91MykPG/V6+gvyCr7oR3ZDybBJL3IGvSmcOdELwq7cidQVLsgYKF8dl9MA8guni63cuZJhq07kEDprRicLPLkVqSeTkzRodRn8fn+hvxDkC3S1/X6DiwavO1XylCmn8pwy3ZRh7GoO51qkYXOGUSsbWagDeQZ5SU4aD+9QyYBe5BjGQHolra5ci9RlTRuoS69nI4VOgHyCrjg5qU9fJreu5Clr7p1a+ueuZk/uRZr+uate7+IaiRzNPyl1hQZX+tnk1pW0mnPvxMxpi4/HmHuRGj1pe9/o9EPIPJXS7zQad6ZkwJB7p2VIO3K1+nMvUn/am4dRT0rCyfwsk36nfodK7vnCqWPaynntSRepKRcjNaVX0lAII/PUyULDjpUUuZfoIr2SuRhpJiUxcM3bgSuUzE0lUSVRJaEklARQEkpCyTymMPydRtifJSXdL0P2p78KYbEzx4XlzPdClNPL6Tr+oFRd0dWsNe+f7qHXfTV2e+eFpqQF2bozqu2H97HbSu6ruSK8c8u1wrs0bX9OhxybbKGP19YdC0qCrN60z8UxZUdJXfDBw4Ile6t4E7lb1xp5naxkayQScQjL5FDkvyszDlXgMfvy96xHj/7xynJTYoFbVywtNMvmkYjIjpLBhf1CZ1n49fHKDYcYs0eFGK37lpV883pr7Ypn2z7d5vHQrudn8fixkkxrTnyZSIrH67+okg0fb59XudiQHSW7a3qEzj222MaFrpQ+SFKyVLaQH1i0xO+uebjarupBDaKJBdmaXyxpFElJdKPHqS44U/8dwBaUHFnlkILLl+UHdHdooqKcPSUzRbodJUfnfTx2SGbkqiPpt30HtPgtnTbfBZngd4d9C9TJ4vE83YGSmu2r8dlstktpJIjvJE71NV/ohcz88XmfOsa5tj82LAq9qKWFd/M2NbSRVVvX/tTN3Wvy4k+EQpc2lb3spBZNY6kWI/10/532ZqnSmgQpZtuDdtm07E5tIpJ409FhajEdFd5K+qW6MjkU6goewlGL0AObLSrK6mxqL1FvEdxLZRdih7H7bL8k90P1oE+22E0MHw8evO3as8flcmVLyf5O7gELjwE1Je3ayJOHojMlqo3uuRm16yeWm8aOO1QTvXPHEwty4wFKId7+ymaJ7jFZZaY7rSbP9pT8UEdXVujGV+xd9ZTVY13DreMrtuwpmSnSrSupG/15v+j+rXmTIyaUpBy2vKLz6u9qofxtEt6GgspUJQ98/6mdxJmgazBwyZFI2biSa3RHsPQ4xOidFkpaumpTdLx3Dx2pm9s5F0ZutQnLje0q6R0sFQkl5T+fGKBjUlMpYLKSalO5owsOoeNmKTcs2X0N8qZQfjx2PPfaldjui+PnR4dJlZkP8I822WI3jbx9kBDnztHyl1OSB54D2sBViTmq3a69KzfIu8tpleRmV9Rx7uvNEp0SnDNde9uOkvaeucUmXrx+b5puEWMz9xbpT/aUzBTpNqpksEcL/ue/bKHnnFv9tpBMLu+gL8S3+xQlvZSz7rFW7UIXV2dQsp9ds/SICduZwLxtupTWvLVNk87lL+afPpn3aXk+wTYFqbzw+4Rt2scL3f9s0Y7HFbKM9iSPV0y5+04tSTLz52gf7ps8IOL2VKx8LO1aqyxj1YOh9y+H+WYY9yxJyWvy8JYPw6HYE4hR3kfZyZ/U04lFEm/KvfE7j3yqK5vdlc1qcex6WyXPkSLj2JKUlIsx4/et0Pmpx9F6y3vPZpOjgAmbXQ4p3Pd8oeccZOMH24bhwOcY+R/juXPG7CnJA1ex+cB1cuhunVb3pqZZvGjagWvr9blYUd18hiZTfEOeb0HJqw4+UvH4fQqQZq1jM/+rsUctWZxLZoh060pWD7bHgqdktqgFQE0u9mW2aZ2SorGVHLgc3zyDkpzAcpRHfVLCNvDu3XOtonzyMv3tv8Wlq7F3uYWrx7oqKXWOH2/qVom3UhPHTcF6n/Da8d9apGIcCZ/CaSqo7pvUfoo2nuK9lz+IynDYs/bUKvl2UsZvoZTq/0UWOPfNVmnToHpDTVRJrSn3hnrrGnnV/4qTkoojH889VxrvyqQqeTOaNC5OjAK03iqM0EleVaukLOHc7VOrrCQvqEPnnRj5ozh/8eL57Ckpgp3q4500SvLjHfV5T3BB7bu1xfuRyNpim3yqM7yoPd7hBd54qi6qVdmIQ7yRP0L+rHtowkm+Ic+39HhHBCdb3GudDx8N0jRybKYkuNyUTSUzRLoNJWNOSZu6D7Qkkuv0nRNUB9crSS9Jg9D1Stb09vbKJA1GyQwHf0rX5WUzvdOey3tE+UwJJW1sNDkhjVinpHp0GUAzjW/eO3jPFrlfC80buSK5qXjFFJOyBas0G/heEOTbc/l7Bw2s22hyOK9O1xoptN4zHONVdajLBc77uzzhgfdyAF3XczOaomSsqSyP2rsseAMcY3mVPP/y3t6qJCXrensXuF5TxL3qZGq9kt6l6c6/5E1JVTIxQ+VzUl+2x7/+nWzkR6Fr+PPPBl3WlNS90b4ESaNk4luR8RV5g++u4T6dWm1P9yVIKT94adHmoqVipLNdDMif/RueYzq/M5nCzs944qrrrrkhqu9Nyy9lSMnRv4msKpk+0s+pkpzdWs6oyaUbX3oaFZ9XJcXoSYc0Q/2kWH2n/aYqKZNRZKqSNDq0v1jqEWqVlJl6d76Ln5MO3IhVPa1KypXdfAzLFbU5nwPbW7Zaqu4wUSVbxuVIlk9Hjb9bPaGyk22jWomKVUmtKZ+PGrFO7RvZFeWxKmmpSqmS6vEyV8m1Hp4EJ5RMdH1jacqGW+VHLowJIy8K596Cgr3O7FXJ7f/vBZ22SXzDTfego4wxbfy+NVy43S9B4oeSUwt13q7b5dn71iL9nLnk/9s7G9e4yTCA16WadGpiKCurUI9hauvQU2831YxSp5sVZCp+ccI5W626Tor4iT0FOjYYKkOliGNFBxuyD+f/6Ptxn2uT3uXetMnd7wd3u92lSXrNL8/7PG/yvluipGrQvXaXkmfbc8kYJWce+08d5413tig580c5QslmLqmqsdff1dtrbEnq8+lzMuK994TKJcdlLnmy3sYVZ96nPlFGNH4HuSl12mmvuKpFmkrqZquOsvWo2Kq46rW1vhL9ohEl9df32SMdSurtRSqpnvVJyVCU1I3VRqv12Fu2J7tAvPSU3JXuVRP9ktnZ0x6UlCVDeUw8JNsXHbnk1RdEy/LxTiVnzsklZAX0zevllpKn69XTtibt6dtqXZFK2idl8VLFiuYhKw5teQZTn/yp9mRGlVdkhVemn+O/iPPBheOtCuo9n3z1yhe3z9gqlzysWp0zF26fsDuV1K62Kzkj66hNJevWqUXrUVHvSXPRNsH0emUu+cyHj+uv73kdWlu5pGqytyn51KQ+STeipEirz3032ZZLvjNp/6BySfEiQS6pVVyp55FCSeuYwELJfCppX/3xyBEVC/+qV1wbB5fsOPxdNf1lZ+MZ1dN2qtkveWlB1mZlT9trMjsSP1vu6Op4U5aLZE1R9zluVfLwB6fU6psVV+HGtwflcTxz7lVdkRT7pnO793/Tb3z6o66r2s1g8vmrB1UVoVFxFecCWZs//KFYqeof1eWWE51K2l/+PddU8qGnZQ+i2EsVuXRaqfekuegWJZsVV/t58eLAlvLOiXYln/n+1Bsvtyl59qcjl16S22pVXL89+I+uuH6cpOKqw+PD9WAplBybEIyhZE6V3KbjsNlKi0wMtkkG7mqhn73ebQYdvU+Hj83tsIj84P23O95SFdFdQTZc1a9tIjlRnSwJKjvNbLJhpFByeswVjE2j5MAoefLt/vfz9BkDv2yCY111Ve6ikqY4LRu7iZWsO6mKPMfeej3lC+pQMk0lH9xv79ePX+v/2rcevFPe33o/4ePOQv/rSPK49c3ebLe/R/07/1n/P6mTykh7onXZ+YRJJRnoo5897SFK5vEAHvRHIm5+fVO/eDadm7MYDqsfoobD4uasYcWAkgwa2Q8Rg0aiJEoytPLesP3QygyHNcRK9j8cVgYnIBjN+wQEREmiJNP07M2eRkzTw9DKw2ukgaGVmcwu+Z5GTWbHBATD3HDtewICpnxN3GqNnPKVaXqGN0gamKaHidGTnQvjJkYPmMxuOIU0M5ldo+764gMZ4MWJWCF13XXi/gww8aQbs5NM+Tqsc74amfIVzMPE6EyMjpLZYnR0bHT60H0wVBw6NC3+7qMjKJnJODkmrYThQv7RgxGUzG7jFYaN0aAwgpIAeQAlAVASAFASACUBACUBUBIAUBIAJQEAJQFQEiUBUBIAUBIAJQEAJQFQEgBQEgAlAQAlAVASAFASACVREgAlAQAlAVASAFASACUBACUBUBIAUBIAJQEAJQFQEiUBUBIAUBIAJQEAJQFQEgBQEgAlAQAlYegJfNfzrP7xPNcPet98sVJdLzm9U1qvVoooCYNGwTVhY5uXbqGXzYe1JDa2eVkLURIGSkhpkR8UzKwt8KXf3UsZVpVXFxP6qH+uGqIkDAq+9LFgVnJppd/dshXHWXL6RayhgpIwGCGye3l6Fr0Lz8M1xxRrIUrCAFR1vK7MSea6t2Odp1gyZqRzsVRESci9kZblprZy17J2cLJootHa1ngtoiTkvtXqp7h6f4cIHBqMkTpOhigJucZLMUbqOOnFfbxmMEbqOLmGkpBn/HhjjDgfE4UrjnkqKAk5brZaVmEPNxE6aRCiJOQWN9VEshGII5vG1VSUrKIk5DdIeruwFS8qTIaGE8lGOhmiJBAkk4TJmpMONZSEnOKlnknGxuJSSkqWUBLySWCu3Trtz8aZv+31AkUnLYooCbnEj2u3LnqWdXS221U9as32vJ24HpDVV2z78hWj/SAoCTlIJaOvdlu0LNfr2sn5WCWD7ZPJavTdWKW58eVwavzfhPdqVVESBi2VnPakjWMyuo3KcOmrSCheufPq03oEHW28iFUyIplcjwmSU5slZ7Uik80DU7a9fM1xjtsiaJbHr6kIOi7fiWYdJSGnSkZ+tNIKbIue6yrvHrWOuvpaHPFKRND5kRVPhlJpaaySI9srGVfdKdub9fuay5fDWXtDiCieVieXpZHjG2V7uef6DkpC5rGsmHZrW1szKCjj5JN6f8UTOgbzcik/CLyjszsque2GYqVamBfB8YaMeGu1NWmiM7d5Y0FGSuFmrabCZTQoCYOm5IoMgs2sUlDXTkXPZgjVH1kpKOk4S2vHZShcnbPtcRUTD9hXyps35L+S+DwTJWHQlNS55KI/L1/5vteppIySYwUVS33BvHElT5y/ohJKx1mwN4rFKamkaLVObTgqShYFN1AShimXbFVcp1W+2KFkZy65c3mn51xyaXXSXg7nZQr5iC1zyWWdX6rQKHPJ8/deIZeEQVQy+uKdgmyUKtsWPSlgh5KpV1yXVHt1Q0hb+kjklCqXFHZulup9llRcYSBxrWBXttN7v2SbnEv0S8LQ4O/KVeeJrt5J4S5mlITME+zKvVlc4wpgIpk0B3eCAHSdTHK/JECGYFQBlIThC5OMvQPQQ5hkhDqALME4rgDZgtHOAbLVdB2sOUEc5gSBvMPMWQAZc3Jw5pd0mF8SBqTtyizMAFlCyuObjZQFv3vRKyYar0vRtVaUhPwFSteyhJWBGS0LgfTRcrteW33kq4sJbdQ/Vw1HUBIGSUrPMonn9qR3WOsvpSzVwp02gZKQuzqP73omvPQ8109wb3SxUl1P4mVpvVopdrF+lATIFCgJgJIAgJIAKAkAKAmAkgCAkgAoCQAoCYCSKAmAkgCAkgAoCQAoCYCSAICSACgJACgJgJIAsGdK7tu3z7Z54omn3X/aXkkbAPYGlATIrpL/A2Tjp6eND0hIAAAAAElFTkSuQmCC"},91581:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/04-min-7eb9f3330355312efa81e47ffc75123b.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/ad762f86.cadc1f7d.js b/assets/js/ad762f86.cadc1f7d.js new file mode 100644 index 000000000000..f22714b69b28 --- /dev/null +++ b/assets/js/ad762f86.cadc1f7d.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[7940],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>u});var n=a(74165),o=a(15861),r=a(67294),i=a(87152),s=a(9712),l=a(67425);function d(e,t,a){return c.apply(this,arguments)}function c(){return(c=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var r,l,d,c,p;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 d=new i.U(r),e.next=21,s.G.create({provider:d});case 21:c=e.sent,(p=a.split(".")).forEach((function(e){e in c&&(c=c[e])})),e.t1=p[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=c.toString(),e.abrupt("break",35);case 29:return e.next=31,c();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,a,n){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,n);break;case"precise":(0,l.Precise)(e,a,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,a);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,a=e.path,i=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,c=(0,r.useState)(""),u=c[0],m=c[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?p(i.toString(),l,t,m):m(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://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusama-people":e="wss://kusama-people-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,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,d(t,a,m);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?p(o,l,t,m):m(o);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",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"}};e.exports={HumanReadable:function(e,i,s){var l=void 0;if(i===t||i===o)l=3;else{if(i!==a&&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,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===o)s=1;else{if(i!==a&&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())}}},79569:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=a(47940),s=["components"],l={id:"learn-account-advanced",title:"Polkadot Accounts In-Depth",sidebar_label:"Accounts",description:"Advanced Concepts about Polkadot's Accounts.",keywords:["account","polkadot account","polkadotjs","indices","identity","reaping","ENS","domain","ETH"],slug:"../learn-account-advanced"},d=void 0,c={unversionedId:"learn/learn-account-advanced",id:"learn/learn-account-advanced",title:"Polkadot Accounts In-Depth",description:"Advanced Concepts about Polkadot's Accounts.",source:"@site/../docs/learn/learn-account-advanced.md",sourceDirName:"learn",slug:"/learn-account-advanced",permalink:"/docs/learn-account-advanced",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-account-advanced.md",tags:[],version:"current",lastUpdatedBy:"Branislav Kontur",lastUpdatedAt:1719320814,formattedLastUpdatedAt:"Jun 25, 2024",frontMatter:{id:"learn-account-advanced",title:"Polkadot Accounts In-Depth",sidebar_label:"Accounts",description:"Advanced Concepts about Polkadot's Accounts.",keywords:["account","polkadot account","polkadotjs","indices","identity","reaping","ENS","domain","ETH"],slug:"../learn-account-advanced"},sidebar:"docs",previous:{title:"XCM Instructions",permalink:"/docs/learn-xcm-instructions"},next:{title:"Advanced Staking Concepts",permalink:"/docs/learn-staking-advanced"}},p={},u=[{value:"Address Format",id:"address-format",level:2},{value:"For the Curious: How Prefixes Work",id:"for-the-curious-how-prefixes-work",level:3},{value:"Address Conversion Tools",id:"address-conversion-tools",level:2},{value:"How to Verify a Public Key's Associated Address",id:"how-to-verify-a-public-keys-associated-address",level:3},{value:"Using Subkey to Retrieve Public Key from SS58 Address",id:"using-subkey-to-retrieve-public-key-from-ss58-address",level:4},{value:"Address Verification",id:"address-verification",level:4},{value:"Consider the following example:",id:"consider-the-following-example",level:5},{value:"Portability",id:"portability",level:2},{value:"Derivation Paths",id:"derivation-paths",level:2},{value:"Soft and Hard Derivation",id:"soft-and-hard-derivation",level:3},{value:"Password Derivation",id:"password-derivation",level:3},{value:"Account Derivation on Ledger Live",id:"account-derivation-on-ledger-live",level:3},{value:"Account Derivation on Subkey and Polkadot Vault",id:"account-derivation-on-subkey-and-polkadot-vault",level:3},{value:"System Accounts",id:"system-accounts",level:2},{value:"Indices",id:"indices",level:2},{value:"Creating Accounts with Subkey",id:"creating-accounts-with-subkey",level:2},{value:"Using ENS with DOT/KSM accounts",id:"using-ens-with-dotksm-accounts",level:2},{value:"Adding via the UI",id:"adding-via-the-ui",level:3},{value:"Wallet Support",id:"wallet-support",level:3},{value:"Relevant links",id:"relevant-links",level:3},{value:"Transferring Polkadot-JS Apps Accounts/Addresses From One Computer to Another",id:"transferring-polkadot-js-apps-accountsaddresses-from-one-computer-to-another",level:2}],m={toc:u},h="wrapper";function k(e){var t=e.components,l=(0,o.Z)(e,s);return(0,r.kt)(h,(0,n.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"address-format"},"Address Format"),(0,r.kt)("p",null,"The address format used in Substrate-based chains is SS58. SS58 is a modification of Base-58-check\nfrom Bitcoin with some minor changes. Notably, the format contains an ",(0,r.kt)("em",{parentName:"p"},"address type")," prefix that\nidentifies an address belonging to a specific network."),(0,r.kt)("p",null,"For example:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Polkadot addresses ",(0,r.kt)("strong",{parentName:"li"},"always start with")," the number ",(0,r.kt)("strong",{parentName:"li"},"1"),"."),(0,r.kt)("li",{parentName:"ul"},"Kusama addresses always start with a capital letter, such as ",(0,r.kt)("strong",{parentName:"li"},"C, D, E, F, G, H, J"),"."),(0,r.kt)("li",{parentName:"ul"},"Generic Substrate addresses ",(0,r.kt)("strong",{parentName:"li"},"always start with")," the number ",(0,r.kt)("strong",{parentName:"li"},"5"),".")),(0,r.kt)("p",null,"These prefixes, including how to validate addresses, are embedded in the Substrate SS58 format.\nNever use regular expressions for address validation."),(0,r.kt)("p",null,"It's important to understand that different network formats are ",(0,r.kt)("strong",{parentName:"p"},"merely other representations of\nthe same public key in a private-public keypair")," generated by an address generation tool. As a\nresult, the addresses across Substrate-based chains are compatible if the format is converted\ncorrectly."),(0,r.kt)("p",null,"As of Runtime 28, the default ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts##address-format"},"address format")," is the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/primitives/runtime/src/multiaddress.rs"},(0,r.kt)("inlineCode",{parentName:"a"},"MultiAddress")),"\ntype."),(0,r.kt)("p",null,"This ",(0,r.kt)("inlineCode",{parentName:"p"},"enum")," is a multi-format address wrapper for on-chain accounts and allows us to describe\nPolkadot's default address format to represent many different address types. This includes ",(0,r.kt)("strong",{parentName:"p"},"20\nbyte"),", ",(0,r.kt)("strong",{parentName:"p"},"32 byte"),", and ",(0,r.kt)("strong",{parentName:"p"},"arbitrary raw byte")," variants. It also enhances the original\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#indices"},(0,r.kt)("inlineCode",{parentName:"a"},"indices"))," lookup."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Many wallets allow you to convert between formats. Stand-alone tools exist as well; you can find\nthem in the ",(0,r.kt)("a",{parentName:"p",href:"#address-conversion-tools"},"address conversion tools")," section.")),(0,r.kt)("h3",{id:"for-the-curious-how-prefixes-work"},"For the Curious: How Prefixes Work"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json"},"SS58 registry")," states\nthat:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Polkadot has an address type of ",(0,r.kt)("inlineCode",{parentName:"li"},"00000000b")," (",(0,r.kt)("inlineCode",{parentName:"li"},"0")," in decimal)."),(0,r.kt)("li",{parentName:"ul"},"Kusama (Polkadot Canary) has an address type of ",(0,r.kt)("inlineCode",{parentName:"li"},"00000010b")," (",(0,r.kt)("inlineCode",{parentName:"li"},"2")," in decimal)."),(0,r.kt)("li",{parentName:"ul"},"Generic Substrate has ",(0,r.kt)("inlineCode",{parentName:"li"},"00101010b")," as the address type (",(0,r.kt)("inlineCode",{parentName:"li"},"42")," in decimal).")),(0,r.kt)("p",null,"Because the ",(0,r.kt)("inlineCode",{parentName:"p"},"Base58-check")," alphabet has no number 0, the lowest value is indeed 1. So ",(0,r.kt)("inlineCode",{parentName:"p"},"00000000b")," is\n1 in Base58-check. If we try to\n",(0,r.kt)("a",{parentName:"p",href:"https://www.better-converter.com/Encoders-Decoders/Base58Check-to-Hexadecimal-Decoder"},"decode")," a\nPolkadot address like ",(0,r.kt)("inlineCode",{parentName:"p"},"1FRMM8PEiWXYax7rpS6X4XZX1aAAxSWx1CrKTyrVYhV24fg"),", the result is\n",(0,r.kt)("inlineCode",{parentName:"p"},"000aff6865635ae11013a83835c019d44ec3f865145943f487ae82a8e7bed3a66b29d7"),". The first byte is ",(0,r.kt)("inlineCode",{parentName:"p"},"00"),",\nwhich is indeed ",(0,r.kt)("inlineCode",{parentName:"p"},"00000000")," in binary and ",(0,r.kt)("inlineCode",{parentName:"p"},"0")," in decimal and thus matches the address type of\nPolkadot."),(0,r.kt)("p",null,"Let's take a look at Substrate addresses. If we decode\n",(0,r.kt)("inlineCode",{parentName:"p"},"5CK8D1sKNwF473wbuBP6NuhQfPaWUetNsWUNAAzVwTfxqjfr"),", we get\n",(0,r.kt)("inlineCode",{parentName:"p"},"2a0aff6865635ae11013a83835c019d44ec3f865145943f487ae82a8e7bed3a66b77e5"),". The first byte is ",(0,r.kt)("inlineCode",{parentName:"p"},"2a"),"\nwhich when\n",(0,r.kt)("a",{parentName:"p",href:"https://www.rapidtables.com/convert/number/hex-to-decimal.html"},"converted from hex to decimal"),"\nis 42. 42 is ",(0,r.kt)("inlineCode",{parentName:"p"},"00101010")," in binary, just as the SS58 document states."),(0,r.kt)("p",null,"Finally, let's look at Kusama addresses. Decoding ",(0,r.kt)("inlineCode",{parentName:"p"},"CpjsLDC1JFyrhm3ftC9Gs4QoyrkHKhZKtK7YqGTRFtTafgp"),"\ngives us ",(0,r.kt)("inlineCode",{parentName:"p"},"020aff6865635ae11013a83835c019d44ec3f865145943f487ae82a8e7bed3a66b0985")," with the first\nbyte being ",(0,r.kt)("inlineCode",{parentName:"p"},"02"),", just as specified. If we try a Kusama address that starts with a completely\ndifferent letter, like ",(0,r.kt)("inlineCode",{parentName:"p"},"J4iggBtsWsb61RemU2TDWDXTNHqHNfBSAkGvVZBtn1AJV1a"),", we still get ",(0,r.kt)("inlineCode",{parentName:"p"},"02")," as the\nfirst byte: ",(0,r.kt)("inlineCode",{parentName:"p"},"02f2d606a67f58fa0b3ad2b556195a0ef905676efd4e3ec62f8fa1b8461355f1142509"),". It seems\ncounterintuitive that some addresses always have the same prefix and others like Kusama can vary\nwildly, but it's just a quirk of Base58-check encoding."),(0,r.kt)("h2",{id:"address-conversion-tools"},"Address Conversion Tools"),(0,r.kt)("p",null,"You can use the tools below to convert any SS58 address for any network for use on different\nnetworks"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.subscan.io/tools/ss58_transform"},"handy subscan tool")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot-address-convertor.netlify.app/"},"simple address converter"))),(0,r.kt)("h3",{id:"how-to-verify-a-public-keys-associated-address"},"How to Verify a Public Key's Associated Address"),(0,r.kt)("p",null,"You can verify your public key's associated address through a series of inspection steps, where the\nkey is a base-16 (hexadecimal) address."),(0,r.kt)("h4",{id:"using-subkey-to-retrieve-public-key-from-ss58-address"},"Using Subkey to Retrieve Public Key from SS58 Address"),(0,r.kt)("p",null,"This is to showcase that the ",(0,r.kt)("strong",{parentName:"p"},'SS58 address is based on the public key (aka "Account ID")')),(0,r.kt)("p",null,"The Subkey Tool's The\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/#inspecting-keys"},"Inspecting Keys"),"\nsection explains how to use the ",(0,r.kt)("inlineCode",{parentName:"p"},"inspect")," command to recalculate your key pair's public key and\naddress."),(0,r.kt)("p",null,"Start by inspecting your account's Polkadot address by running the inspect command against your\naccount's address:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ subkey inspect 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n\nPublic Key URI `1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F` is account:\n Network ID/version: polkadot\n Public key (hex): 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Account ID: 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n SS58 Address: 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n")),(0,r.kt)("p",null,'Take note of the hexadecimal string for "Public key (hex)". This is your account\'s public key.'),(0,r.kt)("p",null,"Running the ",(0,r.kt)("inlineCode",{parentName:"p"},"inspect")," command on your public key along with the ",(0,r.kt)("inlineCode",{parentName:"p"},"--public")," parameter the SS58\naddress for the default network (substrate) is returned."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ subkey inspect --public 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n\nNetwork ID/version: substrate\n Public key (hex): 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Account ID: 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Public key (SS58): 5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp\n SS58 Address: 5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp\n")),(0,r.kt)("p",null,"Using the ",(0,r.kt)("inlineCode",{parentName:"p"},"--network")," flag, you can define the network that you would like to inspect, where the\nSS58 address will be based on that network. Now, running the ",(0,r.kt)("inlineCode",{parentName:"p"},"inspect")," command with\n",(0,r.kt)("inlineCode",{parentName:"p"},"--network polkadot")," return your original Polkadot address, thus verifying the public key."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"$ subkey inspect --network polkadot 5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp\n\nPublic Key URI `5CdiCGvTEuzut954STAXRfL8Lazs3KCZa5LPpkPeqqJXdTHp` is account:\n Network ID/version: polkadot\n Public key (hex): 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Account ID: 0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce\n Public key (SS58): 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n SS58 Address: 1a1LcBX6hGPKg5aQ6DXZpAHCCzWjckhea4sz3P1PvL3oc4F\n")),(0,r.kt)("p",null,"You will notice that the Subkey Tool recognizes the correct address network and returns the\nassociated public key. The public key is returned as a hexadecimal string (i.e. prefixed with\n",(0,r.kt)("strong",{parentName:"p"},'"0x"'),"). ",(0,r.kt)("strong",{parentName:"p"},"For both SS58 addresses, the same public key is returned.")),(0,r.kt)("h4",{id:"address-verification"},"Address Verification"),(0,r.kt)("h5",{id:"consider-the-following-example"},"Consider the following example:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"19",src:a(2080).Z,width:"739",height:"543"})),(0,r.kt)("p",null,"If you are comfortable enough to distinguish between each account parameter, you can prefix the\npublic-key string with ",(0,r.kt)("strong",{parentName:"p"},'"0x"')," on your own:"),(0,r.kt)("p",null,"From:\n",(0,r.kt)("inlineCode",{parentName:"p"},"Pay DOTs to the Polkadot account:192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce"),',\nwe prefix the address by "0x" ->\n',(0,r.kt)("inlineCode",{parentName:"p"},"0x192c3c7e5789b461fbf1c7f614ba5eed0b22efc507cda60a5e7fda8e046bcdce"),"."),(0,r.kt)("p",null,"Using the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/tools/ss58_transform"},"handy subscan tool"),', you can verify\nboth address associations to your public key. Copy your public key into the "Input Account or Public\nKey" textbox and click "Transform" at the bottom. On the right-hand side, the addresses for Polkadot\nand Substrate that are returned based on your public key should match the ones you inspected.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"20",src:a(81779).Z,width:"1505",height:"759"})),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"You may have to scroll down to the bottom of the menu to find the Substrate address based on the\nmenu listings. You will notice that many networks that also use the same Substrate address.")),(0,r.kt)("p",null,"You can verify your public key verification by recalling that Polkadot addresses start with a '1',\nwhereas Substrate addresses generally start with a '5' (Kusama addresses start with a capital\nletter). See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#address-format"},"Addresses")," for more details."),(0,r.kt)("p",null,"Furthermore, the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/utility-scripts"},"Utility Scripts")," can be referenced for how\nthe verification is performed:\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/utility-scripts/blob/master/src/misc/pubkeyToAddress.js"},"pubkeyToAddress.js"),"\ndemonstrates how a single public key interprets a Polkadot, Substrate, or Kusama address."),(0,r.kt)("h2",{id:"portability"},"Portability"),(0,r.kt)("p",null,"Portability is the ability to use a mnemonic phrase or seed across multiple wallets."),(0,r.kt)("p",null,"Most wallets generate a mnemonic phrase for users to back up their wallets and generate a private\nkey from the mnemonic. Not all wallets use the same algorithm to convert from mnemonic phrase to\nprivate key, which affects the ability to use the same mnemonic phrase in multiple wallets. Wallets\nthat use different measures will arrive at a different set of addresses from the exact mnemonic\nphrase."),(0,r.kt)("admonition",{title:"Not all wallets use the same algorithm to convert from mnemonic phrase to private key",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey")," and Polkadot-JS based\nwallets use the BIP39 dictionary for mnemonic generation, but use the entropy byte array to generate\nthe private key, while full BIP39 wallets (like Ledger) use 2048 rounds of PBKDF2 on the mnemonic.\nThe same mnemonic may generate different private keys on other wallets due to the various\ncryptographic algorithms used. See\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-bip39"},"Substrate BIP39 Repo")," for more information.")),(0,r.kt)("p",null,"Portability depends on several factors:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Derivation path"),(0,r.kt)("li",{parentName:"ul"},"Mnemonic format"),(0,r.kt)("li",{parentName:"ul"},"Seed derivation"),(0,r.kt)("li",{parentName:"ul"},"Signature scheme")),(0,r.kt)("p",null,"To use the exact mnemonic across multiple wallets, ensure they follow compatible methods for\ngenerating keys and signing messages. If you are still looking for understandable documentation,\ncontact the project maintainers."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"}),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mnemonic Format"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Derivation Path"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Seed Derivation"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Signature Support"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Polkadot{.js} Extension"),(0,r.kt)("td",{parentName:"tr",align:"center"},"Standard"),(0,r.kt)("td",{parentName:"tr",align:"center"},"User-Defined"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32"),(0,r.kt)("td",{parentName:"tr",align:"center"},"sr25519")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Polkadot-JS Apps"),(0,r.kt)("td",{parentName:"tr",align:"center"},"Standard","*"),(0,r.kt)("td",{parentName:"tr",align:"center"},"User-Defined"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32"),(0,r.kt)("td",{parentName:"tr",align:"center"},"sr25519, ed25519, secp256k")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Ledger"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP39"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP44","\u2020"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32","\u2021"),(0,r.kt)("td",{parentName:"tr",align:"center"},"ed25519","\xa7")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Subkey"),(0,r.kt)("td",{parentName:"tr",align:"center"},"Standard","*"),(0,r.kt)("td",{parentName:"tr",align:"center"},"User-Defined"),(0,r.kt)("td",{parentName:"tr",align:"center"},"BIP32"),(0,r.kt)("td",{parentName:"tr",align:"center"},"sr25519, ed25519, secp256k1")))),(0,r.kt)("p",null,"*"," Ed25519 keys have ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-bip39"},"limited compatibility")," with\nBIP39."),(0,r.kt)("p",null,"\u2020"," ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/satoshilabs/slips/blob/master/slip-0044.md"},"BIP44 Registry")),(0,r.kt)("p",null,"\u2021"," Ed25519 and BIP32 based on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/LedgerHQ/orakolo/blob/master/papers/Ed25519_BIP%20Final.pdf"},"Khovratovich")),(0,r.kt)("p",null,"\xa7"," Sr25519 planned"),(0,r.kt)("h2",{id:"derivation-paths"},"Derivation Paths"),(0,r.kt)("p",null,"If you want to create and manage several accounts on the network using the same seed, you can use\nderivation paths. We can think of the derived accounts as child accounts of the root account created\nusing the original mnemonic seed phrase."),(0,r.kt)("h3",{id:"soft-and-hard-derivation"},"Soft and Hard Derivation"),(0,r.kt)("p",null,"A soft derivation allows someone to potentially \"go backward\u201d to figure out the initial account's\nprivate key if they know the derived account's private key. It is also possible to determine that\ndifferent accounts generated from the same seed are linked to that seed. A hard derivation path does\nnot allow either of these - even if you know a derived private key, it's not feasible to figure out\nthe private key of the root address, and it's impossible to prove that the first account is linked\nwith the second. These derivation methods have their use cases, given that the private keys for all\nthe derived accounts are fully secure. Unless you have a specific need for a soft derivation, it is\nrecommended to generate the account using a hard derivation path."),(0,r.kt)("p",null,"Many Polkadot key generation tools support\nhard and soft derivation. For instance, if you intend to create an account to be used on the\nPolkadot chain, you can derive a ",(0,r.kt)("strong",{parentName:"p"},"hard key"),"\nchild account using ",(0,r.kt)("strong",{parentName:"p"},"//")," after the mnemonic phrase."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"'caution juice atom organ advance problem want pledge someone senior holiday very//0'\n")),(0,r.kt)("p",null,"and a ",(0,r.kt)("strong",{parentName:"p"},"soft key")," child account using ",(0,r.kt)("strong",{parentName:"p"},"/")," after the mnemonic phrase"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"'caution juice atom organ advance problem want pledge someone senior holiday very/0'\n")),(0,r.kt)("p",null,"If you want to create another account using the Polkadot chain using the same seed, you can change\nthe number at the end of the string above. For example, ",(0,r.kt)("inlineCode",{parentName:"p"},"/1"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"/2"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"/3")," will create different\nderived accounts."),(0,r.kt)("p",null,"You can use any letters or numbers in the derivation path as long as they make sense to you; they do\nnot have to follow any specific pattern. You may combine multiple derivations in your path, as well.\nFor instance, ",(0,r.kt)("inlineCode",{parentName:"p"},"//bill//account//1")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"//john/polkadot/initial")," are both valid. To recreate a\nderived account, you must know both the seed and the derivation path, so you should either use a\nwell-defined sequence (e.g. //0, //1, //2...) or be sure to write down any derivation paths you use."),(0,r.kt)("p",null,"See the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey documentation")," for\ndetails and examples of derivation path formats. The Polkadot-JS Apps and Extension and Parity\nSigner support custom derivation paths using the same syntax as Subkey."),(0,r.kt)("p",null,"Some wallets will automatically add derivation paths to the end of the generated mnemonic phrase.\nThis will generate separate seeds for different paths, allowing separate signing keys with the same\nmnemonic, e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"//polkadot")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"//kusama"),". Although you may\ncorrectly save the mnemonic phrase, using it in another wallet will generate the same addresses only\nif both wallets use the same derivation paths."),(0,r.kt)("p",null,"Polkadot and Kusama both have paths registered in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/satoshilabs/slips/blob/master/slip-0044.md"},"BIP44 registry"),"."),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"You must have the ",(0,r.kt)("em",{parentName:"p"},"parent")," private key and the derivation path to arrive at the key for an address.\nOnly use custom derivation paths if you are comfortable with your knowledge of this topic.")),(0,r.kt)("h3",{id:"password-derivation"},"Password Derivation"),(0,r.kt)("p",null,"There is an additional type of derivation called password derivation. On Polkadot you can derive a\n",(0,r.kt)("strong",{parentName:"p"},"password key")," account using ",(0,r.kt)("strong",{parentName:"p"},"///")," after the mnemonic phrase"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"'caution juice atom organ advance problem want pledge someone senior holiday very///0'\n")),(0,r.kt)("p",null,"In this type of derivation, if the mnemonic phrase leaks, accounts cannot be derived without the\ninitial password. In fact, for soft- and hard-derived accounts, if someone knows the mnemonic phrase\nand the derivation path, they will have access to your account. For password-derived accounts, the\npassword is applied on the derivation path. You can know the mnemonic phrase and the derivation\npath, but without the password, it is impossible to access the account. In mathematical terms, if we\nhave a ",(0,r.kt)("inlineCode",{parentName:"p"},"written derivation path")," and a ",(0,r.kt)("inlineCode",{parentName:"p"},"password"),", we can calculate the ",(0,r.kt)("inlineCode",{parentName:"p"},"real derivation path")," as\n",(0,r.kt)("inlineCode",{parentName:"p"},"f(written derivation path, password)"),", where ",(0,r.kt)("inlineCode",{parentName:"p"},"f")," is a function. We can then calculate the\n",(0,r.kt)("inlineCode",{parentName:"p"},"account key pair")," using ",(0,r.kt)("inlineCode",{parentName:"p"},"f(seed, real derivation path)"),". Unlike hard and soft derivations that can\nbe mixed, only a single password should be specified per derivation."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Password-derived account are as secure as the chosen password.")),(0,r.kt)("h3",{id:"account-derivation-on-ledger-live"},"Account Derivation on ",(0,r.kt)("a",{parentName:"h3",href:"/docs/ledger"},"Ledger")," Live"),(0,r.kt)("p",null,"Ledger Live will only show the main account with BIP44 path 44'/354'/0'/0'/0'. This means that if\nyou created a derived account with a derivation path 44'/354'/0'/0'/1' on a wallet or extension, it\nwill not be displayed on the Ledger Live App. Consequently, it is not possible to transact with\nderived accounts using the Ledger Live App, but it is possible to do so using Polkadot-JS. Check\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts"},"the accounts page")," for more information about derived accounts and\nderivation paths."),(0,r.kt)("p",null,"",""),(0,r.kt)("h3",{id:"account-derivation-on-subkey-and-polkadot-vault"},"Account Derivation on ",(0,r.kt)("a",{parentName:"h3",href:"#creating-accounts-with-subkey"},"Subkey")," and ",(0,r.kt)("a",{parentName:"h3",href:"/docs/polkadot-vault"},"Polkadot Vault")),(0,r.kt)("p",null,"The Subkey tool and Polkadot Vault App use the following Polkadot Standard Hard Derivation scheme:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network")," as the primary account for ",(0,r.kt)("inlineCode",{parentName:"li"},"network"),", named according to ",(0,r.kt)("inlineCode",{parentName:"li"},"network"),"'s named chain\nspecification",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//0"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"//network//1"),", ... as the secondary high-security accounts for ",(0,r.kt)("inlineCode",{parentName:"li"},"network"))))),(0,r.kt)("p",null,"For example, the Vault app will generate a new account from a ",(0,r.kt)("inlineCode",{parentName:"p"},"SEED PHRASE"),", and for each network\nwill create a derived child account from that seed. For the default networks Polkadot, Kusama and\nWestend the derivation path will be:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//polkadot")," for Polkadot, with ",(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//polkadot//0")," as the first secondary\nhigh-security account"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//kusama")," for Kusama, with ",(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//kusama//0")," as the first secondary\nhigh-security account"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//westend")," for Westend, with ",(0,r.kt)("inlineCode",{parentName:"li"},"SEED PHRASE//westend//0")," as the first secondary\nhigh-security account")),(0,r.kt)("p",null,"Additionally, although it is not strictly necessary, users can adopt the following good practice\nscheme:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//pub")," as the primary high-security public account for ",(0,r.kt)("inlineCode",{parentName:"li"},"network"),' (the one the user is\nhappy to be associated with their "real" ID)',(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//pub//0"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"//network//pub//0"),", ... as the secondary high-security public accounts for\n",(0,r.kt)("inlineCode",{parentName:"li"},"network")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//hot")," as the primary low-security account for ",(0,r.kt)("inlineCode",{parentName:"li"},"network")," (the one whose secret key the\nuser exports from the Vault app to carry on an internet-connected device)",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"//network//hot//0"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"//network//hot//1"),", ... as the secondary low-security accounts for\n",(0,r.kt)("inlineCode",{parentName:"li"},"network"))))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For more information about account derivation best practices, see\n",(0,r.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/polkadot-standards-proposal-psp-to-define-hierarchical-deterministic-hd-key-derivation-paths/2941/2"},"this post"),"\non the Polkadot Forum.")),(0,r.kt)("h2",{id:"system-accounts"},"System Accounts"),(0,r.kt)("p",null,"As the word suggests, system accounts are used by the system. They are used, for example, for the\ntreasury, crowdloans, and nomination pools. From the point of view of the runtime, these accounts\nare like any other account on-chain. These special system accounts are just public keys, with the\nprivate key being unknown (and unattainable). So, that means that only the pallet itself can\ninteract with this account. These accounts can never issue a signed\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-transactions"},"extrinsic")," since they do not have a private key."),(0,r.kt)("admonition",{title:"Explore System Accounts",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Treasury account address -\n",(0,r.kt)("inlineCode",{parentName:"p"},"13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB"),"",""),(0,r.kt)("p",{parentName:"admonition"},"You can view the existing system accounts on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/account_list?role=module"},"Subscan"),".")),(0,r.kt)("p",null,'Let us take a look at how system accounts are generated under the hood. For instance, to generate\nthe treasury account, the raw bytes of the strings "modl" and "py/trsry" are combined to create the\n',(0,r.kt)("inlineCode",{parentName:"p"},"AccountID"),". For more information, check the post on Substrate StackExchange on\n",(0,r.kt)("a",{parentName:"p",href:"https://substrate.stackexchange.com/questions/536/how-do-treasury-accounts-compare-to-end-user-accounts-in-frame"},"Treasury accounts"),'.\nSimilarly, to generate the crowdloan account, the raw bytes of the strings "modl" and "py/cfund"\nalong with the fund index are combined to create the ',(0,r.kt)("inlineCode",{parentName:"p"},"AccountID"),". Similar logic applies to\nnomination pool and parachain accounts as well."),(0,r.kt)("h2",{id:"indices"},"Indices"),(0,r.kt)("p",null,"Polkadot addresses can have indices. An index\nis like a short and easy-to-remember version of an address. Claiming an index requires a deposit of\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.indices.deposit",defaultValue:1e11,filter:"humanReadable",mdxType:"RPC"}),"","\nthat is released when the index is cleared. Any index can be claimed if it is not taken by someone\nelse."),(0,r.kt)("p",null,"But what if an account gets reaped, as explained above? In that case, the index is emptied. In other\nwords, the slot frees up again, making it available for anyone to claim. It is possible to ",(0,r.kt)("em",{parentName:"p"},"freeze"),"\nan index and permanently assign it to an address. ",(0,r.kt)("strong",{parentName:"p"},"This action consumes a deposit, and the index\nwill be permanently bound to the address with no option to release it.")),(0,r.kt)("admonition",{title:"Lookup Account Index on-chain",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"When someone shares their account index, their actual account address on-chain can be looked up\nthrough Polkadot-JS Apps UI > Developer > Chain state > Storage and selecting state query on indices\npallet for the account corresponding to the index.")),(0,r.kt)("p",null,"Here is an example snapshot that shows how to lookup the corresponding account address of the\naccount index 1988 on\n",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-networks#westend-test-network"},"Westend network (Polkadot Test Network)"),",\nusing Polkadot-JS Apps UI. The output shows the account address, deposit amount, and a boolean flag\nindicating whether this is claimed permanently."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"query account index",src:a(65610).Z,width:"2012",height:"998"})),(0,r.kt)("p",null,"Submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"claim")," extrinsic to the ",(0,r.kt)("inlineCode",{parentName:"p"},"indices")," pallet to register an index. The easiest way to do this\nis via Polkadot-JS UI through the ",(0,r.kt)("em",{parentName:"p"},"Developer -> Extrinsics")," menu:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Indices extrinsics",src:a(38872).Z,width:"786",height:"386"})),(0,r.kt)("p",null,"To find available indices to claim on Polkadot or Kusama,\n",(0,r.kt)("a",{parentName:"p",href:"https://www.shawntabrizi.com/substrate-js-utilities/indices/"},"this helper tool may come in handy"),"."),(0,r.kt)("p",null,"For keeping the index permanently, you can follow up with a ",(0,r.kt)("inlineCode",{parentName:"p"},"freeze")," extrinsic as mentioned above."),(0,r.kt)("h2",{id:"creating-accounts-with-subkey"},"Creating Accounts with Subkey"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/bin/utils/subkey"},"Subkey")," is\nrecommended for technically advanced users comfortable with the command line and compiling Rust\ncode. Subkey lets you generate keys on any device that can compile the code. Subkey may also be\nuseful for automated account generation using an air-gapped device. It is not recommended for\ngeneral users. Follow the instructions in the\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey documentation"),"."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using Subkey, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/SWfE_EwxgIU"},(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/65000180519-how-to-create-an-account-in-subkey"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("h2",{id:"using-ens-with-dotksm-accounts"},"Using ENS with DOT/KSM accounts"),(0,r.kt)("p",null,"ENS (Ethereum Name Service) is a distributed and open system of smart contracts on the Ethereum\nblockchain which allows users to claim domain names like ",(0,r.kt)("inlineCode",{parentName:"p"},"bruno.eth"),"."),(0,r.kt)("p",null,"The ENS is equivalent to a DNS (Domain Name System) domain. Instead, it offers a decentralized and\nsecure way to translate text via smart contracts. Supporting wallets can then allow senders to input\nENS domains instead of long and unwieldy addresses. This prevents phishing, fraud, and typos and\nadds a layer of usability to the regular wallet user experience."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"You will need an ENS name and an Ethereum account with some ether to follow along with this guide.\nTo register an ENS name, visit the ",(0,r.kt)("a",{parentName:"p",href:"https://app.ens.domains"},"ENS App")," or any number of subdomain\nregistrars like ",(0,r.kt)("a",{parentName:"p",href:"https://nameth.io"},"Nameth"),". Note that if you're using an older ENS name, you should\nmake sure you're using the\n",(0,r.kt)("a",{parentName:"p",href:"https://medium.com/the-ethereum-name-service/ens-registry-migration-is-over-now-what-a-few-things-to-know-fb05f921872a"},"new resolver"),".\nVisiting the ENS App will warn you about this. You will also need some way to use your Ethereum\naddress - following this guide on a personal computer is recommended. Wallets like\n",(0,r.kt)("a",{parentName:"p",href:"https://frame.sh/"},"Frame")," and ",(0,r.kt)("a",{parentName:"p",href:"https://metamask.io"},"Metamask")," are safe and will make interacting\nwith the Ethereum blockchain through your browser very easy.")),(0,r.kt)("p",null,"Despite living on the Ethereum blockchain, the ENS system has multi-chain support. In this guide,\nyou'll go through the process of adding a KSM and DOT address to ENS. We cover both KSM and DOT to\nshow two different approaches."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"DOT can currently only be added using the Resolver method. KSM can be added through both methods are\ndescribed below.")),(0,r.kt)("p",null,"This guide is also available in video format ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/XKjZk-5_mQc"},"on YouTube"),"."),(0,r.kt)("h3",{id:"adding-via-the-ui"},"Adding via the UI"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://app.ens.domains"},"ENS App")," allows an ENS domain owner to inspect all records bound to\nthe domain, and to add new ones."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"bruno.eth domain name in the ENS application",src:a(51804).Z,width:"977",height:"842"})),(0,r.kt)("p",null,"In the example above, the domain ",(0,r.kt)("inlineCode",{parentName:"p"},"bruno.eth")," has an Ethereum and a Bitcoin address attached. Let's\nattach a KSM account. First, click the ",(0,r.kt)("inlineCode",{parentName:"p"},"[+]")," icon in the Records tab."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"The plus icon in the records tab",src:a(27038).Z,width:"951",height:"190"})),(0,r.kt)("p",null,'Then, pick "Other Addresses", "KSM", and input the Kusama address:'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Inputs needed to register a KSM address",src:a(95860).Z,width:"914",height:"224"})),(0,r.kt)("p",null,"After clicking Save, your Ethereum wallet will ask you to confirm a transaction. Once processed, the\nrecord will show up on the domain's page:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"KSM address now visible in bruno.eth records",src:a(91581).Z,width:"936",height:"367"})),(0,r.kt)("p",null,"The exact process applies to adding your DOT address."),(0,r.kt)("p",null,"Once the transaction is confirmed, your address will be bound to your ENS domain."),(0,r.kt)("h3",{id:"wallet-support"},"Wallet Support"),(0,r.kt)("p",null,"There is no wallet support for ENS names for either KSM or DOT at this time, but the crypto\naccounting and portfolio application ",(0,r.kt)("a",{parentName:"p",href:"https://rotki.com/"},"Rotki")," does support KSM ENS resolution."),(0,r.kt)("h3",{id:"relevant-links"},"Relevant links"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.ens.domains/"},"ENS docs")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://medium.com/the-ethereum-name-service/ens-launches-multi-coin-support-15-wallets-to-integrate-92518ab20599"},"ENS Multi-chain announcement")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/ensdomains/address-encoder"},"Address encoder")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://swolfeyes.github.io/ethereum-namehash-calculator/"},"Namehash calculator")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.shawntabrizi.com/substrate-js-utilities/"},"Address to pubkey converter"))),(0,r.kt)("h2",{id:"transferring-polkadot-js-apps-accountsaddresses-from-one-computer-to-another"},"Transferring Polkadot-JS Apps Accounts/Addresses From One Computer to Another"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"This will overwrite existing accounts with the same pubkey on your new computer. This generally\nshould not make a difference (since it can still access the same account), but it might if you have\ne.g. an account that was stored externally in the extension on the old computer but was created\ndirectly in the browser on the new one.")),(0,r.kt)("p",null,"This has been tested on Brave and Chrome, but not other browsers."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Go to Polkadot-JS Apps"),(0,r.kt)("li",{parentName:"ol"},"Go to JavaScript console on the browser (Available in Developer Tools)"),(0,r.kt)("li",{parentName:"ol"},"Type in the command:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"JSON.stringify(localStorage)\n")),(0,r.kt)("ol",{start:4},(0,r.kt)("li",{parentName:"ol"},"Copy and paste the returned string to a text editor and save the file."),(0,r.kt)("li",{parentName:"ol"},"Check that the string you pasted begins and ends with a tick mark ('). If not, add one to the\nbeginning and end."),(0,r.kt)("li",{parentName:"ol"},"Save and send that file with the copied string to the new computer."),(0,r.kt)("li",{parentName:"ol"},"On the new computer, go to Polkadot-JS Apps"),(0,r.kt)("li",{parentName:"ol"},"Open the Javascript console on the browser (Available in Developer Tools)"),(0,r.kt)("li",{parentName:"ol"},"Set a variable raw equal to the string from the text file")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"raw = ... copy-pasted json from original computer ...\n")),(0,r.kt)("ol",{start:10},(0,r.kt)("li",{parentName:"ol"},"Run the following code on the console:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"accounts = JSON.parse(raw);\nfor (var key in accounts) {\n if (accounts.hasOwnProperty(key)) {\n val = JSON.stringify(accounts[key]).replace(/\\\\/g,'').slice(1,-1);\n console.log(key + \" -> \" + val);\n localStorage.setItem(key, val);\n }\n}\n")),(0,r.kt)("ol",{start:11},(0,r.kt)("li",{parentName:"ol"},"Refresh Polkadot-JS App browser and check the Accounts and Addresses pages. All of your accounts\nand addresses should now be available.")))}k.isMDXComponent=!0},38872:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/index-a2000a16d514f2136b303dd1d29a17f4.png"},2080:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/pubkey-1-6dc18c2b04022519cc6dd0fb3af36f94.png"},81779:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/pubkey-2-16f0cbc7db6ab6eb8248a05df94adc35.png"},65610:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/query-index-6db697cbe5e058388b830fee34bc4415.png"},51804:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/01-min-dd1b37ae350384f3941bf8f446ec0994.png"},27038:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n="data:image/png;base64,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"},95860:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n="data:image/png;base64,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"},91581:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/04-min-7eb9f3330355312efa81e47ffc75123b.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.33c6c220.js b/assets/js/runtime~main.1547e607.js similarity index 99% rename from assets/js/runtime~main.33c6c220.js rename to assets/js/runtime~main.1547e607.js index b866b4938476..b2e3fa2a0e7e 100644 --- a/assets/js/runtime~main.33c6c220.js +++ b/assets/js/runtime~main.1547e607.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",230:"804b1e9f",289:"bf3ab9de",315:"9528ac88",356:"797239df",502:"2d429218",509:"2e0c35d5",537:"3829cf1d",576:"f52abf29",587:"76efc107",609:"d569989b",648:"4403bb94",657:"386bfe51",660:"387813b8",690:"e4ef088f",691:"145746f5",740:"078895e8",810:"23498fd5",948:"d9a69e3a",1062:"f90fa732",1083:"899aadcc",1090:"cfd53ea4",1125:"3184af97",1207:"49ea81bb",1211:"73c3bebc",1213:"25f2bd2a",1239:"f359a251",1288:"fabebe44",1299:"74df6a22",1306:"543c9f0a",1372:"b61f6dc7",1415:"4d76887f",1419:"f750c690",1446:"5136ee31",1451:"f44679e7",1453:"497334c4",1486:"8dd7cee0",1494:"b21dd8a7",1506:"c630d0cd",1529:"ffe9c3c9",1585:"33b0bcab",1598:"7fbac68a",1635:"5db34cd0",1678:"fa343ad1",1686:"f7191335",1703:"a5002e4a",1713:"0eeb7a68",1723:"0df78d26",1748:"987d08ef",1759:"e8522a07",1760:"8081c0c6",1774:"9e6341e5",1786:"d9ef69a7",1825:"48074a08",1872:"78e1e977",1953:"1ed3671a",1957:"df154d69",1966:"f47489cd",1975:"fda65b2b",1979:"0cb62240",2008:"4f031749",2042:"dd32e389",2117:"21877fa5",2119:"6d5c9a28",2136:"ecb495b7",2169:"1646726c",2174:"f2b5c614",2194:"6151e7ce",2242:"f3027c84",2248:"da9f79cb",2261:"333929a0",2327:"efba78c5",2354:"493c7fdf",2377:"f9358c97",2399:"8d3a1bf8",2507:"7c78c461",2508:"918b38b6",2552:"863c4753",2581:"967fa6d4",2609:"db0b42b0",2633:"e2e89062",2635:"0b632434",2664:"9662c81e",2665:"f4130007",2677:"ece9fdae",2704:"f3bde756",2712:"c2c6a3a6",2749:"b906f375",2754:"78868b16",2758:"9e3f6a8a",2794:"feadf832",2813:"d000eb73",2884:"5d69d9d4",2909:"f4200fe5",2914:"2be0d940",2949:"2ea50c63",2969:"979a04e7",3029:"6544ec02",3066:"af40287e",3091:"b0a48d97",3132:"85afe03a",3262:"8a8a7d05",3274:"41f7224c",3330:"e31fc461",3332:"3497b7c6",3348:"7ccc428f",3356:"f14351c1",3375:"d42819bc",3451:"7c138549",3452:"3d1bf5db",3484:"5c90fc9b",3495:"f861e7c0",3513:"41b7b3e8",3518:"59acd71c",3531:"879e564b",3554:"d5909206",3576:"73d1b372",3599:"21899dd2",3620:"f137ce68",3643:"cb9afd28",3665:"f1585bfb",3667:"b0cbc1d4",3668:"b225a2ce",3669:"dbbd9e76",3757:"bea375d6",3828:"e5615b18",3842:"ff6596ea",3933:"cda87995",3945:"f8518919",3978:"c8dd560b",4004:"ec3b6a32",4097:"eef3f1dd",4105:"702d5d94",4126:"5355b952",4143:"9f804621",4174:"a7c27f4d",4187:"6a04f266",4195:"c4f5d8e4",4220:"437b4e16",4338:"84ede15a",4355:"19ed4d4c",4359:"dc36d550",4363:"f2c21b54",4379:"c662f00a",4385:"e00ac272",4436:"b418feb9",4445:"4d9b9869",4458:"af2ff1b5",4507:"a7b37b86",4537:"1ae2b102",4541:"3e56470e",4566:"694e7470",4620:"48d75399",4634:"54338ffb",4661:"db9d4dae",4666:"f41c4e9d",4672:"43ee4f22",4674:"fea93377",4885:"2462cc91",4909:"f0855ff9",4916:"c1bbdb2a",4933:"08c12c3a",5005:"320c8a05",5011:"7e9389ad",5013:"c41801b5",5049:"e3d2722f",5052:"6116139f",5068:"b7bd3ab3",5084:"196e07e8",5103:"db039c7f",5116:"8d48ec84",5132:"a4c751bb",5157:"d27ae88d",5251:"c78e4f7d",5281:"31bd35e0",5341:"9913464d",5422:"b3719d54",5472:"72b78d4a",5483:"f7acb151",5492:"1882e65d",5526:"0c68fb82",5548:"d6b0148d",5594:"269bc3bb",5645:"2d34559d",5651:"9e2042f5",5704:"b9b4ec9e",5752:"73a7060c",5806:"a8f54fb1",5821:"571c8793",5933:"e77078a1",5969:"7dcec981",5989:"fbf58567",6060:"556d3f96",6104:"c7c5ba1a",6140:"32e8da05",6220:"d01f45b7",6253:"a29dc56e",6255:"452ad91d",6285:"f10f9928",6294:"bbba852d",6298:"3611be04",6312:"dbc4065c",6325:"3002ebf4",6357:"43cda9e8",6373:"ceaa29cb",6482:"49816380",6579:"b3558274",6585:"13b7bafa",6598:"ca9fe671",6673:"af3013e9",6689:"f2521980",6730:"73617284",6779:"c5d9e474",6812:"5193d8a9",6827:"279fb1d6",6918:"29a046f3",6920:"ccc1222e",6946:"4642ab5c",7022:"543610b9",7051:"240a6b01",7061:"feea648c",7202:"4a8eb552",7211:"f44ed8f8",7270:"90a09ad1",7288:"6f1a81b8",7313:"db3d6c4d",7368:"bb8b1738",7388:"bd701914",7466:"a5b3561d",7518:"7266120e",7540:"a2d5a6d8",7584:"98a431f4",7633:"b940de31",7654:"c07c2447",7683:"cc44e8fd",7714:"591eca19",7738:"113faa87",7778:"41871d53",7799:"8b670b2b",7823:"9e76b49d",7830:"15985664",7837:"0a3f0c9b",7858:"d6a97e7e",7908:"33bbe353",7918:"17896441",7920:"1a4e3797",7932:"26dc7bd1",7940:"ad762f86",7961:"a2800a5b",8034:"fecdcc34",8049:"a87fd2e4",8067:"69b97ecd",8086:"b133b626",8115:"8247eba8",8132:"b0d34550",8138:"694672cd",8139:"386099fc",8158:"dc0f9344",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8343:"ad5a1373",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",8648:"71ed82b9",8702:"a74a59a0",8757:"83d4859f",8791:"ab138bf8",8831:"3bd77df4",8842:"a9f58d5b",8855:"d3a753cf",8860:"766a10e1",8866:"98a30fd8",8876:"31c99aa1",8901:"b48c599b",8913:"706277b1",8951:"e495ca4d",8956:"2e944e01",8970:"a44b8423",9009:"afddde9d",9023:"c97a416e",9062:"b38833d4",9071:"60738e36",9112:"a4b71220",9217:"64c7e1cc",9226:"2f3b630e",9315:"6d2ffbf3",9323:"131c7f55",9351:"36051dfe",9478:"c7a2145e",9514:"1be78505",9567:"c977dfe8",9596:"390ca211",9626:"32c9742a",9764:"dc776cbc",9771:"89a76fd2",9779:"cd144357",9790:"7ffd66a6",9802:"1e15616a",9806:"51fbc2c9",9817:"14eb3368",9856:"06597bc8",9905:"b0cb055f",9962:"dd2fa029",9977:"3104d5d8",9988:"09dda9ae",9993:"482bfb5c"}[e]||e)+"."+{1:"5563b650",6:"d3b10840",12:"9f327517",43:"6ed5990d",53:"494e1739",63:"3da4421b",150:"de13d987",192:"da9e04e3",217:"0102c432",230:"abeb61ae",289:"6adb36ed",315:"e1c7c166",356:"220d0258",502:"8957ccb4",509:"1c31983f",537:"0c427b12",576:"f33f5486",587:"7c7a1647",609:"68d23dbf",648:"1982160f",657:"7a85ba0e",660:"55d26161",690:"b7ee2ac4",691:"1d230a3d",740:"fe6b97e6",810:"bbdf17b5",948:"000b418b",1062:"1b3f4042",1083:"98434a72",1090:"432ead1f",1125:"a5050b17",1207:"7916f6ea",1211:"84a813cb",1213:"6182a0a2",1239:"b22972a0",1288:"4a133ff1",1299:"7dda7011",1306:"efa9e91d",1372:"44b4d9b2",1415:"5d52c06a",1419:"749e21fb",1426:"ad86846c",1446:"2265d608",1451:"d8b23a48",1453:"ab82db6a",1486:"9712076d",1494:"31e0a0f5",1506:"c61263c9",1529:"08567223",1585:"e1ec66d3",1598:"c14606e3",1635:"4344e2ee",1678:"6b0f0d25",1686:"ce7ae0b6",1703:"a7850cef",1713:"8e84c927",1723:"71e5f4cd",1748:"23865353",1759:"8754c4e5",1760:"526a2dff",1774:"1c405b46",1786:"b942951f",1825:"23728930",1872:"bb402936",1953:"e4392cf0",1957:"dac895d5",1966:"8193149d",1975:"4b60acbf",1979:"6d282955",2008:"484e4748",2042:"8bcdb8f5",2117:"8df821d7",2119:"39f85d55",2136:"8a33bec7",2169:"b7063abf",2174:"b4eb1826",2194:"66f8b87d",2242:"62be819f",2248:"a887987c",2261:"2f74827e",2327:"393fd266",2354:"da09f31b",2377:"1b2524e6",2399:"883fda68",2507:"26692215",2508:"c42132b5",2552:"6484aed3",2581:"a15c2e8a",2609:"d3ff82a5",2633:"abda080c",2635:"830edb6d",2664:"d52d8b8f",2665:"b3e97431",2677:"c8e81209",2704:"c83746c5",2712:"a44e2c30",2749:"04ec3c5b",2754:"b000525e",2758:"c08d97f9",2794:"0f0123ed",2813:"62c26829",2884:"9039bbf0",2909:"b7a3b117",2914:"459b445d",2949:"7738f0eb",2969:"1ec9198c",3029:"efe4503a",3066:"2d6ba895",3091:"872881f4",3132:"52079c42",3262:"920a917c",3274:"94f077ac",3330:"f8f9d28c",3332:"59059207",3348:"32c50c47",3356:"44e16802",3375:"186f73f5",3451:"ea6a7703",3452:"d18a3afc",3484:"2f90373b",3495:"6382f4fa",3513:"0499e4ef",3518:"8601616d",3531:"505d5e2c",3554:"6dc12371",3576:"7a6f241f",3599:"d5398d39",3620:"70c09097",3643:"c2dd3728",3665:"fb0ea919",3667:"87ba95d0",3668:"b34aa74c",3669:"ffd12b05",3757:"00a4f022",3828:"d39d947c",3842:"fc33edf9",3933:"b4da0711",3945:"39609227",3978:"72bf9cde",4004:"47637506",4097:"7796be62",4105:"5e24a8e9",4126:"11f3acc9",4143:"082476a6",4174:"d074f050",4187:"96b9c920",4195:"cfe133f9",4220:"446b5536",4338:"910fa212",4355:"30ff1600",4359:"c5923bbf",4363:"c101350a",4379:"9cbf1426",4385:"960c00ca",4436:"694a4a50",4445:"8f3d0e24",4458:"ea71f5fb",4507:"9e482a81",4537:"bfbc8d9f",4541:"978ae83c",4566:"ab0d60ad",4620:"97758654",4634:"7815e94c",4661:"8b988bf0",4666:"abf3d2b4",4672:"0175aaca",4674:"32cbd63b",4885:"ccc00357",4909:"3ae4713d",4916:"4b3a7688",4933:"3715dd81",4972:"2c004fcc",5005:"d567e8ec",5011:"469e67df",5013:"63672e85",5049:"4fc07d07",5052:"add29571",5068:"e3d0ecc4",5084:"26c3888d",5103:"3f268ad3",5116:"606cacfa",5132:"9a303e8e",5157:"3f697f28",5251:"4da5a1cf",5281:"6761b31b",5341:"6a468aaa",5422:"a5cba597",5424:"078ba5d2",5472:"774516e3",5483:"a7bdc5db",5492:"7b10a32b",5526:"35eee94b",5548:"f7eecc13",5594:"3f595e2a",5645:"664559d6",5651:"8a76a52f",5704:"70bd0ba6",5752:"a1f35bcd",5806:"1b9a2586",5821:"c070cc17",5933:"79294ec8",5969:"d61af9db",5989:"0b1cb12b",6060:"e63c3157",6104:"cfc55807",6140:"4185286c",6220:"53ca5510",6253:"50057d87",6255:"8509f60e",6285:"78ce35a2",6294:"b077023f",6298:"56d411dd",6312:"da0c23f7",6316:"24db8bc9",6325:"676f44c8",6357:"4fb9d9ea",6373:"b8a24443",6482:"502a0b67",6495:"93b21474",6579:"0a500dc3",6585:"19cd9b62",6598:"4350b7cd",6673:"4c461033",6689:"6f4d26d7",6730:"51915769",6779:"407834dd",6812:"1d1abd61",6827:"051de704",6918:"61dac2e1",6920:"e1b6bdcd",6945:"96d36007",6946:"92f77118",7022:"fea426f7",7051:"db5e2280",7061:"dd334eb5",7202:"d8da9a6c",7211:"81eed936",7270:"cb231451",7288:"c9a5db0f",7313:"ec5e7fed",7368:"db7c6a07",7388:"2ec93c74",7466:"6c38d255",7518:"01f3e145",7540:"9bb29901",7584:"75defa39",7633:"4175c224",7654:"50c30d85",7683:"2d51b550",7714:"af3f4c70",7724:"2906ce0b",7738:"3524d0b4",7778:"8da5b4da",7799:"b308c638",7823:"12af6f15",7830:"a2703576",7837:"d3f6c850",7858:"f9862ed2",7908:"3c96efa3",7918:"916bc4d8",7920:"16d7152d",7932:"92bc3bec",7940:"4c1e9475",7961:"3c189a2f",8034:"dca0d1af",8049:"54678671",8067:"0606a87b",8086:"e5b42fd0",8115:"2ebb714e",8132:"7bb8f424",8138:"43973274",8139:"5c4f2962",8158:"bb13e2eb",8178:"62f5ed0b",8191:"4e7d3abd",8215:"775d309b",8236:"2798771b",8270:"f30c3f90",8343:"2290a31c",8355:"64ab0bfc",8361:"74bdcabf",8444:"b4852ff5",8609:"d2d709e7",8648:"39950abe",8702:"fae2510e",8757:"4f1ee155",8791:"6089055c",8831:"d0fa10f7",8842:"afbf5b86",8855:"142c7fbf",8860:"91b3db71",8866:"4bdda915",8876:"a30609d2",8894:"ba661129",8901:"cc3ae736",8913:"95810b09",8951:"e9b45337",8956:"df7dec1a",8970:"2ffda527",9009:"d20693f7",9023:"44d59de8",9062:"64303d26",9071:"4f0a2b67",9112:"38b794db",9217:"4b3d9e10",9226:"9d927409",9315:"d5006aa3",9323:"a1b62b7f",9351:"1de7a366",9478:"ce7ecbd2",9487:"48bf43fe",9514:"693800c6",9567:"ced4063c",9596:"5b750b89",9626:"b43c6d01",9764:"f44c5e05",9771:"be039c22",9779:"e397e514",9790:"eca8e014",9802:"11684b0f",9806:"c3977137",9817:"5ba13cdf",9856:"99a149db",9905:"3e1ce1bd",9962:"a3138a8e",9977:"f5ab6a05",9988:"abbafc27",9993:"7bf6c4e1"}[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",73617284:"6730",74985360:"43",f4fb6e9c:"1","408829bd":"6","1d6d4797":"12","935f2afb":"53","9f319605":"63","77c23c97":"150",f189ca9f:"192",c7a044bb:"217","804b1e9f":"230",bf3ab9de:"289","9528ac88":"315","797239df":"356","2d429218":"502","2e0c35d5":"509","3829cf1d":"537",f52abf29:"576","76efc107":"587",d569989b:"609","4403bb94":"648","386bfe51":"657","387813b8":"660",e4ef088f:"690","145746f5":"691","078895e8":"740","23498fd5":"810",d9a69e3a:"948",f90fa732:"1062","899aadcc":"1083",cfd53ea4:"1090","3184af97":"1125","49ea81bb":"1207","73c3bebc":"1211","25f2bd2a":"1213",f359a251:"1239",fabebe44:"1288","74df6a22":"1299","543c9f0a":"1306",b61f6dc7:"1372","4d76887f":"1415",f750c690:"1419","5136ee31":"1446",f44679e7:"1451","497334c4":"1453","8dd7cee0":"1486",b21dd8a7:"1494",c630d0cd:"1506",ffe9c3c9:"1529","33b0bcab":"1585","7fbac68a":"1598","5db34cd0":"1635",fa343ad1:"1678",f7191335:"1686",a5002e4a:"1703","0eeb7a68":"1713","0df78d26":"1723","987d08ef":"1748",e8522a07:"1759","8081c0c6":"1760","9e6341e5":"1774",d9ef69a7:"1786","48074a08":"1825","78e1e977":"1872","1ed3671a":"1953",df154d69:"1957",f47489cd:"1966",fda65b2b:"1975","0cb62240":"1979","4f031749":"2008",dd32e389:"2042","21877fa5":"2117","6d5c9a28":"2119",ecb495b7:"2136","1646726c":"2169",f2b5c614:"2174","6151e7ce":"2194",f3027c84:"2242",da9f79cb:"2248","333929a0":"2261",efba78c5:"2327","493c7fdf":"2354",f9358c97:"2377","8d3a1bf8":"2399","7c78c461":"2507","918b38b6":"2508","863c4753":"2552","967fa6d4":"2581",db0b42b0:"2609",e2e89062:"2633","0b632434":"2635","9662c81e":"2664",f4130007:"2665",ece9fdae:"2677",f3bde756:"2704",c2c6a3a6:"2712",b906f375:"2749","78868b16":"2754","9e3f6a8a":"2758",feadf832:"2794",d000eb73:"2813","5d69d9d4":"2884",f4200fe5:"2909","2be0d940":"2914","2ea50c63":"2949","979a04e7":"2969","6544ec02":"3029",af40287e:"3066",b0a48d97:"3091","85afe03a":"3132","8a8a7d05":"3262","41f7224c":"3274",e31fc461:"3330","3497b7c6":"3332","7ccc428f":"3348",f14351c1:"3356",d42819bc:"3375","7c138549":"3451","3d1bf5db":"3452","5c90fc9b":"3484",f861e7c0:"3495","41b7b3e8":"3513","59acd71c":"3518","879e564b":"3531",d5909206:"3554","73d1b372":"3576","21899dd2":"3599",f137ce68:"3620",cb9afd28:"3643",f1585bfb:"3665",b0cbc1d4:"3667",b225a2ce:"3668",dbbd9e76:"3669",bea375d6:"3757",e5615b18:"3828",ff6596ea:"3842",cda87995:"3933",f8518919:"3945",c8dd560b:"3978",ec3b6a32:"4004",eef3f1dd:"4097","702d5d94":"4105","5355b952":"4126","9f804621":"4143",a7c27f4d:"4174","6a04f266":"4187",c4f5d8e4:"4195","437b4e16":"4220","84ede15a":"4338","19ed4d4c":"4355",dc36d550:"4359",f2c21b54:"4363",c662f00a:"4379",e00ac272:"4385",b418feb9:"4436","4d9b9869":"4445",af2ff1b5:"4458",a7b37b86:"4507","1ae2b102":"4537","3e56470e":"4541","694e7470":"4566","48d75399":"4620","54338ffb":"4634",db9d4dae:"4661",f41c4e9d:"4666","43ee4f22":"4672",fea93377:"4674","2462cc91":"4885",f0855ff9:"4909",c1bbdb2a:"4916","08c12c3a":"4933","320c8a05":"5005","7e9389ad":"5011",c41801b5:"5013",e3d2722f:"5049","6116139f":"5052",b7bd3ab3:"5068","196e07e8":"5084",db039c7f:"5103","8d48ec84":"5116",a4c751bb:"5132",d27ae88d:"5157",c78e4f7d:"5251","31bd35e0":"5281","9913464d":"5341",b3719d54:"5422","72b78d4a":"5472",f7acb151:"5483","1882e65d":"5492","0c68fb82":"5526",d6b0148d:"5548","269bc3bb":"5594","2d34559d":"5645","9e2042f5":"5651",b9b4ec9e:"5704","73a7060c":"5752",a8f54fb1:"5806","571c8793":"5821",e77078a1:"5933","7dcec981":"5969",fbf58567:"5989","556d3f96":"6060",c7c5ba1a:"6104","32e8da05":"6140",d01f45b7:"6220",a29dc56e:"6253","452ad91d":"6255",f10f9928:"6285",bbba852d:"6294","3611be04":"6298",dbc4065c:"6312","3002ebf4":"6325","43cda9e8":"6357",ceaa29cb:"6373",b3558274:"6579","13b7bafa":"6585",ca9fe671:"6598",af3013e9:"6673",f2521980:"6689",c5d9e474:"6779","5193d8a9":"6812","279fb1d6":"6827","29a046f3":"6918",ccc1222e:"6920","4642ab5c":"6946","543610b9":"7022","240a6b01":"7051",feea648c:"7061","4a8eb552":"7202",f44ed8f8:"7211","90a09ad1":"7270","6f1a81b8":"7288",db3d6c4d:"7313",bb8b1738:"7368",bd701914:"7388",a5b3561d:"7466","7266120e":"7518",a2d5a6d8:"7540","98a431f4":"7584",b940de31:"7633",c07c2447:"7654",cc44e8fd:"7683","591eca19":"7714","113faa87":"7738","41871d53":"7778","8b670b2b":"7799","9e76b49d":"7823","0a3f0c9b":"7837",d6a97e7e:"7858","33bbe353":"7908","1a4e3797":"7920","26dc7bd1":"7932",ad762f86:"7940",a2800a5b:"7961",fecdcc34:"8034",a87fd2e4:"8049","69b97ecd":"8067",b133b626:"8086","8247eba8":"8115",b0d34550:"8132","694672cd":"8138","386099fc":"8139",dc0f9344:"8158","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",ad5a1373:"8343",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609","71ed82b9":"8648",a74a59a0:"8702","83d4859f":"8757",ab138bf8:"8791","3bd77df4":"8831",a9f58d5b:"8842",d3a753cf:"8855","766a10e1":"8860","98a30fd8":"8866","31c99aa1":"8876",b48c599b:"8901","706277b1":"8913",e495ca4d:"8951","2e944e01":"8956",a44b8423:"8970",afddde9d:"9009",c97a416e:"9023",b38833d4:"9062","60738e36":"9071",a4b71220:"9112","64c7e1cc":"9217","2f3b630e":"9226","6d2ffbf3":"9315","131c7f55":"9323","36051dfe":"9351",c7a2145e:"9478","1be78505":"9514",c977dfe8:"9567","390ca211":"9596","32c9742a":"9626",dc776cbc:"9764","89a76fd2":"9771",cd144357:"9779","7ffd66a6":"9790","1e15616a":"9802","51fbc2c9":"9806","14eb3368":"9817","06597bc8":"9856",b0cb055f:"9905",dd2fa029:"9962","3104d5d8":"9977","09dda9ae":"9988","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",230:"804b1e9f",289:"bf3ab9de",315:"9528ac88",356:"797239df",502:"2d429218",509:"2e0c35d5",537:"3829cf1d",576:"f52abf29",587:"76efc107",609:"d569989b",648:"4403bb94",657:"386bfe51",660:"387813b8",690:"e4ef088f",691:"145746f5",740:"078895e8",810:"23498fd5",948:"d9a69e3a",1062:"f90fa732",1083:"899aadcc",1090:"cfd53ea4",1125:"3184af97",1207:"49ea81bb",1211:"73c3bebc",1213:"25f2bd2a",1239:"f359a251",1288:"fabebe44",1299:"74df6a22",1306:"543c9f0a",1372:"b61f6dc7",1415:"4d76887f",1419:"f750c690",1446:"5136ee31",1451:"f44679e7",1453:"497334c4",1486:"8dd7cee0",1494:"b21dd8a7",1506:"c630d0cd",1529:"ffe9c3c9",1585:"33b0bcab",1598:"7fbac68a",1635:"5db34cd0",1678:"fa343ad1",1686:"f7191335",1703:"a5002e4a",1713:"0eeb7a68",1723:"0df78d26",1748:"987d08ef",1759:"e8522a07",1760:"8081c0c6",1774:"9e6341e5",1786:"d9ef69a7",1825:"48074a08",1872:"78e1e977",1953:"1ed3671a",1957:"df154d69",1966:"f47489cd",1975:"fda65b2b",1979:"0cb62240",2008:"4f031749",2042:"dd32e389",2117:"21877fa5",2119:"6d5c9a28",2136:"ecb495b7",2169:"1646726c",2174:"f2b5c614",2194:"6151e7ce",2242:"f3027c84",2248:"da9f79cb",2261:"333929a0",2327:"efba78c5",2354:"493c7fdf",2377:"f9358c97",2399:"8d3a1bf8",2507:"7c78c461",2508:"918b38b6",2552:"863c4753",2581:"967fa6d4",2609:"db0b42b0",2633:"e2e89062",2635:"0b632434",2664:"9662c81e",2665:"f4130007",2677:"ece9fdae",2704:"f3bde756",2712:"c2c6a3a6",2749:"b906f375",2754:"78868b16",2758:"9e3f6a8a",2794:"feadf832",2813:"d000eb73",2884:"5d69d9d4",2909:"f4200fe5",2914:"2be0d940",2949:"2ea50c63",2969:"979a04e7",3029:"6544ec02",3066:"af40287e",3091:"b0a48d97",3132:"85afe03a",3262:"8a8a7d05",3274:"41f7224c",3330:"e31fc461",3332:"3497b7c6",3348:"7ccc428f",3356:"f14351c1",3375:"d42819bc",3451:"7c138549",3452:"3d1bf5db",3484:"5c90fc9b",3495:"f861e7c0",3513:"41b7b3e8",3518:"59acd71c",3531:"879e564b",3554:"d5909206",3576:"73d1b372",3599:"21899dd2",3620:"f137ce68",3643:"cb9afd28",3665:"f1585bfb",3667:"b0cbc1d4",3668:"b225a2ce",3669:"dbbd9e76",3757:"bea375d6",3828:"e5615b18",3842:"ff6596ea",3933:"cda87995",3945:"f8518919",3978:"c8dd560b",4004:"ec3b6a32",4097:"eef3f1dd",4105:"702d5d94",4126:"5355b952",4143:"9f804621",4174:"a7c27f4d",4187:"6a04f266",4195:"c4f5d8e4",4220:"437b4e16",4338:"84ede15a",4355:"19ed4d4c",4359:"dc36d550",4363:"f2c21b54",4379:"c662f00a",4385:"e00ac272",4436:"b418feb9",4445:"4d9b9869",4458:"af2ff1b5",4507:"a7b37b86",4537:"1ae2b102",4541:"3e56470e",4566:"694e7470",4620:"48d75399",4634:"54338ffb",4661:"db9d4dae",4666:"f41c4e9d",4672:"43ee4f22",4674:"fea93377",4885:"2462cc91",4909:"f0855ff9",4916:"c1bbdb2a",4933:"08c12c3a",5005:"320c8a05",5011:"7e9389ad",5013:"c41801b5",5049:"e3d2722f",5052:"6116139f",5068:"b7bd3ab3",5084:"196e07e8",5103:"db039c7f",5116:"8d48ec84",5132:"a4c751bb",5157:"d27ae88d",5251:"c78e4f7d",5281:"31bd35e0",5341:"9913464d",5422:"b3719d54",5472:"72b78d4a",5483:"f7acb151",5492:"1882e65d",5526:"0c68fb82",5548:"d6b0148d",5594:"269bc3bb",5645:"2d34559d",5651:"9e2042f5",5704:"b9b4ec9e",5752:"73a7060c",5806:"a8f54fb1",5821:"571c8793",5933:"e77078a1",5969:"7dcec981",5989:"fbf58567",6060:"556d3f96",6104:"c7c5ba1a",6140:"32e8da05",6220:"d01f45b7",6253:"a29dc56e",6255:"452ad91d",6285:"f10f9928",6294:"bbba852d",6298:"3611be04",6312:"dbc4065c",6325:"3002ebf4",6357:"43cda9e8",6373:"ceaa29cb",6482:"49816380",6579:"b3558274",6585:"13b7bafa",6598:"ca9fe671",6673:"af3013e9",6689:"f2521980",6730:"73617284",6779:"c5d9e474",6812:"5193d8a9",6827:"279fb1d6",6918:"29a046f3",6920:"ccc1222e",6946:"4642ab5c",7022:"543610b9",7051:"240a6b01",7061:"feea648c",7202:"4a8eb552",7211:"f44ed8f8",7270:"90a09ad1",7288:"6f1a81b8",7313:"db3d6c4d",7368:"bb8b1738",7388:"bd701914",7466:"a5b3561d",7518:"7266120e",7540:"a2d5a6d8",7584:"98a431f4",7633:"b940de31",7654:"c07c2447",7683:"cc44e8fd",7714:"591eca19",7738:"113faa87",7778:"41871d53",7799:"8b670b2b",7823:"9e76b49d",7830:"15985664",7837:"0a3f0c9b",7858:"d6a97e7e",7908:"33bbe353",7918:"17896441",7920:"1a4e3797",7932:"26dc7bd1",7940:"ad762f86",7961:"a2800a5b",8034:"fecdcc34",8049:"a87fd2e4",8067:"69b97ecd",8086:"b133b626",8115:"8247eba8",8132:"b0d34550",8138:"694672cd",8139:"386099fc",8158:"dc0f9344",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8343:"ad5a1373",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",8648:"71ed82b9",8702:"a74a59a0",8757:"83d4859f",8791:"ab138bf8",8831:"3bd77df4",8842:"a9f58d5b",8855:"d3a753cf",8860:"766a10e1",8866:"98a30fd8",8876:"31c99aa1",8901:"b48c599b",8913:"706277b1",8951:"e495ca4d",8956:"2e944e01",8970:"a44b8423",9009:"afddde9d",9023:"c97a416e",9062:"b38833d4",9071:"60738e36",9112:"a4b71220",9217:"64c7e1cc",9226:"2f3b630e",9315:"6d2ffbf3",9323:"131c7f55",9351:"36051dfe",9478:"c7a2145e",9514:"1be78505",9567:"c977dfe8",9596:"390ca211",9626:"32c9742a",9764:"dc776cbc",9771:"89a76fd2",9779:"cd144357",9790:"7ffd66a6",9802:"1e15616a",9806:"51fbc2c9",9817:"14eb3368",9856:"06597bc8",9905:"b0cb055f",9962:"dd2fa029",9977:"3104d5d8",9988:"09dda9ae",9993:"482bfb5c"}[e]||e)+"."+{1:"5563b650",6:"d3b10840",12:"9f327517",43:"6ed5990d",53:"494e1739",63:"3da4421b",150:"de13d987",192:"da9e04e3",217:"0102c432",230:"abeb61ae",289:"6adb36ed",315:"e1c7c166",356:"220d0258",502:"8957ccb4",509:"1c31983f",537:"0c427b12",576:"f33f5486",587:"7c7a1647",609:"68d23dbf",648:"1982160f",657:"7a85ba0e",660:"55d26161",690:"b7ee2ac4",691:"1d230a3d",740:"fe6b97e6",810:"bbdf17b5",948:"000b418b",1062:"1b3f4042",1083:"98434a72",1090:"432ead1f",1125:"a5050b17",1207:"7916f6ea",1211:"84a813cb",1213:"6182a0a2",1239:"b22972a0",1288:"4a133ff1",1299:"7dda7011",1306:"efa9e91d",1372:"44b4d9b2",1415:"5d52c06a",1419:"749e21fb",1426:"ad86846c",1446:"2265d608",1451:"d8b23a48",1453:"ab82db6a",1486:"9712076d",1494:"31e0a0f5",1506:"c61263c9",1529:"08567223",1585:"e1ec66d3",1598:"c14606e3",1635:"4344e2ee",1678:"6b0f0d25",1686:"ce7ae0b6",1703:"a7850cef",1713:"8e84c927",1723:"71e5f4cd",1748:"23865353",1759:"8754c4e5",1760:"526a2dff",1774:"1c405b46",1786:"b942951f",1825:"23728930",1872:"bb402936",1953:"e4392cf0",1957:"dac895d5",1966:"8193149d",1975:"4b60acbf",1979:"6d282955",2008:"484e4748",2042:"8bcdb8f5",2117:"8df821d7",2119:"39f85d55",2136:"8a33bec7",2169:"b7063abf",2174:"b4eb1826",2194:"66f8b87d",2242:"62be819f",2248:"a887987c",2261:"2f74827e",2327:"393fd266",2354:"da09f31b",2377:"1b2524e6",2399:"883fda68",2507:"26692215",2508:"c42132b5",2552:"6484aed3",2581:"a15c2e8a",2609:"d3ff82a5",2633:"abda080c",2635:"830edb6d",2664:"d52d8b8f",2665:"b3e97431",2677:"c8e81209",2704:"c83746c5",2712:"a44e2c30",2749:"04ec3c5b",2754:"b000525e",2758:"c08d97f9",2794:"0f0123ed",2813:"62c26829",2884:"9039bbf0",2909:"b7a3b117",2914:"459b445d",2949:"7738f0eb",2969:"1ec9198c",3029:"efe4503a",3066:"2d6ba895",3091:"872881f4",3132:"52079c42",3262:"920a917c",3274:"94f077ac",3330:"f8f9d28c",3332:"59059207",3348:"32c50c47",3356:"44e16802",3375:"186f73f5",3451:"ea6a7703",3452:"d18a3afc",3484:"2f90373b",3495:"6382f4fa",3513:"0499e4ef",3518:"8601616d",3531:"505d5e2c",3554:"6dc12371",3576:"7a6f241f",3599:"d5398d39",3620:"70c09097",3643:"c2dd3728",3665:"fb0ea919",3667:"87ba95d0",3668:"b34aa74c",3669:"ffd12b05",3757:"00a4f022",3828:"d39d947c",3842:"fc33edf9",3933:"b4da0711",3945:"39609227",3978:"72bf9cde",4004:"47637506",4097:"7796be62",4105:"5e24a8e9",4126:"11f3acc9",4143:"082476a6",4174:"d074f050",4187:"96b9c920",4195:"cfe133f9",4220:"446b5536",4338:"910fa212",4355:"30ff1600",4359:"c5923bbf",4363:"c101350a",4379:"9cbf1426",4385:"960c00ca",4436:"694a4a50",4445:"8f3d0e24",4458:"ea71f5fb",4507:"9e482a81",4537:"bfbc8d9f",4541:"978ae83c",4566:"ab0d60ad",4620:"97758654",4634:"7815e94c",4661:"8b988bf0",4666:"abf3d2b4",4672:"0175aaca",4674:"32cbd63b",4885:"ccc00357",4909:"3ae4713d",4916:"4b3a7688",4933:"3715dd81",4972:"2c004fcc",5005:"d567e8ec",5011:"469e67df",5013:"63672e85",5049:"4fc07d07",5052:"add29571",5068:"e3d0ecc4",5084:"26c3888d",5103:"3f268ad3",5116:"606cacfa",5132:"9a303e8e",5157:"3f697f28",5251:"4da5a1cf",5281:"6761b31b",5341:"6a468aaa",5422:"a5cba597",5424:"078ba5d2",5472:"774516e3",5483:"a7bdc5db",5492:"7b10a32b",5526:"35eee94b",5548:"f7eecc13",5594:"3f595e2a",5645:"664559d6",5651:"8a76a52f",5704:"70bd0ba6",5752:"a1f35bcd",5806:"1b9a2586",5821:"c070cc17",5933:"79294ec8",5969:"d61af9db",5989:"0b1cb12b",6060:"e63c3157",6104:"cfc55807",6140:"4185286c",6220:"53ca5510",6253:"50057d87",6255:"8509f60e",6285:"78ce35a2",6294:"b077023f",6298:"56d411dd",6312:"da0c23f7",6316:"24db8bc9",6325:"676f44c8",6357:"4fb9d9ea",6373:"b8a24443",6482:"502a0b67",6495:"93b21474",6579:"0a500dc3",6585:"19cd9b62",6598:"4350b7cd",6673:"4c461033",6689:"6f4d26d7",6730:"51915769",6779:"407834dd",6812:"1d1abd61",6827:"051de704",6918:"61dac2e1",6920:"e1b6bdcd",6945:"96d36007",6946:"92f77118",7022:"fea426f7",7051:"db5e2280",7061:"dd334eb5",7202:"d8da9a6c",7211:"81eed936",7270:"cb231451",7288:"c9a5db0f",7313:"ec5e7fed",7368:"db7c6a07",7388:"2ec93c74",7466:"6c38d255",7518:"01f3e145",7540:"9bb29901",7584:"75defa39",7633:"4175c224",7654:"50c30d85",7683:"2d51b550",7714:"af3f4c70",7724:"2906ce0b",7738:"3524d0b4",7778:"8da5b4da",7799:"b308c638",7823:"12af6f15",7830:"a2703576",7837:"d3f6c850",7858:"f9862ed2",7908:"3c96efa3",7918:"916bc4d8",7920:"16d7152d",7932:"92bc3bec",7940:"cadc1f7d",7961:"3c189a2f",8034:"dca0d1af",8049:"54678671",8067:"0606a87b",8086:"e5b42fd0",8115:"2ebb714e",8132:"7bb8f424",8138:"43973274",8139:"5c4f2962",8158:"bb13e2eb",8178:"62f5ed0b",8191:"4e7d3abd",8215:"775d309b",8236:"2798771b",8270:"f30c3f90",8343:"2290a31c",8355:"64ab0bfc",8361:"74bdcabf",8444:"b4852ff5",8609:"d2d709e7",8648:"39950abe",8702:"fae2510e",8757:"4f1ee155",8791:"6089055c",8831:"d0fa10f7",8842:"afbf5b86",8855:"142c7fbf",8860:"91b3db71",8866:"4bdda915",8876:"a30609d2",8894:"ba661129",8901:"cc3ae736",8913:"95810b09",8951:"e9b45337",8956:"df7dec1a",8970:"2ffda527",9009:"d20693f7",9023:"44d59de8",9062:"64303d26",9071:"4f0a2b67",9112:"38b794db",9217:"4b3d9e10",9226:"26afbc1a",9315:"d5006aa3",9323:"a1b62b7f",9351:"1de7a366",9478:"ce7ecbd2",9487:"48bf43fe",9514:"693800c6",9567:"ced4063c",9596:"5b750b89",9626:"b43c6d01",9764:"f44c5e05",9771:"be039c22",9779:"e397e514",9790:"eca8e014",9802:"11684b0f",9806:"c3977137",9817:"5ba13cdf",9856:"99a149db",9905:"3e1ce1bd",9962:"a3138a8e",9977:"f5ab6a05",9988:"abbafc27",9993:"7bf6c4e1"}[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",73617284:"6730",74985360:"43",f4fb6e9c:"1","408829bd":"6","1d6d4797":"12","935f2afb":"53","9f319605":"63","77c23c97":"150",f189ca9f:"192",c7a044bb:"217","804b1e9f":"230",bf3ab9de:"289","9528ac88":"315","797239df":"356","2d429218":"502","2e0c35d5":"509","3829cf1d":"537",f52abf29:"576","76efc107":"587",d569989b:"609","4403bb94":"648","386bfe51":"657","387813b8":"660",e4ef088f:"690","145746f5":"691","078895e8":"740","23498fd5":"810",d9a69e3a:"948",f90fa732:"1062","899aadcc":"1083",cfd53ea4:"1090","3184af97":"1125","49ea81bb":"1207","73c3bebc":"1211","25f2bd2a":"1213",f359a251:"1239",fabebe44:"1288","74df6a22":"1299","543c9f0a":"1306",b61f6dc7:"1372","4d76887f":"1415",f750c690:"1419","5136ee31":"1446",f44679e7:"1451","497334c4":"1453","8dd7cee0":"1486",b21dd8a7:"1494",c630d0cd:"1506",ffe9c3c9:"1529","33b0bcab":"1585","7fbac68a":"1598","5db34cd0":"1635",fa343ad1:"1678",f7191335:"1686",a5002e4a:"1703","0eeb7a68":"1713","0df78d26":"1723","987d08ef":"1748",e8522a07:"1759","8081c0c6":"1760","9e6341e5":"1774",d9ef69a7:"1786","48074a08":"1825","78e1e977":"1872","1ed3671a":"1953",df154d69:"1957",f47489cd:"1966",fda65b2b:"1975","0cb62240":"1979","4f031749":"2008",dd32e389:"2042","21877fa5":"2117","6d5c9a28":"2119",ecb495b7:"2136","1646726c":"2169",f2b5c614:"2174","6151e7ce":"2194",f3027c84:"2242",da9f79cb:"2248","333929a0":"2261",efba78c5:"2327","493c7fdf":"2354",f9358c97:"2377","8d3a1bf8":"2399","7c78c461":"2507","918b38b6":"2508","863c4753":"2552","967fa6d4":"2581",db0b42b0:"2609",e2e89062:"2633","0b632434":"2635","9662c81e":"2664",f4130007:"2665",ece9fdae:"2677",f3bde756:"2704",c2c6a3a6:"2712",b906f375:"2749","78868b16":"2754","9e3f6a8a":"2758",feadf832:"2794",d000eb73:"2813","5d69d9d4":"2884",f4200fe5:"2909","2be0d940":"2914","2ea50c63":"2949","979a04e7":"2969","6544ec02":"3029",af40287e:"3066",b0a48d97:"3091","85afe03a":"3132","8a8a7d05":"3262","41f7224c":"3274",e31fc461:"3330","3497b7c6":"3332","7ccc428f":"3348",f14351c1:"3356",d42819bc:"3375","7c138549":"3451","3d1bf5db":"3452","5c90fc9b":"3484",f861e7c0:"3495","41b7b3e8":"3513","59acd71c":"3518","879e564b":"3531",d5909206:"3554","73d1b372":"3576","21899dd2":"3599",f137ce68:"3620",cb9afd28:"3643",f1585bfb:"3665",b0cbc1d4:"3667",b225a2ce:"3668",dbbd9e76:"3669",bea375d6:"3757",e5615b18:"3828",ff6596ea:"3842",cda87995:"3933",f8518919:"3945",c8dd560b:"3978",ec3b6a32:"4004",eef3f1dd:"4097","702d5d94":"4105","5355b952":"4126","9f804621":"4143",a7c27f4d:"4174","6a04f266":"4187",c4f5d8e4:"4195","437b4e16":"4220","84ede15a":"4338","19ed4d4c":"4355",dc36d550:"4359",f2c21b54:"4363",c662f00a:"4379",e00ac272:"4385",b418feb9:"4436","4d9b9869":"4445",af2ff1b5:"4458",a7b37b86:"4507","1ae2b102":"4537","3e56470e":"4541","694e7470":"4566","48d75399":"4620","54338ffb":"4634",db9d4dae:"4661",f41c4e9d:"4666","43ee4f22":"4672",fea93377:"4674","2462cc91":"4885",f0855ff9:"4909",c1bbdb2a:"4916","08c12c3a":"4933","320c8a05":"5005","7e9389ad":"5011",c41801b5:"5013",e3d2722f:"5049","6116139f":"5052",b7bd3ab3:"5068","196e07e8":"5084",db039c7f:"5103","8d48ec84":"5116",a4c751bb:"5132",d27ae88d:"5157",c78e4f7d:"5251","31bd35e0":"5281","9913464d":"5341",b3719d54:"5422","72b78d4a":"5472",f7acb151:"5483","1882e65d":"5492","0c68fb82":"5526",d6b0148d:"5548","269bc3bb":"5594","2d34559d":"5645","9e2042f5":"5651",b9b4ec9e:"5704","73a7060c":"5752",a8f54fb1:"5806","571c8793":"5821",e77078a1:"5933","7dcec981":"5969",fbf58567:"5989","556d3f96":"6060",c7c5ba1a:"6104","32e8da05":"6140",d01f45b7:"6220",a29dc56e:"6253","452ad91d":"6255",f10f9928:"6285",bbba852d:"6294","3611be04":"6298",dbc4065c:"6312","3002ebf4":"6325","43cda9e8":"6357",ceaa29cb:"6373",b3558274:"6579","13b7bafa":"6585",ca9fe671:"6598",af3013e9:"6673",f2521980:"6689",c5d9e474:"6779","5193d8a9":"6812","279fb1d6":"6827","29a046f3":"6918",ccc1222e:"6920","4642ab5c":"6946","543610b9":"7022","240a6b01":"7051",feea648c:"7061","4a8eb552":"7202",f44ed8f8:"7211","90a09ad1":"7270","6f1a81b8":"7288",db3d6c4d:"7313",bb8b1738:"7368",bd701914:"7388",a5b3561d:"7466","7266120e":"7518",a2d5a6d8:"7540","98a431f4":"7584",b940de31:"7633",c07c2447:"7654",cc44e8fd:"7683","591eca19":"7714","113faa87":"7738","41871d53":"7778","8b670b2b":"7799","9e76b49d":"7823","0a3f0c9b":"7837",d6a97e7e:"7858","33bbe353":"7908","1a4e3797":"7920","26dc7bd1":"7932",ad762f86:"7940",a2800a5b:"7961",fecdcc34:"8034",a87fd2e4:"8049","69b97ecd":"8067",b133b626:"8086","8247eba8":"8115",b0d34550:"8132","694672cd":"8138","386099fc":"8139",dc0f9344:"8158","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",ad5a1373:"8343",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609","71ed82b9":"8648",a74a59a0:"8702","83d4859f":"8757",ab138bf8:"8791","3bd77df4":"8831",a9f58d5b:"8842",d3a753cf:"8855","766a10e1":"8860","98a30fd8":"8866","31c99aa1":"8876",b48c599b:"8901","706277b1":"8913",e495ca4d:"8951","2e944e01":"8956",a44b8423:"8970",afddde9d:"9009",c97a416e:"9023",b38833d4:"9062","60738e36":"9071",a4b71220:"9112","64c7e1cc":"9217","2f3b630e":"9226","6d2ffbf3":"9315","131c7f55":"9323","36051dfe":"9351",c7a2145e:"9478","1be78505":"9514",c977dfe8:"9567","390ca211":"9596","32c9742a":"9626",dc776cbc:"9764","89a76fd2":"9771",cd144357:"9779","7ffd66a6":"9790","1e15616a":"9802","51fbc2c9":"9806","14eb3368":"9817","06597bc8":"9856",b0cb055f:"9905",dd2fa029:"9962","3104d5d8":"9977","09dda9ae":"9988","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 - + @@ -37,7 +37,7 @@ development. The program aims to enable your team to tap into Polkadot’s ecosystem of resources and bring your product into production while contributing to feedback for Polkadot’s ecosystem.

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

- + \ No newline at end of file diff --git a/docs/ambassadors.html b/docs/ambassadors.html index b24d365dcdb1..3bcbf2d883b0 100644 --- a/docs/ambassadors.html +++ b/docs/ambassadors.html @@ -19,7 +19,7 @@ - + @@ -28,7 +28,7 @@ the approval of Polkadot OpenGov referenda 487.

If you are enthusiastic about Polkadot and Web3 and are willing to help the community grow, you can join the program and receive funding for hosting events, gain access to 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
- + \ No newline at end of file diff --git a/docs/apps-index.html b/docs/apps-index.html index 3a4712efe173..44e9af902856 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 620f1e965074..650ae6b54b4c 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-archive-index.html b/docs/build-archive-index.html index 478508a0f2b8..3baa2e183d75 100644 --- a/docs/build-archive-index.html +++ b/docs/build-archive-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/build-client-index.html b/docs/build-client-index.html index 2ab5820eb4e9..da155557e9ea 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-client-side.html b/docs/build-client-side.html index 3ff05b593dbc..b40d1f030052 100644 --- a/docs/build-client-side.html +++ b/docs/build-client-side.html @@ -19,7 +19,7 @@ - + @@ -72,7 +72,7 @@ specifically the documentation on deploying Polkadot dApp on decentralized storage. You can get started with Filebase by signing up here.

- + \ No newline at end of file diff --git a/docs/build-dapp.html b/docs/build-dapp.html index 4536a1c14ac8..e81384e2b39e 100644 --- a/docs/build-dapp.html +++ b/docs/build-dapp.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,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 89614be708dd..7d4eca9dfd89 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 180723ac80be..517b4d441d47 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 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

Resources

- + \ No newline at end of file diff --git a/docs/build-guides-coretime-start.html b/docs/build-guides-coretime-start.html index 89062a5e7215..3d7b64b9ae75 100644 --- a/docs/build-guides-coretime-start.html +++ b/docs/build-guides-coretime-start.html @@ -19,7 +19,7 @@ - + @@ -49,7 +49,7 @@ Substrate parachain runtime guide.

Polkadot SDK Parachain Template

If you wish to the Polkadot SDK's Parachain template, please follow the Template to Core guide.

- + \ No newline at end of file diff --git a/docs/build-guides-coretime-troubleshoot.html b/docs/build-guides-coretime-troubleshoot.html index bcd3f17b4661..73c08ac48572 100644 --- a/docs/build-guides-coretime-troubleshoot.html +++ b/docs/build-guides-coretime-troubleshoot.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,7 @@ term now. They refer to what are now known as on-demand parachains. Although they be references in various places through PolkadotJS, docs, or other UIs, really we only have two types of parachain: on-demand parachains, and parachains which use bulk coretime.


- + \ No newline at end of file diff --git a/docs/build-guides-install-deps.html b/docs/build-guides-install-deps.html index 234c3cfc05bf..7cf02f1c18a8 100644 --- a/docs/build-guides-install-deps.html +++ b/docs/build-guides-install-deps.html @@ -19,7 +19,7 @@ - + @@ -78,7 +78,7 @@ by running the following command:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Follow the prompts displayed to proceed with a default installation.

  • Update your current shell to include Cargo by running the following command:

    source ~/.cargo/env
  • Verify your installation by running the following command:

    rustc --version
  • Configure the Rust toolchain to use the latest stable version as the default toolchain by running the following commands:

    rustup default stable
    rustup update
  • Add the nightly version of the toolchain and the nightly WebAssembly (wasm) target to your development environment by running the following commands:

    rustup update nightly
    rustup target add wasm32-unknown-unknown --toolchain nightly
  • Verify your installation here.

  • Verifying Installation

    Verify the configuration of your development environment by running the following command:

    rustup show
    rustup +nightly show

    The command displays output similar to the following:

    # rustup show

    active toolchain
    ----------------

    stable-x86_64-unknown-linux-gnu (default)
    rustc 1.61.0 (fe5b13d68 2022-05-18)

    # rustup +nightly show

    active toolchain
    ----------------

    nightly-x86_64-unknown-linux-gnu (overridden by +toolchain on the command line)
    rustc 1.63.0-nightly (e7144
    - + \ No newline at end of file diff --git a/docs/build-guides-template-basic.html b/docs/build-guides-template-basic.html index be5d5835d6b3..8dfd3f8e94ae 100644 --- a/docs/build-guides-template-basic.html +++ b/docs/build-guides-template-basic.html @@ -19,7 +19,7 @@ - + @@ -82,7 +82,7 @@ for doing so:

    1. Head to General > Cross Chain Transfer on the right, and transfer 10 ROC:

    Region X cross chain transfer

    1. Sign the transaction with Polkadot.js. If all goes well, you should see the balance update in the upper right:

    Region X cross chain transfer

    1. Connect your wallet and make sure you select Rococo as your network:

    Connect your wallet to RegionX

    1. Click Purchase a Core on the left:

    GMcdatDW8AEC8kh

    1. In the lower right, click "Purchase Core":

    Purchase a core

    1. Go to My Regions, and click to select your region, then click Assign on the right side:

    Select and assign region

    1. Click Add Task, and input your ParaId along with a name for your chain:

    Add a new task

    1. Select your task, and select Provisional Assignment, and sign using Polkadot JS:

    Assign the core

    1. Once the transaction is confirmed, provided everything is synced and your collator is running, you should see blocks being persistently created as they were with the on-demand extrinsic:

    GMcdatDW8AEC8kh

    What's Next?

    Now that you can launch a layer one blockchain, the possibilities are endless:

    - + \ No newline at end of file diff --git a/docs/build-hackathon.html b/docs/build-hackathon.html index 4de052645819..44c7a9eee03e 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 50973dcfae0d..1060bf025822 100644 --- a/docs/build-hrmp-channels.html +++ b/docs/build-hrmp-channels.html @@ -19,7 +19,7 @@ - + @@ -62,7 +62,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 247f0dd09f13..9644ebecfdec 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 f96ddccf1662..0f62dc5eacfe 100644 --- a/docs/build-integrate-assets.html +++ b/docs/build-integrate-assets.html @@ -19,7 +19,7 @@ - + @@ -137,7 +137,7 @@ 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 ddb2f76fdab2..54579f7025b8 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 c8e06d9505a6..9208f77faccf 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-overview.html b/docs/build-network-overview.html index ab549d52ddca..6cf3af201347 100644 --- a/docs/build-network-overview.html +++ b/docs/build-network-overview.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,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 337065e40ebb..e7cf6b35682d 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 0bd249d43861..ed84a261eed9 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 906691bc880d..f4f76564e161 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 799ea06970b6..3da2551bfff0 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 b98aa2248bbf..e3adaabbf6ca 100644 --- a/docs/build-pdk.html +++ b/docs/build-pdk.html @@ -19,7 +19,7 @@ - + @@ -182,7 +182,7 @@ deprecated and parachains can purchase coretime to produce blocks continuously or on-demand.

    Resources

    - + \ No newline at end of file diff --git a/docs/build-protocol-index.html b/docs/build-protocol-index.html index b2d300894517..3aa07262648f 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 3f492f0ada5f..cbdf23dc2507 100644 --- a/docs/build-protocol-info.html +++ b/docs/build-protocol-info.html @@ -19,7 +19,7 @@ - + @@ -127,7 +127,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 e0eac4461d7d..612e3eda7e7f 100644 --- a/docs/build-smart-contracts.html +++ b/docs/build-smart-contracts.html @@ -19,7 +19,7 @@ - + @@ -148,7 +148,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 3a4d4e250d1f..9353cc6d3bbf 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 35a29717c982..2f62fa2a77ff 100644 --- a/docs/build-tools-index.html +++ b/docs/build-tools-index.html @@ -19,7 +19,7 @@ - + @@ -115,7 +115,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 4e82b6238308..c04a85c1c24e 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/community-index.html b/docs/community-index.html index e7586a3ed631..93212e515028 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 c731890957e5..fba2a87d4c1e 100644 --- a/docs/community.html +++ b/docs/community.html @@ -19,7 +19,7 @@ - + @@ -65,7 +65,7 @@ Discover thriving communities and participate in engaging campaigns.
  • DotAppStore - Discover featured projects and apps upvoted by the Polkadot community.
  • Awesome Dot - community curated resources, projects, and learning material about the Polkadot and Kusama ecosystems.
  • - + \ No newline at end of file diff --git a/docs/contributing.html b/docs/contributing.html index 42a945bd0d72..a7eb930f21e8 100644 --- a/docs/contributing.html +++ b/docs/contributing.html @@ -19,7 +19,7 @@ - + @@ -51,7 +51,7 @@ your local copy with npx lint-staged, but for simplicity we also have a bot which runs this for us in your PRs.

    Heritage

    This document is based on the Level contribution guidelines.


    - + \ No newline at end of file diff --git a/docs/contributors.html b/docs/contributors.html index 449c2ade55bf..9c4faf702e8c 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 403ea940dfa7..f3b1a35d6a5b 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 7db468f7ae02..a6ea2c4b8399 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/decentralized-voices.html b/docs/decentralized-voices.html index 741a6c665180..e08274e50703 100644 --- a/docs/decentralized-voices.html +++ b/docs/decentralized-voices.html @@ -19,7 +19,7 @@ - + @@ -56,7 +56,7 @@ dedicated community members to shape the future of the Polkadot ecosystem. For more detailed information, see the original Medium article.

    - + \ No newline at end of file diff --git a/docs/dev-heroes.html b/docs/dev-heroes.html index 2592449379f9..4be9ad889c67 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 bdec48c736ec..a15bb5a3f4b4 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 34953d4e112c..8eed920868ce 100644 --- a/docs/faq.html +++ b/docs/faq.html @@ -19,7 +19,7 @@ - + @@ -203,7 +203,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 4503871e3a4b..199a0058af32 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/general/dune-analytics.html b/docs/general/dune-analytics.html index 67b02c4a4249..26dcd30cbce9 100644 --- a/docs/general/dune-analytics.html +++ b/docs/general/dune-analytics.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/general/dune-analytics/acala-dashboards.html b/docs/general/dune-analytics/acala-dashboards.html index 72f818900a1c..ea7afaff669f 100644 --- a/docs/general/dune-analytics/acala-dashboards.html +++ b/docs/general/dune-analytics/acala-dashboards.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ queries. You can use the following DuneSQL queries as examples:

    Acala List of Assets
    WITH
    decimals_for_each_symbol AS (
    SELECT
    symbol,
    MAX(decimals) AS decimals
    FROM
    acala.transfers
    WHERE
    symbol IS NOT NULL
    GROUP BY
    symbol
    )
    SELECT
    b.asset,
    b.symbol,
    d.decimals
    FROM
    acala.balances b
    LEFT JOIN decimals_for_each_symbol d ON b.symbol = d.symbol
    GROUP BY
    b.asset,
    b.symbol,
    d.decimals
    ORDER BY
    SUM(b.free + b.reserved + b.misc_frozen + b.frozen) DESC

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/assethub-dashboards.html b/docs/general/dune-analytics/assethub-dashboards.html index 27b034d8f236..714641109b0f 100644 --- a/docs/general/dune-analytics/assethub-dashboards.html +++ b/docs/general/dune-analytics/assethub-dashboards.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ queries. You can use the following DuneSQL queries as examples:

    Sum of USDC in Polkadot Parachains
    SELECT
    *
    FROM
    "query_3526956(asset_id='1984')" -- AssetHub Sum of Stablecoin on Each Chain by Time
    WHERE
    not chain_name = ''

    Query result:

    Visualized result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/astar-dashboards.html b/docs/general/dune-analytics/astar-dashboards.html index ee408d19a826..20a1ba0606db 100644 --- a/docs/general/dune-analytics/astar-dashboards.html +++ b/docs/general/dune-analytics/astar-dashboards.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ queries. You can use the following DuneSQL queries as examples:

    Astar EVM Executed
    SELECT
    block_number, extrinsic_id, event_id, extrinsic_hash, section, method,
    json_extract_scalar(data, '$[0]') as tx_from,
    json_extract_scalar(data, '$[1]') as tx_to,
    json_extract_scalar(data, '$[2]') as tx_hash,
    json_extract(data, '$[3]') as tx_success
    FROM
    astar.events
    WHERE
    block_time >= TIMESTAMP '2024-02-13 00:00:00' and (section = 'ethereum' and method = 'Executed')
    limit 10000;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/bifrost-dashboards.html b/docs/general/dune-analytics/bifrost-dashboards.html index 27cf13d1ce9e..2541a1d73867 100644 --- a/docs/general/dune-analytics/bifrost-dashboards.html +++ b/docs/general/dune-analytics/bifrost-dashboards.html @@ -19,7 +19,7 @@ - + @@ -37,7 +37,7 @@ maintain precision.

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/bridgehub-dashboards.html b/docs/general/dune-analytics/bridgehub-dashboards.html index 41bb8edeb9c1..f053443cbf0c 100644 --- a/docs/general/dune-analytics/bridgehub-dashboards.html +++ b/docs/general/dune-analytics/bridgehub-dashboards.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ queries. You can use the following DuneSQL queries as examples:

    Bridgehub and Kusama Message Trends
    WITH
    transactions AS (
    SELECT
    CASE
    WHEN ROW_NUMBER() OVER (
    PARTITION BY
    "from",
    "to",
    "send_time"
    ORDER BY
    "send_time"
    ) % 2 = 1 THEN "from"
    ELSE "to"
    END AS direction,
    date_trunc('month', "send_time") as month
    FROM
    query_3816910
    ),
    polkadot_to_kusama AS (
    SELECT
    month,
    COUNT(*) as count_polkadot_to_kusama
    FROM
    transactions
    WHERE
    direction = 'polkadot'
    GROUP BY
    month
    ),
    kusama_to_polkadot AS (
    SELECT
    month,
    COUNT(*) as count_kusama_to_polkadot
    FROM
    transactions
    WHERE
    direction = 'kusama'
    GROUP BY
    month
    ),
    all_polkadot_to_kusama AS (
    SELECT
    'for_join' as "for_join",
    COUNT(*) as total_count_polkadot_to_kusama
    FROM
    transactions
    WHERE
    direction = 'polkadot'
    ),
    all_kusama_to_polkadot AS (
    SELECT
    'for_join' as "for_join",
    COUNT(*) as total_count_kusama_to_polkadot
    FROM
    transactions
    WHERE
    direction = 'kusama'
    ),
    monthly_result as (
    SELECT
    coalesce(
    polkadot_to_kusama.month,
    kusama_to_polkadot.month
    ) as month,
    coalesce(count_polkadot_to_kusama, 0) as count_polkadot_to_kusama,
    coalesce(count_kusama_to_polkadot, 0) as count_kusama_to_polkadot,
    'for_join' as "for_join"
    FROM
    polkadot_to_kusama
    FULL OUTER JOIN kusama_to_polkadot ON polkadot_to_kusama.month = kusama_to_polkadot.month
    ORDER BY
    month
    )
    SELECT
    monthly_result.month,
    monthly_result.count_polkadot_to_kusama,
    monthly_result.count_kusama_to_polkadot,
    all_polkadot_to_kusama.total_count_polkadot_to_kusama,
    all_kusama_to_polkadot.total_count_kusama_to_polkadot
    FROM
    monthly_result
    LEFT JOIN all_polkadot_to_kusama on monthly_result.for_join = all_polkadot_to_kusama.for_join
    LEFT JOIN all_kusama_to_polkadot on monthly_result.for_join = all_kusama_to_polkadot.for_join

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/centrifuge-dashboards.html b/docs/general/dune-analytics/centrifuge-dashboards.html index 6bc8d768aefa..c120e2d85e5b 100644 --- a/docs/general/dune-analytics/centrifuge-dashboards.html +++ b/docs/general/dune-analytics/centrifuge-dashboards.html @@ -19,7 +19,7 @@ - + @@ -46,7 +46,7 @@ maintain precision.

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/collectives-dashboards.html b/docs/general/dune-analytics/collectives-dashboards.html index e8957f21a216..01876a5b54a6 100644 --- a/docs/general/dune-analytics/collectives-dashboards.html +++ b/docs/general/dune-analytics/collectives-dashboards.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ materialized queries. You can use the following DuneSQL queries as examples:

    Collectives Referenda Types
    WITH types AS (
    SELECT
    block_time,
    JSON_EXTRACT_SCALAR(params, '$.proposal.lookup.hash') AS lookup,
    JSON_EXTRACT_SCALAR(params, '$.proposal_origin.fellowshipOrigins') AS fellowshipOrigins
    FROM
    collectives.extrinsics
    WHERE
    section = 'fellowshipReferenda'
    AND method = 'submit'
    AND JSON_EXTRACT_SCALAR(params, '$.proposal.lookup.hash') IS NOT NULL
    )
    SELECT
    JSON_EXTRACT_SCALAR(data, '$[0]') AS r_id,
    JSON_EXTRACT_SCALAR(data, '$[2].lookup.hash') AS lookup,
    COALESCE(types.fellowshipOrigins, 'Fellows') AS types
    FROM
    collectives.events
    LEFT JOIN types ON JSON_EXTRACT_SCALAR(data, '$[2].lookup.hash') = types.lookup
    WHERE
    method = 'Submitted'
    AND JSON_EXTRACT_SCALAR(data, '$[2].lookup.hash') IS NOT NULL;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/coretime-dashboards.html b/docs/general/dune-analytics/coretime-dashboards.html index 1c3a9100702f..6aac458a5922 100644 --- a/docs/general/dune-analytics/coretime-dashboards.html +++ b/docs/general/dune-analytics/coretime-dashboards.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ queries. You can use the following DuneSQL queries as examples:

    Kusama Coretime Core Statistics
    WITH
    core_sta as (
    SELECT
    block_time,
    get_href (
    'https://nodle.subscan.io/extrinsic/' || cast(extrinsic_id as VARCHAR),
    extrinsic_id
    ) as extrinsics_url,
    extrinsic_id,
    CAST(JSON_EXTRACT_SCALAR(data, '$[0]') AS BIGINT) as sale_start,
    CAST(JSON_EXTRACT_SCALAR(data, '$[1]') AS BIGINT) as leadin_length,
    CAST(JSON_EXTRACT_SCALAR(data, '$[2]') AS BIGINT) / pow(10, 12) as start_price,
    CAST(JSON_EXTRACT_SCALAR(data, '$[3]') AS BIGINT) / pow(10, 12) as regular_price,
    CAST(JSON_EXTRACT_SCALAR(data, '$[4]') AS BIGINT) as region_begin,
    CAST(JSON_EXTRACT_SCALAR(data, '$[5]') AS BIGINT) as region_end,
    CAST(JSON_EXTRACT_SCALAR(data, '$[6]') AS BIGINT) as ideal_cores_sold,
    CAST(JSON_EXTRACT_SCALAR(data, '$[7]') AS BIGINT) as cores_offered,
    CAST(
    ROW_NUMBER() OVER (
    ORDER BY
    block_time ASC
    ) AS BIGINT
    ) AS sale_round
    FROM
    coretime_kusama.events
    WHERE
    section = 'broker'
    AND method = 'SaleInitialized'
    )
    SELECT
    *,
    get_href (
    'https://dune.com/substrate/kusama-coretime-sales-history?sale_round=' || cast(sale_round as VARCHAR),
    cast(sale_round as VARCHAR)
    ) as sale_round_url
    FROM
    core_sta
    ORDER BY
    block_time DESC

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/energywebx-dashboards.html b/docs/general/dune-analytics/energywebx-dashboards.html index 0f654dab4a07..80fb8413f91f 100644 --- a/docs/general/dune-analytics/energywebx-dashboards.html +++ b/docs/general/dune-analytics/energywebx-dashboards.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ queries. You can use the following DuneSQL queries as examples:

    EnergyWebX Token Lifted & Lowered
    WITH
    lift AS (
    SELECT
    date_trunc('day', block_time) AS day,
    SUM(
    CAST(json_extract_scalar(data, '$[1]') AS double) / POWER(10, 18)
    ) AS amount,
    'AVTLifted' AS method
    FROM
    energywebx.events
    WHERE
    method = 'AVTLifted'
    GROUP BY
    date_trunc('day', block_time)
    ),
    lower AS (
    SELECT
    date_trunc('day', block_time) AS day,
    SUM(
    CAST(json_extract_scalar(data, '$[2]') AS double) / POWER(10, 18)
    ) AS amount,
    'AVTLowered' AS method
    FROM
    energywebx.events
    WHERE
    method = 'AvtLowered'
    GROUP BY
    date_trunc('day', block_time)
    )
    SELECT
    *
    FROM
    lift
    UNION ALL
    SELECT
    *
    FROM
    lower;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/frequency-dashboards.html b/docs/general/dune-analytics/frequency-dashboards.html index 0cce653df54a..81afb1311241 100644 --- a/docs/general/dune-analytics/frequency-dashboards.html +++ b/docs/general/dune-analytics/frequency-dashboards.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ queries. You can use the following DuneSQL queries as examples:

    Frequency Extrinsics by Day
    SELECT
    DATE_TRUNC('day', block_time) AS day,
    section || '_' || method AS section_method,
    COUNT(*) AS cnt
    FROM
    frequency.extrinsics
    WHERE
    section || '_' || method IN (
    SELECT section_method
    FROM unnest(SPLIT('{{section_method}}', ',')) AS c(section_method)
    )
    GROUP BY
    DATE_TRUNC('day', block_time),
    section || '_' || method;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/hydration-dashboards.html b/docs/general/dune-analytics/hydration-dashboards.html index 2d836d7f9bb7..663684c8b1fe 100644 --- a/docs/general/dune-analytics/hydration-dashboards.html +++ b/docs/general/dune-analytics/hydration-dashboards.html @@ -19,7 +19,7 @@ - + @@ -46,7 +46,7 @@ and still maintain precision.

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/interlay-dashboards.html b/docs/general/dune-analytics/interlay-dashboards.html index a6ff44f5b1b9..129cf4a9e999 100644 --- a/docs/general/dune-analytics/interlay-dashboards.html +++ b/docs/general/dune-analytics/interlay-dashboards.html @@ -19,7 +19,7 @@ - + @@ -46,7 +46,7 @@ and still maintain precision.

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/invarch-dashboards.html b/docs/general/dune-analytics/invarch-dashboards.html index 9709f8fbd4b4..fc438d42f783 100644 --- a/docs/general/dune-analytics/invarch-dashboards.html +++ b/docs/general/dune-analytics/invarch-dashboards.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ queries. You can use the following DuneSQL queries as examples:

    InvArch Cumulative Activated Acounts by Day
    WITH accounts_first_active AS (
    SELECT
    address_ss58,
    MIN(date_trunc('day', ts)) AS first_active_date
    FROM
    invarch.balances
    WHERE
    (free + reserved + misc_frozen + frozen) > 0
    GROUP BY
    address_ss58
    )
    SELECT
    first_active_date AS date,
    SUM(COUNT(DISTINCT address_ss58)) OVER (
    ORDER BY
    DATE(first_active_date)
    ) AS cumulative_accounts
    FROM
    accounts_first_active
    GROUP BY
    first_active_date
    ORDER BY
    first_active_date DESC;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/litentry-dashboards.html b/docs/general/dune-analytics/litentry-dashboards.html index d199564e3b62..a13fc7a0868e 100644 --- a/docs/general/dune-analytics/litentry-dashboards.html +++ b/docs/general/dune-analytics/litentry-dashboards.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ queries. You can use the following DuneSQL queries as examples:

    Litentry LIT Token Sent To Ethereum
    SELECT DISTINCT
    block_time,
    extrinsic_id,
    get_href(
    'https://litentry.statescan.io/#/extrinsics/' || extrinsic_id,
    extrinsic_id
    ) AS extrinsic_id_url,
    JSON_VALUE(data, 'strict $[0]') AS dest_id,
    JSON_VALUE(data, 'strict $[1]') AS nonce,
    JSON_VALUE(data, 'strict $[2]') AS source_id,
    IF(
    JSON_VALUE(data, 'strict $[3]') LIKE '0x%',
    bytearray_to_int256(JSON_VALUE(data, 'strict $[3]')) / POW(10, 12),
    CAST(JSON_VALUE(data, 'strict $[3]') AS int256) / POW(10, 12)
    ) AS amount,
    JSON_VALUE(data, 'strict $[4]') AS recipient,
    get_href(
    'https://etherscan.io/address/' || JSON_VALUE(data, 'strict $[4]'),
    CONCAT(
    SUBSTR(JSON_VALUE(data, 'strict $[4]'), 1, 4),
    '...',
    SUBSTR(
    JSON_VALUE(data, 'strict $[4]'),
    LENGTH(JSON_VALUE(data, 'strict $[4]')) - 3
    )
    )
    ) AS recipient_url
    FROM
    litentry.events
    WHERE
    section = 'chainBridge'
    AND method = 'FungibleTransfer'
    ORDER BY
    block_time DESC;

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/manta-dashboards.html b/docs/general/dune-analytics/manta-dashboards.html index fbf491c0a430..91d30e5c3363 100644 --- a/docs/general/dune-analytics/manta-dashboards.html +++ b/docs/general/dune-analytics/manta-dashboards.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ queries. You can use the following DuneSQL queries as examples:

    Manta to Moonbeam XTokens Transfer
    SELECT
    DATE_TRUNC('day', block_time) AS day,
    SUM(
    CAST(json_extract_scalar(params, '$.amount') AS DOUBLE) / POWER(10, 18)
    ) AS amount,
    'Manta to Moonbeam' AS section
    FROM
    manta.extrinsics
    WHERE
    section = 'xTokens'
    AND method = 'transfer'
    AND json_extract_scalar(params, '$.dest.v3.interior.x2[0].parachain') = '2004'
    GROUP BY
    DATE_TRUNC('day', block_time)
    ORDER BY
    day DESC;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/moonbeam-dashboards.html b/docs/general/dune-analytics/moonbeam-dashboards.html index fdf7ce672bf4..83519befb0ac 100644 --- a/docs/general/dune-analytics/moonbeam-dashboards.html +++ b/docs/general/dune-analytics/moonbeam-dashboards.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ queries. You can use the following DuneSQL queries as examples:

    Moonbeam Referenda Result
    SELECT DISTINCT
    CAST(JSON_EXTRACT_SCALAR(data, '$[0]') AS INTEGER) AS referenda_id,
    get_href(
    'https://moonbeam.subscan.io/referenda_v2/' || CAST(JSON_EXTRACT_SCALAR(data, '$[0]') AS VARCHAR),
    CAST(JSON_EXTRACT_SCALAR(data, '$[0]') AS VARCHAR)
    ) AS referenda_id_url,
    varbinary_to_uint256(
    from_hex(SUBSTR(JSON_EXTRACT_SCALAR(data, '$[1].ayes'), 3))
    ) / POW(10, 18) AS aye_total,
    varbinary_to_uint256(
    from_hex(SUBSTR(JSON_EXTRACT_SCALAR(data, '$[1].nays'), 3))
    ) / POW(10, 18) AS nay_total,
    varbinary_to_uint256(
    from_hex(SUBSTR(JSON_EXTRACT_SCALAR(data, '$[1].support'), 3))
    ) / POW(10, 18) AS support,
    method AS result
    FROM
    moonbeam.events
    WHERE
    section = 'referenda'
    AND (
    method = 'Confirmed'
    OR method = 'Rejected'
    OR method = 'Cancelled'
    OR method = 'TimedOut'
    )
    ORDER BY
    referenda_id DESC;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/neuroweb-dashboards.html b/docs/general/dune-analytics/neuroweb-dashboards.html index 1d2d38cfcfde..92ddc00b7d15 100644 --- a/docs/general/dune-analytics/neuroweb-dashboards.html +++ b/docs/general/dune-analytics/neuroweb-dashboards.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ queries. You can use the following DuneSQL queries as examples:

    Neuroweb Knowledge Asset Distribution
    SELECT DISTINCT
    get_href(
    'https://dkg.origintrail.io/profile?wallet=' || CAST(To AS VARCHAR),
    CONCAT(
    SUBSTR(To, 1, 4),
    '...',
    SUBSTR(To, LENGTH(To) - 3)
    )
    ) AS Holder_URL,
    CONCAT(
    SUBSTR(To, 1, 4),
    '...',
    SUBSTR(To, LENGTH(To) - 3)
    ) AS Holder,
    COUNT("Token ID") AS "# of Tokens"
    FROM
    query_3695045
    GROUP BY
    To
    ORDER BY
    "# of Tokens" DESC;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/nodle-dashboards.html b/docs/general/dune-analytics/nodle-dashboards.html index 3c522827becc..e8b98650b99d 100644 --- a/docs/general/dune-analytics/nodle-dashboards.html +++ b/docs/general/dune-analytics/nodle-dashboards.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ queries. You can use the following DuneSQL queries as examples:

    Nodle Mint Uniques
    SELECT DISTINCT
    block_time,
    JSON_EXTRACT_SCALAR(call_args, '$.owner.id') AS owner,
    JSON_EXTRACT(call_args, '$.collection') AS collection,
    JSON_EXTRACT(call_args, '$.item') AS item
    FROM
    nodle.calls
    WHERE
    (call_section = 'nodleUniques' OR call_section = 'uniques')
    AND call_method = 'mint'
    AND extrinsic_id NOT IN (
    SELECT
    extrinsic_id
    FROM
    nodle.events
    WHERE
    method = 'ExtrinsicFailed'
    );

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/parachain-dashboards.html b/docs/general/dune-analytics/parachain-dashboards.html index 9a85f3e353fb..247d589d604c 100644 --- a/docs/general/dune-analytics/parachain-dashboards.html +++ b/docs/general/dune-analytics/parachain-dashboards.html @@ -19,13 +19,13 @@ - +

    Parachain Dashboards

    In-depth analysis dashboards for each specific parachain within the Polkadot ecosystem.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/pendulum-dashboards.html b/docs/general/dune-analytics/pendulum-dashboards.html index a13dd306298a..1ee260fc3825 100644 --- a/docs/general/dune-analytics/pendulum-dashboards.html +++ b/docs/general/dune-analytics/pendulum-dashboards.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ queries. You can use the following DuneSQL queries as examples:

    Pendulum Spacewalk Transactions by Month
    SELECT
    DATE_TRUNC('month', block_time) AS month,
    SUM(amount) AS amount,
    COUNT(*) AS count,
    token_name
    FROM
    query_3821151 -- Pendulum Spacewalk Transactions
    GROUP BY
    DATE_TRUNC('month', block_time),
    token_name;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/people-dashboards.html b/docs/general/dune-analytics/people-dashboards.html index b6c466ef7212..0057a7f7225d 100644 --- a/docs/general/dune-analytics/people-dashboards.html +++ b/docs/general/dune-analytics/people-dashboards.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ queries. You can use the following DuneSQL queries as examples:

    Kusama People Chain - Identity History Sample
    SELECT
    block_time,
    extrinsic_id,
    signer_ss58,
    signer_pub_key,
    CAST(
    from_utf8(
    from_hex(JSON_EXTRACT_SCALAR(call_args, '$.info.display.raw'))
    ) AS VARCHAR
    ) AS name,
    CAST(
    from_utf8(
    from_hex(JSON_EXTRACT_SCALAR(call_args, '$.info.email.raw'))
    ) AS VARCHAR
    ) AS email
    FROM
    people_kusama.calls
    WHERE
    call_section = 'identity'
    AND call_method = 'setIdentity';

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/phala-dashboards.html b/docs/general/dune-analytics/phala-dashboards.html index c18268e5ca85..def1faf0211a 100644 --- a/docs/general/dune-analytics/phala-dashboards.html +++ b/docs/general/dune-analytics/phala-dashboards.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ queries. You can use the following DuneSQL queries as examples:

    Phala Computation
    SELECT
    chain,
    circulation,
    sygma_bridge,
    reward,
    COALESCE(total_issuance, total_supply) AS total_issuance,
    total_value,
    idle_worker_count,
    daily_rewards,
    average_apr,
    budget_per_share,
    delegator_count
    FROM
    dune.phala_network.dataset_phala_computation;

    Query result:

    Visualizations using the query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polimec-dashboards.html b/docs/general/dune-analytics/polimec-dashboards.html index 66fa272e7bb3..83b423b95c50 100644 --- a/docs/general/dune-analytics/polimec-dashboards.html +++ b/docs/general/dune-analytics/polimec-dashboards.html @@ -19,7 +19,7 @@ - + @@ -31,7 +31,7 @@ queries. You can use the following DuneSQL queries as examples:

    Polimec Latest Reward Distribution
    WITH latest_round AS (
    SELECT
    MAX(CAST(JSON_EXTRACT_SCALAR(data, '$[0]') AS BIGINT)) AS start_block
    FROM
    polimec.events
    WHERE
    section = 'parachainStaking'
    AND method = 'NewRound'
    ),
    summed AS (
    SELECT
    MAX(block_time) AS latest_time,
    JSON_EXTRACT_SCALAR(JSON_PARSE(data), '$[0]') AS delegator,
    SUM(
    CAST(JSON_EXTRACT_SCALAR(data, '$[1]') AS BIGINT) / POW(10, 10)
    ) AS reward
    FROM
    polimec.events
    WHERE
    section = 'parachainStaking'
    AND method = 'Rewarded'
    AND CAST(block_number AS BIGINT) >= (
    SELECT
    start_block
    FROM
    latest_round
    )
    GROUP BY
    JSON_EXTRACT_SCALAR(JSON_PARSE(data), '$[0]')
    )
    SELECT
    latest_time,
    delegator,
    get_href(
    'https://explorer.polimec.org/polimec/account/' || delegator,
    CONCAT(
    SUBSTR(delegator, 1, 4),
    '...',
    SUBSTR(delegator, LENGTH(delegator) - 3)
    )
    ) AS delegator_url,
    reward
    FROM
    summed
    ORDER BY
    reward DESC;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadex-dashboards.html b/docs/general/dune-analytics/polkadex-dashboards.html index 3a2a9bd7fe88..2835dc8f4fb6 100644 --- a/docs/general/dune-analytics/polkadex-dashboards.html +++ b/docs/general/dune-analytics/polkadex-dashboards.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ queries. You can use the following DuneSQL queries as examples:

    Polkadot BridgeHub Outbound Msg Sent To Ethereum
    SELECT
    DATE_TRUNC('day', block_time) AS day,
    COUNT(method) AS cnt
    FROM
    polkadex.events
    WHERE
    method = 'TransferredMultiAssets'
    GROUP BY
    DATE_TRUNC('day', block_time);

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards-governance.html b/docs/general/dune-analytics/polkadot-dashboards-governance.html index f063d898046c..7ba661823e48 100644 --- a/docs/general/dune-analytics/polkadot-dashboards-governance.html +++ b/docs/general/dune-analytics/polkadot-dashboards-governance.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ Visit our dashboard on Dune to use the referendum_id parameter for more in-depth analysis. For more information, please visit the Dune documentation on parameters.

    Voting Power Analysis

    • Voting Power Daily Accumulation

    • Aye vs Nay

    Vote Analysis

    • Aye Votes Analysis

    • Nay Votes Analysis

    • Abstain Votes Analysis

    Voter Insights

    • First Time Voter Analysis

    • Voter Conviction Adjustment

    • Awakened Voters

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards-network.html b/docs/general/dune-analytics/polkadot-dashboards-network.html index fcc96f46067e..89b5d1ddd53e 100644 --- a/docs/general/dune-analytics/polkadot-dashboards-network.html +++ b/docs/general/dune-analytics/polkadot-dashboards-network.html @@ -19,7 +19,7 @@ - + @@ -43,7 +43,7 @@ stake concentration by showing the difference between the highest and lowest stakes as a percentage of the total stake, offering insights into the network's staking dynamics and the level of decentralization.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards-overview.html b/docs/general/dune-analytics/polkadot-dashboards-overview.html index 92aafba6aee2..08cb2e92b34b 100644 --- a/docs/general/dune-analytics/polkadot-dashboards-overview.html +++ b/docs/general/dune-analytics/polkadot-dashboards-overview.html @@ -19,7 +19,7 @@ - + @@ -68,7 +68,7 @@ queries. You can use the following DuneSQL queries as examples:

    Polkadot Staking APR (Normalized)
    SELECT
    AVG(validator_normalized_staking_apr) AS staking_apr,
    era,
    DATE_FORMAT(ts, '%Y-%m-%d') AS era_ts
    FROM
    dune.substrate.result_polkadot_validators
    WHERE
    validator_is_active = TRUE
    AND validator_commission <> 1
    GROUP BY
    era,
    ts
    HAVING
    AVG(validator_normalized_staking_apr) > 0
    ORDER BY
    era DESC;

    Query result:

    Visualized result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards-staking.html b/docs/general/dune-analytics/polkadot-dashboards-staking.html index 024f40de48b3..e2494ef63389 100644 --- a/docs/general/dune-analytics/polkadot-dashboards-staking.html +++ b/docs/general/dune-analytics/polkadot-dashboards-staking.html @@ -19,7 +19,7 @@ - + @@ -55,7 +55,7 @@ Visit our dashboard on Dune to use the user_ss58 parameter for more in-depth analysis. For more information, please visit the Dune documentation on parameters.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards.html b/docs/general/dune-analytics/polkadot-dashboards.html index 761c3b54b801..7410d6986269 100644 --- a/docs/general/dune-analytics/polkadot-dashboards.html +++ b/docs/general/dune-analytics/polkadot-dashboards.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals.html index 780384fbc344..798cd9442334 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard.html index 98f57fad5bba..34f8c95d9ecf 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard.html @@ -19,7 +19,7 @@ - + @@ -81,7 +81,7 @@ voting conviction, using interactive elements that link to external references for detailed blockchain data. This allows for an in-depth look at the re-emergence of major stakeholders in the decision-making process.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home.html index 62b88196f6c6..b0cd2c842fe2 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home.html @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ Polkassembly.

    If you want to see more details of each referendum, please check Polkadot Opengov - Referendum Voting Analysis.

    Authored by @ colorfulnotion

    Controversial Referenda

    Select those referenda with approval ratings ranging from 0.2 to 0.8, and consider them as controversial referenda.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis.html index 51c444b1ffcb..b0f3c992124a 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ how voter convictions shift across referenda.

    Methodology

    Calculates each voter's previous average conviction, compares it to their current conviction in the referendum, and categorizes the change as Increase 🔼, Maintain 🔁, or Decrease 🔽. Finally, it provides counts and percentages for each category

    Awakened Voters

    Enumerate the "Aye" and "Nay" voters who have not voted in the last 90 days

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool.html index 5c2f530ed634..40a0db105d20 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@

    Polkadot Staking Dashboard (Nomination Pool)

    View On Dune: Polkadot Staking Dashboard

    We're using default parameters for all of the following parameterized charts. Visit our dashboard on Dune to use the pool_id parameter and analyze a specific referendum.

    For a _specific nomination pool id, this dashbaord shows:

    • Pool Members
    • Historical APY, Daily Pool Rewards & Fees

    Raw data is presented at the bottom.

    Source Table: polkadot.stakings , MaterializedView: dune.substrate.result_polkadot_nominationpools

    Go back to Polkadot Staking Home

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators.html index 8b381f8d4d7e..bcab57fdfcb6 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@

    Polkadot Staking Dashboard (Nominators)

    View On Dune: Polkadot Staking Dashboard

    We're using default parameters for all of the following parameterized charts. Visit our dashboard on Dune to use the nominator_ss58 parameter and analyze a specific referendum.

    For a specific nominator, this dashboard shows:

    • Nominator Staking Rewards
    • Nominator Shares
    • Delegated Amount
    • Nominator Staking Rewards Raw Data

    Source Table: polkadot.stakings , MaterializedView: dune.substrate.result_polkadot_nominators

    Go back to Polkadot Staking Home

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member.html index 51139cd2d656..26c360745e3c 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@

    Polkadot Staking Dashboard (Pool Member)

    View On Dune: Polkadot Staking Dashboard

    We're using default parameters for all of the following parameterized charts. Visit our dashboard on Dune to use the user_ss58 parameter and analyze a specific referendum.

    For a specific nomination pool member

    This dashboard shows raw data of member activity within the pool

    Member Pool Fee: 365 * member_staking_rewards / member_bonded

    Source Table: polkadot.stakings , MaterializedView: dune.substrate.result_polkadot_poolmembers

    Go back to Polkadot Staking Home

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators.html index 7746e278a59e..95b49bb4a91d 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators.html @@ -19,7 +19,7 @@ - + @@ -31,7 +31,7 @@ commission) / validator_total_stake. This metric nomoralized the reward rate across active validator sets

    Source Table: polkadot.stakings , MaterializedView: dune.substrate.result_polkadot_validators

    Go back to Polkadot Staking Home

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard.html b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard.html index 4d0e3e430e9d..363cf2e90c0f 100644 --- a/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard.html +++ b/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ dune.substrate.result_polkadot_nominationpools (MetVeiw)
  • Pool Members - dune.substrate.result_polkadot_poolmembers (MetVeiw)
  • On-Chain Identities - dune.substrate.result_polkadot_identity (MetVeiw)
  • Github repo: substrate-etl

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/snowbridge-dashboards.html b/docs/general/dune-analytics/snowbridge-dashboards.html index d8b7b13a3544..b6eb05cfca33 100644 --- a/docs/general/dune-analytics/snowbridge-dashboards.html +++ b/docs/general/dune-analytics/snowbridge-dashboards.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ queries. You can use the following DuneSQL queries as examples:

    Polkadot BridgeHub Outbound Msg Sent To Ethereum
    SELECT DISTINCT
    block_time,
    block_number,
    block_hash,
    extrinsic_id,
    extrinsic_hash,
    event_id,
    section,
    method,
    CAST(JSON_VALUE(data, 'strict $[0]') AS VARCHAR) AS message_id,
    CAST(JSON_VALUE(data, 'strict $[1]') AS uint256) AS nonce
    FROM
    bridgehub.events
    WHERE
    section = 'ethereumOutboundQueue'
    AND method = 'MessageAccepted';

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/stellaswap-dashboards.html b/docs/general/dune-analytics/stellaswap-dashboards.html index 77a24cff3bd0..f40e3b4af3be 100644 --- a/docs/general/dune-analytics/stellaswap-dashboards.html +++ b/docs/general/dune-analytics/stellaswap-dashboards.html @@ -19,7 +19,7 @@ - + @@ -45,7 +45,7 @@ calculated.

    Query result:

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dune-analytics/unique-dashboards.html b/docs/general/dune-analytics/unique-dashboards.html index d4c3eb3bb94b..32fd8a3a05dd 100644 --- a/docs/general/dune-analytics/unique-dashboards.html +++ b/docs/general/dune-analytics/unique-dashboards.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ queries. You can use the following DuneSQL queries as examples:

    Unique Top Collections by Total Sales Amount
    SELECT
    collection_id_with_dashboard_url,
    token_prefix,
    SUM(for_price) AS total_amount
    FROM
    dune.substrate.result_unique_nft_transaction_info
    GROUP BY
    collection_id_with_dashboard_url,
    token_prefix
    ORDER BY
    SUM(for_price) DESC;

    Query result:

    DuneSQL Referece

    For more information on DuneSQL, please refer to the DuneSQL Cheatsheet and DuneSQL Official Documentation.

    - + \ No newline at end of file diff --git a/docs/general/dunesql-cheatsheet.html b/docs/general/dunesql-cheatsheet.html index 7c91408381e5..94b448b4377f 100644 --- a/docs/general/dunesql-cheatsheet.html +++ b/docs/general/dunesql-cheatsheet.html @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ versions of SQL. Below is a comparison table of common features between DuneSQL and Google BigQuery SQL.

    DuneSQL Reference

    For more information on DuneSQL, please refer to the DuneSQL documentation.

    Problem TypeBigQueryDuneSQL(V2)Description
    JSON Reading MethodJSON_EXTRACT_SCALAR(call_args, "$.remark")JSON_EXTRACT_SCALAR(JSON_PARSE(call_args), '$.remark')In DuneSQL, JSON_PARSE is needed to split the JSON if it is initially not in JSON format but is transformed into a JSON string.
    JSON array to SQL arrayJSON_EXTRACT_ARRAY(JSON_EXTRACT(pv, '$.others'))cast(json_extract(pv, '$.others') as array<json>)BigQuery uses a function for this conversion, while DuneSQL utilizes casting and supports the JSON data type.
    HEX to UTF8SAFE_CONVERT_BYTES_TO_STRING(FROM_HEX(SUBSTR(hex_encode, 3)))FROM_UTF8(from_hex(SUBSTR(hex_encode, 3)))In DuneSQL, the SAFE_CONVERT_BYTES_TO_STRING is not required.
    Time SeriesTIMESTAMP_TRUNC(block_time, DAY) >= TIMESTAMP("2023-12-01")block_time >= date('2023-12-01')Time conversion in DuneSQL is simpler, involving direct usage of variable operator date(value).
    Data Type Conversion (FLOAT64 to DOUBLE)CAST(JSON_EXTRACT_SCALAR(nominationpools_rewardpools, '$.lastRecordedRewardCounter') AS FLOAT64)CAST(JSON_EXTRACT_SCALAR(nominationpools_rewardpools, '$.lastRecordedRewardCounter')BigQuery refers to the data format as FLOAT64, while in DuneSQL, it is termed DOUBLE.
    Handling Null ValuesIFNULL(prev_member_bonded, 0)COALESCE(prev_member_bonded, 0)In DuneSQL, BigQuery's IFNULL is equivalent to COALESCE.
    Calculating Local Time and Subtracting DaysTIMESTAMP_TRUNC(ts, DAY) >= TIMESTAMP(DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))ts >= date(current_date - interval '30' day)In BigQuery, operations on dates require functions, but DuneSQL allows direct use of + and -.
    Using Hyperlinks in TablesSELECT concat(concat(concat("<a href='https://analytics.polkaholic.io/superset/dashboard/77/?account=", address_ss58), "'>"), if(address_name is null, concat(address_ss58, '</a>'), concat(address_name, '</a>')))CONCAT('<a target="_new" href="https://analytics.polkaholic.io/superset/dashboard/77/?account=', address_ss58, '">', address_ss58 ,'</a>') AS address_ss58DuneSQL enables string concatenation using CONCAT, making it straightforward compared to the multiple concat functions required in BigQuery.
    - + \ No newline at end of file diff --git a/docs/general/onboarding-status-and-key-dashboards.html b/docs/general/onboarding-status-and-key-dashboards.html index cef115686255..56620ffa216a 100644 --- a/docs/general/onboarding-status-and-key-dashboards.html +++ b/docs/general/onboarding-status-and-key-dashboards.html @@ -19,7 +19,7 @@ - + @@ -30,7 +30,7 @@ powerful Dune Integration.

    The data must flow. As dashboard catalysts, we are looking forward to seeing more impressive dashboards developed by the community, leveraging this rich dataset to unlock new possibilities and insights.

    - + \ No newline at end of file diff --git a/docs/general/polkadot-ecosystem-overview.html b/docs/general/polkadot-ecosystem-overview.html index 3574e2d7e248..6d7335daa0ec 100644 --- a/docs/general/polkadot-ecosystem-overview.html +++ b/docs/general/polkadot-ecosystem-overview.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ Asset Hub Dashboards
  • For Polkadot relay-chain treasury, visit Polkadot Dashboards Governance
  • For Polkadot staking, visit Polkadot Dashboards Staking
  • For NFTs, visit Unique Dashboards
  • Activities Metrics

    Polkadot Treasury Flow

    Polkadot Network & Security

    XCM Metrics

    - + \ No newline at end of file diff --git a/docs/general/project-dashboards.html b/docs/general/project-dashboards.html index 68e30ca62c83..423d9253f6cd 100644 --- a/docs/general/project-dashboards.html +++ b/docs/general/project-dashboards.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ goal is set up the JAM DUNA as a Wyoming DUNA in July 2024. Wyoming DUNAs provide significant legal advantages over DAOs, requiring a minimum 100 members.
  • DED: DED is a memecoin project originated in the DOT community and developed by the DED Foundation
  • - + \ No newline at end of file diff --git a/docs/getting-started.html b/docs/getting-started.html index a3acd0a29763..0e6c7fdcc79f 100644 --- a/docs/getting-started.html +++ b/docs/getting-started.html @@ -19,7 +19,7 @@ - + @@ -112,7 +112,7 @@ about Polkadot.
  • Sample Applications - Sample applications that are built on or currently being built for Polkadot.
  • Contributing Guide - Rules for contributing to the wiki.
  • Polkadot Knowledge Base - Troubleshooting resources for specific errors and problems.
  • - + \ No newline at end of file diff --git a/docs/glossary.html b/docs/glossary.html index 63ba3127eac4..562d6205750c 100644 --- a/docs/glossary.html +++ b/docs/glossary.html @@ -19,7 +19,7 @@ - + @@ -289,7 +289,7 @@ not relevant for parachain developers.

    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 5b8ad9ba7582..d93d42c36651 100644 --- a/docs/governance-apps.html +++ b/docs/governance-apps.html @@ -19,7 +19,7 @@ - + @@ -53,7 +53,7 @@ this support guide..

    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.

    - + \ No newline at end of file diff --git a/docs/grants.html b/docs/grants.html index a7b86626bf1a..d07601f1fe2b 100644 --- a/docs/grants.html +++ b/docs/grants.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ 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 03b7bb7fad5a..e4e4a87323af 100644 --- a/docs/how-to-dyor.html +++ b/docs/how-to-dyor.html @@ -19,7 +19,7 @@ - + @@ -217,7 +217,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 34ae9d03280b..485e3f6690fd 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 3fce8af30c0f..d895e8cfd43b 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 bbd492a39f68..d623e93c663d 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 c131c2d6e2c2..22dc7df2d96d 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 1eb17cda3803..c16e559fb88d 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 f08da0754d21..c21c370e3a08 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 2d4f90851ffe..1b8a3aacbe10 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 bc54d2de3f1c..d60c67b0e419 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 6c5eab3d8221..354a6cb68c35 100644 --- a/docs/kusama-social-recovery.html +++ b/docs/kusama-social-recovery.html @@ -19,7 +19,7 @@ - + @@ -65,7 +65,7 @@ That is by using the Root origin. However, in order to use root permissions, you will need to either go through governance.

    Further Reading

    - + \ No newline at end of file diff --git a/docs/kusama-timeline.html b/docs/kusama-timeline.html index 57530d2aa30e..b91094b7a506 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 3370021f382d..c9fba163d51f 100644 --- a/docs/learn-DOT.html +++ b/docs/learn-DOT.html @@ -19,7 +19,7 @@ - + @@ -85,7 +85,7 @@ market.

    Polkadot Mainnet DOT

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

    - + \ No newline at end of file diff --git a/docs/learn-account-abstraction.html b/docs/learn-account-abstraction.html index a4185d418a34..ebad4e820d0c 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"
  • FRAME Origin - Polkadot-SDK Docs
  • - + \ No newline at end of file diff --git a/docs/learn-account-advanced.html b/docs/learn-account-advanced.html index 8a840abd4eb4..d1fd349a0320 100644 --- a/docs/learn-account-advanced.html +++ b/docs/learn-account-advanced.html @@ -19,14 +19,14 @@ - +

    Polkadot Accounts In-Depth

    Address Format

    The address format used in Substrate-based chains is SS58. SS58 is a modification of Base-58-check from Bitcoin with some minor changes. Notably, the format contains an address type prefix that -identifies an address belonging to a specific network.

    For example:

    • Polkadot addresses always start with the number 1.
    • Kusama addresses always start with a capital letter, such as C, D, F, G, H, J.
    • Generic Substrate addresses always start with the number 5.

    These prefixes, including how to validate addresses, are embedded in the Substrate SS58 format. +identifies an address belonging to a specific network.

    For example:

    • Polkadot addresses always start with the number 1.
    • Kusama addresses always start with a capital letter, such as C, D, E, F, G, H, J.
    • Generic Substrate addresses always start with the number 5.

    These prefixes, including how to validate addresses, are embedded in the Substrate SS58 format. Never use regular expressions for address validation.

    It's important to understand that different network formats are merely other representations of the same public key in a private-public keypair generated by an address generation tool. As a result, the addresses across Substrate-based chains are compatible if the format is converted @@ -203,8 +203,8 @@ e.g. an account that was stored externally in the extension on the old computer but was created 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.
    - +and addresses should now be available. + \ No newline at end of file diff --git a/docs/learn-account-balances.html b/docs/learn-account-balances.html index 5a1a8b302a40..05c58362b0d1 100644 --- a/docs/learn-account-balances.html +++ b/docs/learn-account-balances.html @@ -19,7 +19,7 @@ - + @@ -101,7 +101,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. - + \ No newline at end of file diff --git a/docs/learn-account-multisig.html b/docs/learn-account-multisig.html index e103921401be..f19063711388 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 d60fde187c1c..5b492c5683bc 100644 --- a/docs/learn-accounts.html +++ b/docs/learn-accounts.html @@ -19,7 +19,7 @@ - + @@ -93,7 +93,7 @@ It just means you want to keep your computer clean until you maybe need this folder again and recreate it. Your address is like this folder - it gets removed from the chain when nothing is in it but gets put back when it has the existential deposit.


    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 29c5c2187758..8bc80c8804d9 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-agile-coretime-index.html b/docs/learn-agile-coretime-index.html index cd0dcb8f5709..44ebc4950ca7 100644 --- a/docs/learn-agile-coretime-index.html +++ b/docs/learn-agile-coretime-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-agile-coretime.html b/docs/learn-agile-coretime.html index 5e7d6a9cdeed..c2bd9f4bcae5 100644 --- a/docs/learn-agile-coretime.html +++ b/docs/learn-agile-coretime.html @@ -19,7 +19,7 @@ - + @@ -210,7 +210,7 @@ timeslices.
  • Interlacing: the action of dividing a region into the execution of different tasks for each block of a timeslice. The result regions will have the same start and end timeslice as the parent region, but different tasks will be executed at different blocks.
  • - + \ No newline at end of file diff --git a/docs/learn-architecture.html b/docs/learn-architecture.html index 782ff37a34bf..cdbaaa4b1bd5 100644 --- a/docs/learn-architecture.html +++ b/docs/learn-architecture.html @@ -19,7 +19,7 @@ - + @@ -84,7 +84,7 @@ They collect parachain transactions and produce state transition proofs for the validators on the 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).

    - + \ No newline at end of file diff --git a/docs/learn-archive.html b/docs/learn-archive.html index ecbcd01234b4..98e9398fd117 100644 --- a/docs/learn-archive.html +++ b/docs/learn-archive.html @@ -19,14 +19,14 @@ - + - + \ No newline at end of file diff --git a/docs/learn-asset-conversion-assethub.html b/docs/learn-asset-conversion-assethub.html index c5d7eb1c63f2..30bcc765fd76 100644 --- a/docs/learn-asset-conversion-assethub.html +++ b/docs/learn-asset-conversion-assethub.html @@ -19,7 +19,7 @@ - + @@ -60,7 +60,7 @@ experience bonuses here:

    • The exchange/custodian only needs to transact on one parachain and can access every other without any infrastructure lift.
    • For the user, they never actually need to “see” AssetHub. It’s entirely abstracted away behind either the parachain wallet/application or the exchange/custodian.
    - + \ No newline at end of file diff --git a/docs/learn-assets-index.html b/docs/learn-assets-index.html index fe82ac5d08b5..e524c677bb6e 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 18a64f312441..8f14b6698e40 100644 --- a/docs/learn-assets.html +++ b/docs/learn-assets.html @@ -19,7 +19,7 @@ - + @@ -125,7 +125,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 26655fb55811..73b5b2265c90 100644 --- a/docs/learn-async-backing.html +++ b/docs/learn-async-backing.html @@ -19,7 +19,7 @@ - + @@ -156,7 +156,7 @@ Synchronous and Asynchronous Backing - + \ No newline at end of file diff --git a/docs/learn-auction.html b/docs/learn-auction.html index e9e4c8e7d926..4e57e8d64960 100644 --- a/docs/learn-auction.html +++ b/docs/learn-auction.html @@ -19,7 +19,7 @@ - + @@ -141,7 +141,7 @@ W3F research page on parachain allocation that goes more in depth to the mechanism
  • Research Update: The Case for Candle Auctions - W3F breakdown and research update about candle auctions
  • Front-Running, Smart Contracts, and Candle Auctions W3F Research team discusses how to remedy current blockchain auction setbacks with candle auctions
  • - + \ No newline at end of file diff --git a/docs/learn-basics-index.html b/docs/learn-basics-index.html index 1f1ac4050759..17d341f47210 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-bridge-hub.html b/docs/learn-bridge-hub.html index 8305480828da..cf16886e2d02 100644 --- a/docs/learn-bridge-hub.html +++ b/docs/learn-bridge-hub.html @@ -19,7 +19,7 @@ - + @@ -64,7 +64,7 @@ delivery confirmation relay. For more information on relayers and the Bridge Hub design, read through the high level documentation on bridges on the Polkadot-SDK repository.

    - + \ No newline at end of file diff --git a/docs/learn-bridges.html b/docs/learn-bridges.html index edac836cae49..59a7b16b6296 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 ab9ed2ddbcbd..d1ffb606d123 100644 --- a/docs/learn-collator.html +++ b/docs/learn-collator.html @@ -19,7 +19,7 @@ - + @@ -69,7 +69,7 @@ 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 11c91e3df439..6f21ed74753e 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 da6a9e8dfc61..dec5a3db4ffd 100644 --- a/docs/learn-comparisons-cosmos.html +++ b/docs/learn-comparisons-cosmos.html @@ -19,7 +19,7 @@ - + @@ -130,7 +130,7 @@ receiving chain must trust the sending chain. Thus, each blockchain in the Cosmos network has its independent security mechanisms. Chains also have the option to share security with the Cosmos Hub and thereby leverage its economic security.

    - + \ No newline at end of file diff --git a/docs/learn-comparisons-ethereum-2.html b/docs/learn-comparisons-ethereum-2.html index be4efa3962b8..e590a332c296 100644 --- a/docs/learn-comparisons-ethereum-2.html +++ b/docs/learn-comparisons-ethereum-2.html @@ -19,7 +19,7 @@ - + @@ -155,7 +155,7 @@ enacted autonomously via forkless upgrades.
  • Validator selection mechanisms differ as Polkadot can provide strong availability and validity guarantees with fewer validators per protocol.
  • - + \ No newline at end of file diff --git a/docs/learn-comparisons-index.html b/docs/learn-comparisons-index.html index e77e58ebe5dc..1f190cecbc84 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 de2273d49b5d..20f100d09d99 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 3fd18416f720..bafddccfec93 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 568cb185f6e4..d0f1d1c38816 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 c26f6a3a69e2..fe222bc37433 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 cf2f3776b81f..8ee185dc0f1e 100644 --- a/docs/learn-consensus.html +++ b/docs/learn-consensus.html @@ -19,7 +19,7 @@ - + @@ -141,7 +141,7 @@ 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-crowdloans.html b/docs/learn-crowdloans.html index 1059d964e2c1..cdba177c074a 100644 --- a/docs/learn-crowdloans.html +++ b/docs/learn-crowdloans.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,7 @@ Apps page.

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

    crowdloan dashboard

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

    - + \ No newline at end of file diff --git a/docs/learn-cryptography.html b/docs/learn-cryptography.html index 581f5bb78d2e..bfec7cf2007e 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-dot-ksm-bridge.html b/docs/learn-dot-ksm-bridge.html index f86d141a84a2..23158c71bef4 100644 --- a/docs/learn-dot-ksm-bridge.html +++ b/docs/learn-dot-ksm-bridge.html @@ -19,7 +19,7 @@ - + @@ -58,7 +58,7 @@ through Kusama OpenGov.

    For more information on relayer rewards, check the relayers compensation scheme section on the relayer docs on the Polkadot-SDK repository.

    - + \ No newline at end of file diff --git a/docs/learn-elastic-scaling.html b/docs/learn-elastic-scaling.html index a5287c264953..a64fc4af941a 100644 --- a/docs/learn-elastic-scaling.html +++ b/docs/learn-elastic-scaling.html @@ -19,7 +19,7 @@ - + @@ -59,7 +59,7 @@ parachain side, collators must produce more parablocks per unit of time, implying that technical specifications for collators will likely increase.

    For more advanced technical challenges, see the Elastic Scaling GitHub PR.

    - + \ No newline at end of file diff --git a/docs/learn-future-implementations-index.html b/docs/learn-future-implementations-index.html index 9fa38219ac81..599141f8c661 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-guides-accounts-multisig.html b/docs/learn-guides-accounts-multisig.html index e1624df0610e..db1422c260e3 100644 --- a/docs/learn-guides-accounts-multisig.html +++ b/docs/learn-guides-accounts-multisig.html @@ -19,7 +19,7 @@ - + @@ -93,7 +93,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 42431db27bf9..c0ce39e894b6 100644 --- a/docs/learn-guides-accounts-proxy-pure.html +++ b/docs/learn-guides-accounts-proxy-pure.html @@ -19,7 +19,7 @@ - + @@ -84,7 +84,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 fa63fe441f98..ee5a629dbdd5 100644 --- a/docs/learn-guides-accounts-proxy.html +++ b/docs/learn-guides-accounts-proxy.html @@ -19,7 +19,7 @@ - + @@ -79,7 +79,7 @@ automatically ask for Charly's signature. Thus one proxy call will trigger the second one because Charly's is the only any proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's account we will need to submit all three proxy calls.

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

    - + \ No newline at end of file diff --git a/docs/learn-guides-asset-conversion.html b/docs/learn-guides-asset-conversion.html index 7884e13fac3a..fa0dab5bdf1e 100644 --- a/docs/learn-guides-asset-conversion.html +++ b/docs/learn-guides-asset-conversion.html @@ -19,7 +19,7 @@ - + @@ -79,7 +79,7 @@ (u128 value of 400000000000 as it has 10 decimals).

    Remove Liquidity

    Below is the snapshot of the liquidity pool on the DOT ACP UI. after successful submission of the extrinsic above.

    Remove Liquidity Example

    - + \ No newline at end of file diff --git a/docs/learn-guides-assets-create.html b/docs/learn-guides-assets-create.html index 6fc1c14c6041..6190ced52444 100644 --- a/docs/learn-guides-assets-create.html +++ b/docs/learn-guides-assets-create.html @@ -19,7 +19,7 @@ - + @@ -64,7 +64,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-ledger.html b/docs/learn-guides-assets-ledger.html index 39cb35b36b6c..88051e378c8a 100644 --- a/docs/learn-guides-assets-ledger.html +++ b/docs/learn-guides-assets-ledger.html @@ -19,7 +19,7 @@ - + @@ -98,7 +98,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-assets.html b/docs/learn-guides-assets.html index 77855905dc6f..480614150077 100644 --- a/docs/learn-guides-assets.html +++ b/docs/learn-guides-assets.html @@ -19,7 +19,7 @@ - + @@ -28,7 +28,7 @@ Polkadot-JS UI, you can contact the Polkadot Support Team. For more user-friendly tools see the wallets, apps and dashboard pages.
    - + \ No newline at end of file diff --git a/docs/learn-guides-bounties.html b/docs/learn-guides-bounties.html index 28f230af8c01..460b17f6e18d 100644 --- a/docs/learn-guides-bounties.html +++ b/docs/learn-guides-bounties.html @@ -19,7 +19,7 @@ - + @@ -79,7 +79,7 @@ delay elapsed, follow the guidelines in the video tutorial below to learn how to claim a child bounty reward. Note that the extrinsic to claim the child bounty reward is permissionless, and anyone can initiate the claim on behalf of the beneficiary.

    - + \ No newline at end of file diff --git a/docs/learn-guides-bridges.html b/docs/learn-guides-bridges.html index a07602ace27b..9d8160737d61 100644 --- a/docs/learn-guides-bridges.html +++ b/docs/learn-guides-bridges.html @@ -19,7 +19,7 @@ - + @@ -28,7 +28,7 @@ Polkadot-JS UI, you can contact the Polkadot Support Team. For more user-friendly tools see the wallets, apps and dashboard pages.
    - + \ No newline at end of file diff --git a/docs/learn-guides-coretime-marketplaces.html b/docs/learn-guides-coretime-marketplaces.html index 0e31a531de7f..b3ce5acac4d3 100644 --- a/docs/learn-guides-coretime-marketplaces.html +++ b/docs/learn-guides-coretime-marketplaces.html @@ -19,7 +19,7 @@ - + @@ -38,7 +38,7 @@ Wallet and Polkadot-JS Extension. Select the account to be used for the coretime purchase and then, click on "buy core" button to sign and broadcast the transaction.

    Lastic-purchase-bulk-coretime

    Managing Cores with Lastic

    Lastic enables you to transfer your core to another account, utilize it for a parachain, split it up, change block production frequency, or assign it to a task.

    Lastic-manage-core

    - + \ No newline at end of file diff --git a/docs/learn-guides-coretime-parachains.html b/docs/learn-guides-coretime-parachains.html index 016539595811..4e3e3ba85576 100644 --- a/docs/learn-guides-coretime-parachains.html +++ b/docs/learn-guides-coretime-parachains.html @@ -19,7 +19,7 @@ - + @@ -77,7 +77,7 @@ account if the provided funds will run out, ensuring the account is kept alive.

    With each successful on-demand extrinsic, the parachain head changes (you may have to zoom out on the browser for parachain head details to show up on Polkadot-JS UI).

    coretime-ondemand-parahead

    The successful collation can also be verified in the parachain collator logs. It can be noticed that with each parachain block, the state of adder-collator is incremented by 2.

    coretime-new-collation

    - + \ No newline at end of file diff --git a/docs/learn-guides-dot-ksm-bridge.html b/docs/learn-guides-dot-ksm-bridge.html index d5910c514973..6bed6b4bb945 100644 --- a/docs/learn-guides-dot-ksm-bridge.html +++ b/docs/learn-guides-dot-ksm-bridge.html @@ -19,7 +19,7 @@ - + @@ -80,7 +80,7 @@ destination chain but will not be accepted by your account, and instead get trapped in the Asset Trap on the destination chain.

    Once arbitrary asset transfers are enabled by the Asset Hubs, a guide will be posted to this Wiki page.

    - + \ No newline at end of file diff --git a/docs/learn-guides-identity.html b/docs/learn-guides-identity.html index 571cc64d62dd..f57cdabec7b3 100644 --- a/docs/learn-guides-identity.html +++ b/docs/learn-guides-identity.html @@ -19,7 +19,7 @@ - + @@ -88,7 +88,7 @@ OpenGov, then wait for people to vote on it. For best results, write a post about your identity and intentions beforehand, and once the proposal is in the queue ask people to endorse it so that it gets ahead in the referendum queue.

    - + \ No newline at end of file diff --git a/docs/learn-guides-ledger.html b/docs/learn-guides-ledger.html index cea19b571f1d..8a813bf30b90 100644 --- a/docs/learn-guides-ledger.html +++ b/docs/learn-guides-ledger.html @@ -19,7 +19,7 @@ - + @@ -82,7 +82,7 @@ Nano S and the Ledger Nano X, some extrinsics are not supported by the light version. The following repository by Zondax lists the currently supported extrinsics on the XL version of the Ledger app.

    - + \ No newline at end of file diff --git a/docs/learn-guides-nominator.html b/docs/learn-guides-nominator.html index ea2cb791f8fe..788b0c60012f 100644 --- a/docs/learn-guides-nominator.html +++ b/docs/learn-guides-nominator.html @@ -19,7 +19,7 @@ - + @@ -90,7 +90,7 @@ Subscan. Also, you can verify the bonding state under the Staking page on the Polkadot-JS UI.

    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/learn-guides-polkadot-opengov.html b/docs/learn-guides-polkadot-opengov.html index 2a9e1821004c..17ead0ac0d85 100644 --- a/docs/learn-guides-polkadot-opengov.html +++ b/docs/learn-guides-polkadot-opengov.html @@ -19,7 +19,7 @@ - + @@ -159,7 +159,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 seven remaining bits are grouped to store the conviction.

    - + \ No newline at end of file diff --git a/docs/learn-guides-staking-pools.html b/docs/learn-guides-staking-pools.html index 8b6cc1e9e629..bc022b6f8986 100644 --- a/docs/learn-guides-staking-pools.html +++ b/docs/learn-guides-staking-pools.html @@ -19,7 +19,7 @@ - + @@ -66,7 +66,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 cc09f4f1ae31..da1ac0be68b4 100644 --- a/docs/learn-guides-staking.html +++ b/docs/learn-guides-staking.html @@ -19,7 +19,7 @@ - + @@ -28,7 +28,7 @@ Polkadot-JS UI, you can contact the Polkadot Support Team. For more user-friendly tools see the wallets, apps and dashboard pages.
    - + \ No newline at end of file diff --git a/docs/learn-guides-transfers.html b/docs/learn-guides-transfers.html index c5bd483b51ab..f6a987d4da5d 100644 --- a/docs/learn-guides-transfers.html +++ b/docs/learn-guides-transfers.html @@ -19,7 +19,7 @@ - + @@ -126,7 +126,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 6967760705a6..0dba77d863ab 100644 --- a/docs/learn-guides-treasury.html +++ b/docs/learn-guides-treasury.html @@ -19,7 +19,7 @@ - + @@ -132,7 +132,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 1978a842893f..419c0a7f3ed7 100644 --- a/docs/learn-guides-vault.html +++ b/docs/learn-guides-vault.html @@ -19,7 +19,7 @@ - + @@ -86,7 +86,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-hyperbridge.html b/docs/learn-hyperbridge.html index fd78bfa1ae67..0657c7dbefbd 100644 --- a/docs/learn-hyperbridge.html +++ b/docs/learn-hyperbridge.html @@ -19,7 +19,7 @@ - + @@ -89,7 +89,7 @@ repository of hyperbridge.
  • Interoperable State Machine Protocol (ISMP) Book - Guidebook of the ISMP
  • The Puzzle of Blockchain Interoperability
  • RFC-1: Agile Coretime - Agile periodic-sale-based model for assigning Coretime on the Polkadot Ubiquitous Computer.
  • ISMP, The Endgame for Parachain Interoperability | Sub0 2023
  • Research Summary: PlonK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge
  • - + \ No newline at end of file diff --git a/docs/learn-identity.html b/docs/learn-identity.html index 62bd675d4628..19075420b400 100644 --- a/docs/learn-identity.html +++ b/docs/learn-identity.html @@ -19,7 +19,7 @@ - + @@ -76,7 +76,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 9157db445afc..8ac44fea234a 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 receive a grant for your development.

    - + \ No newline at end of file diff --git a/docs/learn-index.html b/docs/learn-index.html index 0d60b94530de..8148a043854b 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 75e4cedc2039..c323e186b86e 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-jam-chain.html b/docs/learn-jam-chain.html index f8557f56698f..38993aa31030 100644 --- a/docs/learn-jam-chain.html +++ b/docs/learn-jam-chain.html @@ -19,7 +19,7 @@ - + @@ -233,7 +233,7 @@ capability to target coretime not only at parachains but also at arbitrary sets of work packages. This flexibility enhances the versatility and efficiency of resource allocation within the JAM ecosystem.

    - + \ No newline at end of file diff --git a/docs/learn-jam-faq.html b/docs/learn-jam-faq.html index 5e3c37e64530..dcfcc19abccc 100644 --- a/docs/learn-jam-faq.html +++ b/docs/learn-jam-faq.html @@ -19,7 +19,7 @@ - + @@ -90,7 +90,7 @@ learn more about JAM. You can also join discussions on the forum and the fellowship calls.
  • Read this blog post about the original talk by Gavin Wood at Token2049 in Dubai.
  • - + \ No newline at end of file diff --git a/docs/learn-jam.html b/docs/learn-jam.html index 5fbdba80a689..41c327229830 100644 --- a/docs/learn-jam.html +++ b/docs/learn-jam.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-nft-pallets.html b/docs/learn-nft-pallets.html index b9923e6a909b..9d10a3d31639 100644 --- a/docs/learn-nft-pallets.html +++ b/docs/learn-nft-pallets.html @@ -19,7 +19,7 @@ - + @@ -118,7 +118,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 fc9d48c52999..1da056c9fa62 100644 --- a/docs/learn-nft-projects.html +++ b/docs/learn-nft-projects.html @@ -19,7 +19,7 @@ - + @@ -101,7 +101,7 @@ on, rather than entering the NFT space themselves as an end-product.

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

    - + \ No newline at end of file diff --git a/docs/learn-nft.html b/docs/learn-nft.html index 614837b8d5d3..991724880ebd 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 33942565cb6f..a2b5c362e8da 100644 --- a/docs/learn-nomination-pools.html +++ b/docs/learn-nomination-pools.html @@ -19,7 +19,7 @@ - + @@ -191,7 +191,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.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 9272e5a2a128..8d967efe3560 100644 --- a/docs/learn-nominator.html +++ b/docs/learn-nominator.html @@ -19,7 +19,7 @@ - + @@ -240,7 +240,7 @@ Polkadot JS Apps > Network > Staking > Targets page.

    Minimum Active Nomination

    Guides

    - + \ No newline at end of file diff --git a/docs/learn-offenses.html b/docs/learn-offenses.html index ce248b4a7fe9..90f802afe2a4 100644 --- a/docs/learn-offenses.html +++ b/docs/learn-offenses.html @@ -19,7 +19,7 @@ - + @@ -120,7 +120,7 @@ DoS (Denial of Service) attacks. The consequences of closing channels may vary. In general, performing validator tasks under reduced reputation will be harder, resulting in lower validator rewards.

    - + \ No newline at end of file diff --git a/docs/learn-parachains-faq.html b/docs/learn-parachains-faq.html index 487a2cb0d1ad..5b4c23f60ec9 100644 --- a/docs/learn-parachains-faq.html +++ b/docs/learn-parachains-faq.html @@ -19,7 +19,7 @@ - + @@ -110,7 +110,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 2dda7a89f7e7..5d3d43444343 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 78790f86d7ed..5f95daddadf4 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 647725e8b2df..c785d470f3b2 100644 --- a/docs/learn-parachains.html +++ b/docs/learn-parachains.html @@ -19,7 +19,7 @@ - + @@ -219,7 +219,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-participants-index.html b/docs/learn-participants-index.html index 3eb0a6c8484c..7a2ad1d397c6 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 966467a006b6..6308992ba9b8 100644 --- a/docs/learn-phragmen.html +++ b/docs/learn-phragmen.html @@ -19,7 +19,7 @@ - + @@ -268,7 +268,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 e2a3d74a5d3a..d882ec4da12b 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 b54ff2f27b5b..56c6ace9c2d6 100644 --- a/docs/learn-polkadot-js-guides.html +++ b/docs/learn-polkadot-js-guides.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,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 6a7867d9f9d6..dd349678cf66 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 8352c5a53a87..e0dd54119e8b 100644 --- a/docs/learn-polkadot-opengov-origins.html +++ b/docs/learn-polkadot-opengov-origins.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,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 bd8c155fe0de..01731905e938 100644 --- a/docs/learn-polkadot-opengov-treasury.html +++ b/docs/learn-polkadot-opengov-treasury.html @@ -19,7 +19,7 @@ - + @@ -109,7 +109,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 5a50a75f31e5..29ba86c5e3ac 100644 --- a/docs/learn-polkadot-opengov.html +++ b/docs/learn-polkadot-opengov.html @@ -19,7 +19,7 @@ - + @@ -78,24 +78,13 @@ consider the merits and vote on the referenda submitted to the Root track. In that case, they can delegate their voting power just for the Root track to a trusted expert who (according to them) acts in the best interest of the network protocol. In this way, token holders do not need to be -up-to-date with governance matters and can still make their votes count through delegates.

    Gov1 vs. Polkadot OpenGov

    Governance V1Polkadot OpenGovPolkadot OpenGov Benefit
    Includes the Council, the Technical Committee, and the Public (i.e. token holders).Includes the Public and the Technical Fellowship.Simpler and more decentralized structure.
    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).Referenda executed from multiple origins, each with a different track that shapes proposals’ timelines. Depending on the origin, multiple referenda within the same track are possible.Possibility to categorize proposals (based on importance and urgency) and execute them simultaneously within and between origin tracks.
    Proposals can be submitted by either the Council or the Public.The public submits proposals.More democratic.
    Uses 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.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.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.
    Uses alternating voting timetable allowing voters to cast votes for either council or public referenda every 28 eras.Multiple referenda can be voted at the same time.More flexible and agile governance system.
    Except for emergency proposals, all referenda have fixed voting and enactment periods of 28 eras.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.Referenda’s timeline is tailored to their importance and urgency. Flexible enactment period based on origin.
    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.No emergency proposals. The Technical Fellowship can whitelist proposals that will have their origin with shorter lead-in, confirmation, and enactment periods.The Technical Fellowship is a more decentralized entity than the Technical Committee. Whitelisting a proposal requires a majority of approval from the fellowship.
    Only the 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.All proposals will eventually be voted on (given track capacity and deposit are met and the Lead-in period has ended).It allows all proposals to get a chance to be voted on in a timely, predictive manner.
    Only aye or nay votes possible.Voters can have the additional voting options of abstaining or splitting votes.More ways to engage in voting and increase turnout.
    Voters can decide to delegate votes to another account.Voters can use multirole delegations and delegate votes to different accounts depending on origins.More agile delegations tailored by expertise.

    Proposals

    Starting a proposal in Governance v1

    See this page for more information about starting -referenda in Governance v1.

    In Polkadot OpenGov, anyone can start a referendum at any time and do so as often as they wish. -Previous features were expanded and improved, most notably -Origins and Tracks help facilitate the flow and processing of the -submitted referenda.

    Cancelling and Blacklisting

    Cancelling Referenda in Governance v1

    See this page for more information about -cancelling referenda in Governance v1.

    In Polkadot OpenGov, there is a special operation called Cancellation for intervening with a -proposal already being voted on. The operation will immediately reject an ongoing referendum -regardless of its status. There is also a provision to ensure the deposit of the proposer is slashed -if the proposal is malicious or spam.

    Cancellation is a governance operation the network must vote on to be executed. Cancellation comes -with its own Origin and Track which has -a low lead-time and Approval/Support curves with slightly sharper reductions in their thresholds for -passing, given that it is invoked with a sense of urgency.

    For more information about how to cancel a referendum, see the -advanced how-to guides.

    Blacklisting

    Blacklisting referenda in Polkadot OpenGov is -the same as in Governance v1.

    Referenda

    Public and Council Referenda in Governance v1

    With the Council's dissolution, council referenda +up-to-date with governance matters and can still make their votes count through delegates.

    Gov1 vs. Polkadot OpenGov

    Governance V1Polkadot OpenGovPolkadot OpenGov Benefit
    Includes the Council, the Technical Committee, and the Public (i.e. token holders).Includes the Public and the Technical Fellowship.Simpler and more decentralized structure.
    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).Referenda executed from multiple origins, each with a different track that shapes proposals’ timelines. Depending on the origin, multiple referenda within the same track are possible.Possibility to categorize proposals (based on importance and urgency) and execute them simultaneously within and between origin tracks.
    Proposals can be submitted by either the Council or the Public.The public submits proposals.More democratic.
    Uses 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.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.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.
    Uses alternating voting timetable allowing voters to cast votes for either council or public referenda every 28 eras.Multiple referenda can be voted at the same time.More flexible and agile governance system.
    Except for emergency proposals, all referenda have fixed voting and enactment periods of 28 eras.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.Referenda’s timeline is tailored to their importance and urgency. Flexible enactment period based on origin.
    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.No emergency proposals. The Technical Fellowship can whitelist proposals that will have their origin with shorter lead-in, confirmation, and enactment periods.The Technical Fellowship is a more decentralized entity than the Technical Committee. Whitelisting a proposal requires a majority of approval from the fellowship.
    Only the 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.All proposals will eventually be voted on (given track capacity and deposit are met and the Lead-in period has ended).It allows all proposals to get a chance to be voted on in a timely, predictive manner.
    Only aye or nay votes possible.Voters can have the additional voting options of abstaining or splitting votes.More ways to engage in voting and increase turnout.
    Voters can decide to delegate votes to another account.Voters can use multirole delegations and delegate votes to different accounts depending on origins.More agile delegations tailored by expertise.

    Referenda

    Public and Council Referenda in Governance v1

    With the Council's dissolution, council referenda are no longer present in Polkadot OpenGov.

    See this page for more information about public -referenda in Governance v1.

    In Polkadot OpenGov all referenda are public. The -Technical Fellowship has the option to -whitelist referenda that can be then proposed in the track with +referenda in Governance v1.

    In Polkadot OpenGov all referenda are public. Anyone can start a referendum at any time and do +so as often as they wish. Previous features were expanded and improved, most notably +Origins and Tracks help facilitate the flow and processing of the +submitted referenda. The Technical Fellowship has the +option to whitelist referenda that can be then proposed in the track with whitelist origin.

    Referenda Timeline

    Voting timetable in Governance v1

    See this page for more information about the voting timetable in Governance v1.

    opengov-timeline

    The figure above provides a summary view of the referenda timeline for Polkadot OpenGov.

    In (1), when a referendum is initially created, the community can immediately vote on it. However, it is not immediately in a state where it can end or otherwise have its votes counted, approved, and @@ -110,7 +99,11 @@ of only the value required for the on-chain storage needed to track it. But, having a referendum reviewed and decided upon carries the risk of using up the limited spots available in the referenda queue. Having a more significant but refundable deposit requirement makes sense to help -mitigate spam. Failing to submit the decision deposit will lead to a referendum timeout.

    Until they are in the lead-in period, proposals remain undecided. Once the criteria above are met, +mitigate spam. Failing to submit the decision deposit will lead to a referendum timeout.

    Decision Deposit Amounts

    In Polkadot OpenGov, someone must submit the Decision Deposit for a referendum to enter its Decision +Period. The number of tokens required for the Decision Deposit depends on the track’s privilege +level. The higher the privilege, the higher the deposit. For example, malicious referenda posted on +the Small Tipper track inflict low economic damage to the network. In contrast, malicious referenda +on the Root track can inflict more significant harm, such as changing the entire network's runtime.

    Until they are in the lead-in period, proposals remain undecided. Once the criteria above are met, the referendum moves to the deciding state. The votes of the referendum are now counted towards the outcome.

    In (2), the proposal enters the Decision Period, where voting can continue. For a proposal to be approved, votes must satisfy the approval and support criteria for at least the Confirmation @@ -218,7 +211,22 @@ amount earlier than those which use highly privileged classes such as Root.

    Enactment

    Enactment in Governance v1

    See this page for more information about enactment in Governance v1.

    In Polkadot OpenGov, the proposer suggests the enactment period, but there is also a minimum set for each Origin Track. For example, root Origin approvals require an extended period because of the -importance of the changes they bring to the network.

    Voting on a Referendum

    If you are a voter, it means that you will vote with your +importance of the changes they bring to the network.

    Cancelling, Killing & Blacklisting

    Cancelling Referenda in Governance v1

    See this page for more information about +cancelling referenda in Governance v1.

    Polkadot OpenGov has two origins dedicated to rejecting ongoing referenda: +Referendum Canceller and +Referendum Killer.

    Referendum Canceller aims to cancel an already ongoing referendum. When this origin cancels a +referendum, the Submission and Decision Deposit are refunded to their originators. An example of +when a referendum might be considered to be canceled is if the originator has made some errors in +creating the preimage and did not necessarily do anything malicious. Cancellation has a lower +Decision Period, and Approval and Support criteria are much easier to meet over time than most other +Origins. This is because the cancellation of a referendum usually comes with a sense of urgency.

    Referendum Killer aims to instantly kill an ongoing referendum, slashing submission and decision +deposit (the account(s) that posted these deposits will lose those funds). This origin can be +engaged if, for example, a malicious actor submits a referendum on the Root Track to set the code of +the chains' runtime to stop block production.

    The Decision Deposit for the Referendum Killer track itself is high to prevent malicious actors from +attempting to slash deposits of good referenda. A subsequent Referendum Killer can kill an existing +Referendum Killer.

    For more information about how to cancel or kill a referendum, see the +advanced how-to guides.

    Blacklisting

    Blacklisting referenda in Polkadot OpenGov is +the same as in Governance v1.

    Voting on a Referendum

    If you are a voter, it means that you will vote with your DOT on each single referendum.

    In Governance V1, voters could cast only an aye or nay vote. In Polkadot OpenGov, voters can additionally cast a abstain and split votes. Vote splitting allows voters to allocate @@ -282,9 +290,9 @@ while keeping the overall design censorship-free. Also, voters might not have the technical knowledge to judge some referenda or might not have the time to read all referenda. Delegations allow voters to participate in OpenGov hands-free by delegating their voting power to trusted -entities.

    Decision Deposit Amounts

    In Polkadot OpenGov, someone must submit the Decision Deposit for a referendum to enter its Decision Period. The number of tokens required for the Decision Deposit depends on the track’s privilege level. The higher the privilege, the higher the deposit. For example, malicious referenda posted on the Small Tipper track inflict low economic damage to the network. In contrast, malicious referenda on the Root track can inflict more significant harm, such as changing the entire network's runtime.

    Cancelling & Killing Referenda

    Polkadot OpenGov has two origins dedicated to rejecting ongoing referenda: Referendum Canceller and Referendum Killer.

    Referendum Canceller aims to cancel an already ongoing referendum. When this origin cancels a referendum, the Submission and Decision Deposit are refunded to their originators. An example of when a referendum might be considered to be canceled is if the originator has made some errors in creating the preimage and did not necessarily do anything malicious. Cancellation has a lower Decision Period, and Approval and Support criteria are much easier to meet over time than most other Origins. This is because the cancellation of a referendum usually comes with a sense of urgency.

    Referendum Killer aims to instantly kill an ongoing referendum, slashing submission and decision deposit (the account(s) that posted these deposits will lose those funds). This origin can be engaged if, for example, a malicious actor submits a referendum on the Root Track to set the code of the chains' runtime to stop block production.

    The Decision Deposit for the Referendum Killer track itself is high to prevent malicious actors from attempting to slash deposits of good referenda. A subsequent Referendum Killer can kill an existing Referendum Killer

    Resources


    Polkadot-JS Guides

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

    - +entities.

    Resources


    Polkadot-JS Guides

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

    + \ No newline at end of file diff --git a/docs/learn-polkadot-technical-fellowship.html b/docs/learn-polkadot-technical-fellowship.html index 3091809723c3..adfc5922301e 100644 --- a/docs/learn-polkadot-technical-fellowship.html +++ b/docs/learn-polkadot-technical-fellowship.html @@ -19,7 +19,7 @@ - + @@ -79,7 +79,7 @@ Promotion of the Polkadot Fellowship members from rank 5 needs to be done through an OpenGov referendum. For more information, check the rank updates section on the fellowship dashboard.

    - + \ No newline at end of file diff --git a/docs/learn-polkadotjs.html b/docs/learn-polkadotjs.html index cf1b16ebd832..c3dfe6c5a279 100644 --- a/docs/learn-polkadotjs.html +++ b/docs/learn-polkadotjs.html @@ -19,7 +19,7 @@ - + @@ -28,7 +28,7 @@ Polkadot-JS UI, you can contact the Polkadot Support Team. For more user-friendly tools see the wallets, apps and dashboard pages.
    - + \ No newline at end of file diff --git a/docs/learn-proxies-pure.html b/docs/learn-proxies-pure.html index baf9ac17e56d..83e57fbb4425 100644 --- a/docs/learn-proxies-pure.html +++ b/docs/learn-proxies-pure.html @@ -19,7 +19,7 @@ - + @@ -64,7 +64,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 c9bf94e6916b..4700f4d847f9 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-runtime-upgrades.html b/docs/learn-runtime-upgrades.html index f771c482a7b5..395f473a0e85 100644 --- a/docs/learn-runtime-upgrades.html +++ b/docs/learn-runtime-upgrades.html @@ -19,7 +19,7 @@ - + @@ -95,7 +95,7 @@ will be enacted.
  • referenda (Rejected) indicates that index's referendum has been rejected and will not be enacted.
  • When the runtime upgrades, there will be a system(CodeUpdated) event confirming the execution of the runtime upgrade.
  • - + \ No newline at end of file diff --git a/docs/learn-sassafras.html b/docs/learn-sassafras.html index 10e4d96e5bf2..39b001a08d43 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 f96282050794..1bbc38ea390a 100644 --- a/docs/learn-scams.html +++ b/docs/learn-scams.html @@ -19,7 +19,7 @@ - + @@ -88,7 +88,7 @@ for steps you should take to prevent further loss and contact Polkadot Support from the same page. Finally, make sure to read the present article carefully to learn how to avoid falling victim in the future.

    - + \ No newline at end of file diff --git a/docs/learn-spree.html b/docs/learn-spree.html index edb7c75c70e2..12bec4c93912 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 82625b6fc07f..ba984e0e6d2f 100644 --- a/docs/learn-staking-advanced.html +++ b/docs/learn-staking-advanced.html @@ -19,7 +19,7 @@ - + @@ -254,7 +254,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 20af8eb5cd09..cba5c82a3032 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 e620049d961b..c9fa6be36c50 100644 --- a/docs/learn-staking.html +++ b/docs/learn-staking.html @@ -19,7 +19,7 @@ - + @@ -320,7 +320,7 @@ Blog post by Web3 Foundation researcher Alfonso Cevallos covering NPoS in Polkadot.
  • Validator setup
  • Polkadot validator selector tool - A tool that helps nominators find reliable validators that meet quality-control criteria, including commission rates, verified identity, etc.

  • 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 bfbf4463e865..eb1d00a25f51 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 fa592d1729f1..8421722e675e 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 5faee5c8b35e..1eeae537c8b4 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 c06a5c73757d..dff481917dcc 100644 --- a/docs/learn-transactions.html +++ b/docs/learn-transactions.html @@ -19,7 +19,7 @@ - + @@ -96,7 +96,7 @@ the fee will go to the block producer, producers will include the transactions with the highest fees to maximize their reward.


    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-validator.html b/docs/learn-validator.html index 6332d6bcd928..b2f5fcbdd0f0 100644 --- a/docs/learn-validator.html +++ b/docs/learn-validator.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,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 f775e64b741c..2111ff0b6c23 100644 --- a/docs/learn-video-tutorials.html +++ b/docs/learn-video-tutorials.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@ - + \ No newline at end of file diff --git a/docs/learn-wasm.html b/docs/learn-wasm.html index 6b6d3a29d83b..24e47d1f433e 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 da08aeebd4c2..51015280d580 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 36a2d984de06..f40b604c67de 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 b6a45c5297b0..2efe84db7b87 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 d81d17c010a2..9a1f543ae486 100644 --- a/docs/learn-xcm-transport.html +++ b/docs/learn-xcm-transport.html @@ -19,7 +19,7 @@ - + @@ -69,7 +69,7 @@ asset transfer as intended.

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

    - + \ No newline at end of file diff --git a/docs/learn-xcm-usecases.html b/docs/learn-xcm-usecases.html index 04203f418074..523f0bd59b7e 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 2ea9fb878326..5e5165e91e87 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 380e31b37991..e291925ee7dd 100644 --- a/docs/learn-xcvm.html +++ b/docs/learn-xcvm.html @@ -19,7 +19,7 @@ - + @@ -111,7 +111,7 @@ 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/learn-controller.html b/docs/learn/learn-controller.html index 7a0e08912512..2d22ac2b2a62 100644 --- a/docs/learn/learn-controller.html +++ b/docs/learn/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/learn-governance.html b/docs/learn/learn-governance.html index d786ab69b1a1..32f11e769661 100644 --- a/docs/learn/learn-governance.html +++ b/docs/learn/learn-governance.html @@ -19,7 +19,7 @@ - + @@ -242,7 +242,7 @@ proposals and referenda.

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

    Resources

    - + \ No newline at end of file diff --git a/docs/learn/learn-launch.html b/docs/learn/learn-launch.html index f5d79978ca5f..e70d7d2c0315 100644 --- a/docs/learn/learn-launch.html +++ b/docs/learn/learn-launch.html @@ -19,7 +19,7 @@ - + @@ -46,7 +46,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/learn-redenomination.html b/docs/learn/learn-redenomination.html index a7c3d3949e9f..089982df7581 100644 --- a/docs/learn/learn-redenomination.html +++ b/docs/learn/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/learn-treasury.html b/docs/learn/learn-treasury.html index 3db04f978934..116145d8a79d 100644 --- a/docs/learn/learn-treasury.html +++ b/docs/learn/learn-treasury.html @@ -19,7 +19,7 @@ - + @@ -161,7 +161,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/xcm.html b/docs/learn/xcm.html index 2ba37bbd397c..de0774984519 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 9da878049573..548e6879252c 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 392beadfd059..96811c5ab775 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 fff70b4bd44c..fdf582fbac38 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 9bea9c1cdd1f..ea8e2bf26ec9 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 647e1a337505..ff8b89428c0c 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 35201d825ee7..08f999c0c1d8 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 703e634f7f75..1c756b19798f 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 B
    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 2fc4a7a9ee4b..d545b80848b9 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 cb93ab058091..e4fa54537ae7 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 3957d7105062..d9de4c5761e3 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 d35a8fe6af2b..729d8d838f6c 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 cb1b38bbfe8c..cca608c6d6fe 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 00cf6da366d5..183f07cd2231 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 88a27d8705d6..60464fc70d60 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 fb9e0905a12e..2be5041b8c60 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 8ca444d77f94..f1f64e00410e 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 5e6f20148e36..54d4360e4cc7 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 7ce60163aadd..529e7ba0cc27 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 ee5776d7144b..e1356ca0bd13 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 57c633be6edc..17d1431d5c98 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 bb23f63aa203..0720c3b6cb40 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 9fb1a727a184..08263d7518ae 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 b1d82cb227c4..badb1f5b0a75 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 f019f459928f..26b3e01688d6 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 ec8b3d9d73f2..782a34a59da6 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 de187cd1aecc..545d36b77d7b 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 e80a0bc73f2a..55a80442f7a7 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 d2309651061c..d1ee9eff8ad1 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 15e4f4d1b741..0d1f8a2abbf4 100644 --- a/docs/learn/xcm/overview-architecture.html +++ b/docs/learn/xcm/overview-architecture.html @@ -19,7 +19,7 @@ - + @@ -49,7 +49,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 44d8dd40f80d..6aa6fdd258d0 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 57346a5cca24..5ba4878fa3ce 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 660dc09d1620..2e03d5d0d8f8 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 0d63e1f2f4d3..57169a3a336f 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 2de001548be9..5a36ab5d44d8 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 f81f82342519..2f76e0241e13 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 5f5959ca21e6..1f92d4b27459 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 14f0b71c36e7..284758847ce6 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 6d3600a969d8..e498f4b9ec9b 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 87686c5f05a7..a33e5f30ce6a 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 9ced0eb01081..922a32ff73d3 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 bb4c84a1b67b..9c1661317f2b 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 655d8e22b3cc..dc35331f743b 100644 --- a/docs/learn/xcm/testing.html +++ b/docs/learn/xcm/testing.html @@ -19,7 +19,7 @@ - + @@ -40,7 +40,7 @@ messaging infrastructure as live networks, as the transport mechanism is being mocked out. Also, consensus related events are not tested, like disputes and staking. 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 fa123e8badc4..0ab78c55c65c 100644 --- a/docs/ledger.html +++ b/docs/ledger.html @@ -19,7 +19,7 @@ - + @@ -90,7 +90,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-archive.html b/docs/maintain-archive.html index 3934273d9d2a..67ac843287b5 100644 --- a/docs/maintain-archive.html +++ b/docs/maintain-archive.html @@ -19,14 +19,14 @@ - + - + \ No newline at end of file diff --git a/docs/maintain-bootnode.html b/docs/maintain-bootnode.html index 92fc99be8b7d..31b5d75b6192 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-collator-index.html b/docs/maintain-collator-index.html index 4936b4a27052..57bfdd14a02f 100644 --- a/docs/maintain-collator-index.html +++ b/docs/maintain-collator-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/maintain-endpoints.html b/docs/maintain-endpoints.html index 82d0b9691bba..a3ff853fddbe 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 22d6c2964521..1510a7946ab2 100644 --- a/docs/maintain-errors.html +++ b/docs/maintain-errors.html @@ -19,7 +19,7 @@ - + @@ -51,7 +51,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.
    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 5f79381fc634..444040057198 100644 --- a/docs/maintain-guides-async-backing.html +++ b/docs/maintain-guides-async-backing.html @@ -19,7 +19,7 @@ - + @@ -91,7 +91,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-how-to-chill.html b/docs/maintain-guides-how-to-chill.html index 72ee2e43671a..19a26a66064c 100644 --- a/docs/maintain-guides-how-to-chill.html +++ b/docs/maintain-guides-how-to-chill.html @@ -19,7 +19,7 @@ - + @@ -69,7 +69,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-monitor-your-node.html b/docs/maintain-guides-how-to-monitor-your-node.html index a609b313130e..8f5da904fa7b 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-stop-validating.html b/docs/maintain-guides-how-to-stop-validating.html index ed134974e108..cc09cb0dc694 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 9cc738fb6475..5fc481ae38f1 100644 --- a/docs/maintain-guides-how-to-systemd.html +++ b/docs/maintain-guides-how-to-systemd.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,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 25da7848766f..879cf11554e4 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 8cfd5ace41fb..e6baa940596a 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 4f783317045e..62b05dfbaa17 100644 --- a/docs/maintain-guides-how-to-validate-polkadot.html +++ b/docs/maintain-guides-how-to-validate-polkadot.html @@ -19,7 +19,7 @@ - + @@ -262,7 +262,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-secure-validator.html b/docs/maintain-guides-secure-validator.html index 7a001882920b..bc5bfdf9e72d 100644 --- a/docs/maintain-guides-secure-validator.html +++ b/docs/maintain-guides-secure-validator.html @@ -19,7 +19,7 @@ - + @@ -68,7 +68,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 b20397772317..881f8da2e32a 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 e33e7249a0ee..81f937bf237b 100644 --- a/docs/maintain-guides-validator-community.html +++ b/docs/maintain-guides-validator-community.html @@ -19,7 +19,7 @@ - + @@ -164,7 +164,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 dddd4fd95874..c1f3b20c210f 100644 --- a/docs/maintain-guides-validator-payout.html +++ b/docs/maintain-guides-validator-payout.html @@ -19,7 +19,7 @@ - + @@ -91,7 +91,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 3f5232eeda83..10f5a29f5a9e 100644 --- a/docs/maintain-index.html +++ b/docs/maintain-index.html @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ information and guides to set up a node and run the network.

    Polkadot's Canary Network Kusama

    For more information about being a Kusama maintainer, see the pages below:

    - + \ No newline at end of file diff --git a/docs/maintain-networks.html b/docs/maintain-networks.html index f4f93b5c08b1..8f0aacfce67b 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-node-index.html b/docs/maintain-node-index.html index 6d51aef6cc0e..7554a394efde 100644 --- a/docs/maintain-node-index.html +++ b/docs/maintain-node-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/maintain-polkadot-parameters.html b/docs/maintain-polkadot-parameters.html index 6c3399663a5f..85b9d09c50c0 100644 --- a/docs/maintain-polkadot-parameters.html +++ b/docs/maintain-polkadot-parameters.html @@ -19,7 +19,7 @@ - + @@ -39,7 +39,7 @@ 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 2cbe518f354c..474ad422c42a 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 169a40da2061..9bf8a5add37f 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-validator-index.html b/docs/maintain-validator-index.html index c66ae6f0736d..ec725ab81b63 100644 --- a/docs/maintain-validator-index.html +++ b/docs/maintain-validator-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/maintain-wss.html b/docs/maintain-wss.html index 0ee35b6eb37b..ad52d99c7b33 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/maintain/maintain-guides-democracy.html b/docs/maintain/maintain-guides-democracy.html index 288d969e2205..30e6184491bd 100644 --- a/docs/maintain/maintain-guides-democracy.html +++ b/docs/maintain/maintain-guides-democracy.html @@ -19,7 +19,7 @@ - + @@ -157,7 +157,7 @@ pallet, and you will specify the index of the referendum that is being voted, the judgement (i.e. "Aye" for approval or "Nay" for rejection), and the conviction, just like a normal vote.

    For more material on adding and removing Governance proxies, as well as other types, please see the Proxy page.

    - + \ No newline at end of file diff --git a/docs/maintain/maintain-guides-how-to-join-council.html b/docs/maintain/maintain-guides-how-to-join-council.html index aecd3b8b6615..e122b59e031b 100644 --- a/docs/maintain/maintain-guides-how-to-join-council.html +++ b/docs/maintain/maintain-guides-how-to-join-council.html @@ -19,7 +19,7 @@ - + @@ -44,7 +44,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/maintain-guides-how-to-vote-councillor.html b/docs/maintain/maintain-guides-how-to-vote-councillor.html index 170be44e3283..b677a28332b4 100644 --- a/docs/maintain/maintain-guides-how-to-vote-councillor.html +++ b/docs/maintain/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/metadata.html b/docs/metadata.html index b1cef37b3eb1..7dfd6a70cc86 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 007ad8e5964c..72040368e9c8 100644 --- a/docs/multisig-apps.html +++ b/docs/multisig-apps.html @@ -19,7 +19,7 @@ - + @@ -71,7 +71,7 @@ the Polkadot Blockchain.
  • Whether you're interacting with smart contracts, parachains, or other advanced features, PolkaSafe's MultiSig capabilities ensure every extrinsic is secure and efficient.
  • User-Centric Design: Every feature, from initiating a transaction to diving deep into extrinsics, is designed for clarity and ease.
  • - + \ No newline at end of file diff --git a/docs/parachains-apps.html b/docs/parachains-apps.html index 2a4881b61fec..6710427fce1d 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/parity-data-dashboards.html b/docs/parity-data-dashboards.html index a5b9ce87031c..85e4ec1a1c09 100644 --- a/docs/parity-data-dashboards.html +++ b/docs/parity-data-dashboards.html @@ -19,7 +19,7 @@ - + @@ -55,7 +55,7 @@ history and is continuously expanding.

    DotLake Batch Architecture

    DotLake Batch Architecture

    Real-Time Architecture

    Real-Time Architecture

    Support: Data Requests, Collaborations, Parachain Onboarding etc.

    The Parity Data Team is very eager to collaborate with the Ecosystem. If you have any questions, data requests that you need help with, interest in partnerships or you are a Parachain team and want your chain onboarded to the platform - please get in contact with data-team@parity.io.

    - + \ No newline at end of file diff --git a/docs/polkadot-direction.html b/docs/polkadot-direction.html index 2088084cc48f..cc808c49e148 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 bc6f32253c49..f0275824d5bc 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 ec74d7bb4202..40329e679c52 100644 --- a/docs/polkadot-vault.html +++ b/docs/polkadot-vault.html @@ -19,7 +19,7 @@ - + @@ -86,7 +86,7 @@ this article for detailed instructions. If you choose this approach, you should trust the provider you choose.


    Polkadot-JS Guides

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

    - + \ No newline at end of file diff --git a/docs/polkadot-vision-index.html b/docs/polkadot-vision-index.html index 87abdc124a11..d84097908c9f 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 b4d3ca9229cb..c047bcb66f84 100644 --- a/docs/polkadotjs-ui.html +++ b/docs/polkadotjs-ui.html @@ -19,7 +19,7 @@ - + @@ -74,7 +74,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 207cfb7f408e..f62e9fb5c8a2 100644 --- a/docs/polkadotjs.html +++ b/docs/polkadotjs.html @@ -19,7 +19,7 @@ - + @@ -97,7 +97,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/programs-index.html b/docs/programs-index.html index cc450be7e900..29db5a01e583 100644 --- a/docs/programs-index.html +++ b/docs/programs-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/research.html b/docs/research.html index 8cc141cae0c3..005583062dbb 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 d7906f10271b..5d4ea91d94fd 100644 --- a/docs/staking-apps.html +++ b/docs/staking-apps.html @@ -19,7 +19,7 @@ - + @@ -51,7 +51,7 @@ 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.

    - + \ No newline at end of file diff --git a/docs/staking-dashboard.html b/docs/staking-dashboard.html index b60d7bf7ed10..871705370090 100644 --- a/docs/staking-dashboard.html +++ b/docs/staking-dashboard.html @@ -19,7 +19,7 @@ - + @@ -160,7 +160,7 @@ the official Polkadot support website.

    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 ae60e6f6fed4..f2220e4c558e 100644 --- a/docs/start-building.html +++ b/docs/start-building.html @@ -19,7 +19,7 @@ - + @@ -52,7 +52,7 @@ this Medium article and the original Polkadot Forum post.

    - + \ No newline at end of file diff --git a/docs/stay-safe-index.html b/docs/stay-safe-index.html index 3bc84a6ec056..7fdf2e7cbd39 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 2bfbb7bda62f..ae81f25b570d 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 c8318bcd1f12..2cb5a8035b79 100644 --- a/docs/thousand-validators.html +++ b/docs/thousand-validators.html @@ -19,7 +19,7 @@ - + @@ -87,7 +87,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 Programme scores there are various tools listed below.

    ResourceGithub sourceInfo
    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 02423546ecac..257fc8541118 100644 --- a/docs/transaction-attacks.html +++ b/docs/transaction-attacks.html @@ -19,7 +19,7 @@ - + @@ -66,7 +66,7 @@ transfer will fail).

    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 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 19ebeba270ba..a348780d947c 100644 --- a/docs/wallets-and-extensions.html +++ b/docs/wallets-and-extensions.html @@ -19,7 +19,7 @@ - + @@ -100,7 +100,7 @@ balance changes, view your total balance in multiple fiat currencies, secured by your personal Telegram cloud and manual backups.

    Use Telenova on any of your devices — be it mobile or desktop — within the same Telegram account, and start exploring the Polkadot ecosystem today!

    - + \ No newline at end of file diff --git a/docs/wallets-index.html b/docs/wallets-index.html index 6d0370f08cd9..97b70e331698 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 354e7cdd6049..6260c4f8dda8 100644 --- a/docs/web3-and-polkadot.html +++ b/docs/web3-and-polkadot.html @@ -19,7 +19,7 @@ - + @@ -154,7 +154,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 f99a7cbaddfe..e86bfb2e7be6 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, 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 166513e644ad..aeabcbeecb35 100644 --- a/search.html +++ b/search.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file