From 590aaf05c1f6112a5708b6ac84504b407fc9d673 Mon Sep 17 00:00:00 2001 From: Polkadot Wiki CI Date: Thu, 21 Mar 2024 00:29:54 +0000 Subject: [PATCH] Deploy website - based on 84d188162f9fd6fc8984b7850a83c4c40aac9a51 --- 404.html | 4 ++-- assets/js/23498fd5.1c7adf5f.js | 1 - assets/js/23498fd5.3b8a29f6.js | 1 + assets/js/33bbe353.9ebf1df0.js | 1 + assets/js/33bbe353.af891d40.js | 1 - assets/js/48d75399.4501bc70.js | 1 + assets/js/48d75399.85e4bac4.js | 1 - assets/js/cda87995.19405962.js | 1 + assets/js/cda87995.f07505e8.js | 1 - assets/js/f2c21b54.0ce780c9.js | 1 - assets/js/f2c21b54.21375282.js | 1 + ...ntime~main.89780907.js => runtime~main.03a98c4b.js} | 2 +- docs/alpha-program/index.html | 4 ++-- docs/ambassadors/index.html | 4 ++-- docs/apps-index/index.html | 4 ++-- docs/bug-bounty/index.html | 4 ++-- docs/build-dapp/index.html | 4 ++-- docs/build-data/index.html | 4 ++-- docs/build-guide/index.html | 4 ++-- docs/build-hackathon/index.html | 4 ++-- docs/build-hrmp-channels/index.html | 4 ++-- docs/build-index/index.html | 4 ++-- docs/build-integrate-assets/index.html | 8 ++++---- docs/build-integration/index.html | 4 ++-- docs/build-light-clients/index.html | 4 ++-- docs/build-network-overview/index.html | 4 ++-- docs/build-node-interaction/index.html | 4 ++-- docs/build-node-management/index.html | 4 ++-- docs/build-open-source/index.html | 4 ++-- docs/build-oracle/index.html | 4 ++-- docs/build-pdk/index.html | 4 ++-- docs/build-protocol-info/index.html | 4 ++-- docs/build-smart-contracts/index.html | 4 ++-- docs/build-storage/index.html | 8 ++++---- docs/build-tools-index/index.html | 8 ++++---- docs/build-transaction-construction/index.html | 4 ++-- docs/community-index/index.html | 4 ++-- docs/community/index.html | 4 ++-- docs/contributing/index.html | 4 ++-- docs/contributors/index.html | 4 ++-- docs/dashboards-index/index.html | 4 ++-- docs/decentralized-futures/index.html | 4 ++-- docs/decentralized-voices/index.html | 4 ++-- docs/dev-heroes/index.html | 4 ++-- docs/explore-index/index.html | 4 ++-- docs/faq/index.html | 10 +++++----- docs/general-index/index.html | 4 ++-- docs/getting-started/index.html | 4 ++-- docs/glossary/index.html | 4 ++-- docs/governance-apps/index.html | 4 ++-- docs/grants/index.html | 4 ++-- docs/how-to-dyor/index.html | 4 ++-- docs/kusama-adversarial-cheatsheet/index.html | 4 ++-- docs/kusama-bug-bounty/index.html | 4 ++-- docs/kusama-claims/index.html | 4 ++-- docs/kusama-coc/index.html | 4 ++-- docs/kusama-community/index.html | 4 ++-- docs/kusama-getting-started/index.html | 4 ++-- docs/kusama-index/index.html | 4 ++-- docs/kusama-parameters/index.html | 4 ++-- docs/kusama-social-recovery/index.html | 4 ++-- docs/kusama-timeline/index.html | 4 ++-- docs/learn-DOT/index.html | 4 ++-- docs/learn-account-abstraction/index.html | 4 ++-- docs/learn-account-advanced/index.html | 4 ++-- docs/learn-account-multisig/index.html | 4 ++-- docs/learn-accounts/index.html | 4 ++-- docs/learn-advanced-index/index.html | 4 ++-- docs/learn-architecture-index/index.html | 4 ++-- docs/learn-architecture/index.html | 4 ++-- docs/learn-archive/index.html | 4 ++-- docs/learn-assets-index/index.html | 4 ++-- docs/learn-assets/index.html | 4 ++-- docs/learn-async-backing/index.html | 4 ++-- docs/learn-auction/index.html | 4 ++-- docs/learn-basics-index/index.html | 4 ++-- docs/learn-bridges/index.html | 4 ++-- docs/learn-collator/index.html | 4 ++-- docs/learn-comparisons-avalanche/index.html | 4 ++-- docs/learn-comparisons-cosmos/index.html | 4 ++-- docs/learn-comparisons-ethereum-2/index.html | 4 ++-- docs/learn-comparisons-kusama/index.html | 4 ++-- docs/learn-comparisons-rollups/index.html | 4 ++-- docs/learn-comparisons/index.html | 4 ++-- docs/learn-components-index/index.html | 4 ++-- docs/learn-consensus/index.html | 4 ++-- docs/learn-crowdloans/index.html | 4 ++-- docs/learn-cryptography/index.html | 4 ++-- docs/learn-future-implementations-index/index.html | 4 ++-- docs/learn-guides-accounts-multisig/index.html | 4 ++-- docs/learn-guides-accounts-proxy-pure/index.html | 4 ++-- docs/learn-guides-accounts-proxy/index.html | 4 ++-- docs/learn-guides-accounts/index.html | 4 ++-- docs/learn-guides-assets-create/index.html | 4 ++-- docs/learn-guides-assets-index/index.html | 4 ++-- docs/learn-guides-assets-ledger/index.html | 4 ++-- docs/learn-guides-bounties/index.html | 4 ++-- docs/learn-guides-identity/index.html | 4 ++-- docs/learn-guides-ledger/index.html | 4 ++-- docs/learn-guides-polkadot-opengov/index.html | 4 ++-- docs/learn-guides-staking-index/index.html | 4 ++-- docs/learn-guides-staking-pools/index.html | 4 ++-- docs/learn-guides-staking/index.html | 4 ++-- docs/learn-guides-transfers/index.html | 4 ++-- docs/learn-guides-treasury/index.html | 4 ++-- docs/learn-guides-vault/index.html | 4 ++-- docs/learn-hyperbridge/index.html | 4 ++-- docs/learn-identity/index.html | 4 ++-- docs/learn-implementations/index.html | 4 ++-- docs/learn-index/index.html | 4 ++-- docs/learn-inflation/index.html | 4 ++-- docs/learn-nft-pallets/index.html | 4 ++-- docs/learn-nft-projects/index.html | 4 ++-- docs/learn-nft/index.html | 4 ++-- docs/learn-nomination-pools/index.html | 4 ++-- docs/learn-nominator/index.html | 4 ++-- docs/learn-parachains-faq/index.html | 4 ++-- docs/learn-parachains-index/index.html | 4 ++-- docs/learn-parachains-protocol/index.html | 4 ++-- docs/learn-parachains/index.html | 4 ++-- docs/learn-parathreads/index.html | 4 ++-- docs/learn-participants-index/index.html | 4 ++-- docs/learn-phragmen/index.html | 4 ++-- docs/learn-polkadot-host/index.html | 4 ++-- docs/learn-polkadot-js-guides/index.html | 4 ++-- docs/learn-polkadot-opengov-index/index.html | 4 ++-- docs/learn-polkadot-opengov-origins/index.html | 4 ++-- docs/learn-polkadot-opengov-treasury/index.html | 4 ++-- docs/learn-polkadot-opengov/index.html | 4 ++-- docs/learn-polkadot-technical-fellowship/index.html | 4 ++-- docs/learn-polkadotjs-index/index.html | 4 ++-- docs/learn-proxies-pure/index.html | 4 ++-- docs/learn-proxies/index.html | 4 ++-- docs/learn-runtime-upgrades/index.html | 4 ++-- docs/learn-sassafras/index.html | 4 ++-- docs/learn-scams/index.html | 4 ++-- docs/learn-spree/index.html | 4 ++-- docs/learn-staking-advanced/index.html | 4 ++-- docs/learn-staking-index/index.html | 4 ++-- docs/learn-staking/index.html | 4 ++-- docs/learn-system-chains/index.html | 4 ++-- docs/learn-teleport/index.html | 4 ++-- docs/learn-transaction-fees/index.html | 4 ++-- docs/learn-transactions/index.html | 4 ++-- docs/learn-validator/index.html | 4 ++-- docs/learn-video-tutorials/index.html | 4 ++-- docs/learn-wasm/index.html | 4 ++-- docs/learn-xcm-index/index.html | 4 ++-- docs/learn-xcm-instructions/index.html | 4 ++-- docs/learn-xcm-pallet/index.html | 4 ++-- docs/learn-xcm-transport/index.html | 4 ++-- docs/learn-xcm-usecases/index.html | 4 ++-- docs/learn-xcm/index.html | 4 ++-- docs/learn-xcvm/index.html | 4 ++-- docs/learn/learn-controller/index.html | 4 ++-- docs/learn/learn-governance/index.html | 4 ++-- docs/learn/learn-launch/index.html | 4 ++-- docs/learn/learn-redenomination/index.html | 4 ++-- docs/learn/learn-treasury/index.html | 4 ++-- docs/learn/xcm/config-deep-dive/index.html | 4 ++-- docs/learn/xcm/fundamentals-fees/index.html | 4 ++-- docs/learn/xcm/fundamentals-multiasset/index.html | 4 ++-- docs/learn/xcm/fundamentals-summary/index.html | 4 ++-- docs/learn/xcm/fundamentals-xcvm/index.html | 4 ++-- docs/learn/xcm/fundamentals/index.html | 4 ++-- .../xcm/fundamentals/multilocation-example/index.html | 4 ++-- .../fundamentals/multilocation-junctions/index.html | 4 ++-- .../xcm/fundamentals/multilocation-summary/index.html | 4 ++-- docs/learn/xcm/fundamentals/multilocation/index.html | 4 ++-- docs/learn/xcm/index.html | 4 ++-- docs/learn/xcm/introduction/index.html | 4 ++-- docs/learn/xcm/journey-assets/index.html | 4 ++-- docs/learn/xcm/journey-channels/index.html | 4 ++-- docs/learn/xcm/journey-expectations/index.html | 4 ++-- docs/learn/xcm/journey-fees/index.html | 4 ++-- docs/learn/xcm/journey-holding/index.html | 4 ++-- docs/learn/xcm/journey-locks/index.html | 4 ++-- docs/learn/xcm/journey-origin/index.html | 4 ++-- docs/learn/xcm/journey-queries/index.html | 4 ++-- docs/learn/xcm/journey-register/index.html | 4 ++-- docs/learn/xcm/journey-summary/index.html | 4 ++-- docs/learn/xcm/journey-transact/index.html | 4 ++-- docs/learn/xcm/journey-version/index.html | 4 ++-- docs/learn/xcm/journey/index.html | 4 ++-- docs/learn/xcm/journey/transfers-reserve/index.html | 4 ++-- docs/learn/xcm/journey/transfers-summary/index.html | 4 ++-- docs/learn/xcm/journey/transfers-teleport/index.html | 4 ++-- docs/learn/xcm/journey/transfers/index.html | 4 ++-- docs/learn/xcm/overview-architecture/index.html | 4 ++-- docs/learn/xcm/overview-format/index.html | 4 ++-- docs/learn/xcm/overview-intro/index.html | 4 ++-- docs/learn/xcm/overview-summary/index.html | 4 ++-- docs/learn/xcm/overview-xcvm/index.html | 4 ++-- docs/learn/xcm/overview/index.html | 4 ++-- docs/learn/xcm/quickstart-first-look/index.html | 4 ++-- docs/learn/xcm/quickstart-simulator/index.html | 4 ++-- docs/learn/xcm/quickstart-summary/index.html | 4 ++-- docs/learn/xcm/quickstart/index.html | 4 ++-- docs/learn/xcm/reference-glossary/index.html | 4 ++-- docs/learn/xcm/reference-xcvm-registers/index.html | 4 ++-- docs/learn/xcm/references/index.html | 4 ++-- docs/learn/xcm/testing/index.html | 4 ++-- docs/ledger/index.html | 4 ++-- docs/maintain-archive/index.html | 4 ++-- docs/maintain-bootnode/index.html | 4 ++-- docs/maintain-endpoints/index.html | 4 ++-- docs/maintain-errors/index.html | 4 ++-- docs/maintain-guides-async-backing/index.html | 4 ++-- docs/maintain-guides-avoid-slashing/index.html | 4 ++-- docs/maintain-guides-how-to-chill/index.html | 4 ++-- .../index.html | 4 ++-- docs/maintain-guides-how-to-stop-validating/index.html | 4 ++-- docs/maintain-guides-how-to-systemd/index.html | 4 ++-- docs/maintain-guides-how-to-upgrade/index.html | 4 ++-- docs/maintain-guides-how-to-validate-kusama/index.html | 4 ++-- .../index.html | 4 ++-- docs/maintain-guides-secure-validator/index.html | 4 ++-- docs/maintain-guides-society-kusama/index.html | 10 +++++----- docs/maintain-guides-validator-community/index.html | 4 ++-- docs/maintain-guides-validator-payout/index.html | 4 ++-- docs/maintain-index/index.html | 4 ++-- docs/maintain-networks/index.html | 4 ++-- docs/maintain-polkadot-parameters/index.html | 4 ++-- docs/maintain-rpc/index.html | 4 ++-- docs/maintain-sync/index.html | 4 ++-- docs/maintain-wss/index.html | 4 ++-- docs/maintain/maintain-guides-democracy/index.html | 4 ++-- .../maintain-guides-how-to-join-council/index.html | 4 ++-- .../maintain-guides-how-to-vote-councillor/index.html | 4 ++-- docs/metadata/index.html | 4 ++-- docs/multisig-apps/index.html | 4 ++-- docs/parachains-apps/index.html | 4 ++-- docs/polkadot-direction/index.html | 4 ++-- docs/polkadot-v1/index.html | 4 ++-- docs/polkadot-vault/index.html | 4 ++-- docs/polkadot-vision-index/index.html | 4 ++-- docs/polkadotjs-ui/index.html | 4 ++-- docs/polkadotjs/index.html | 4 ++-- docs/programs-index/index.html | 4 ++-- docs/research/index.html | 4 ++-- docs/staking-apps/index.html | 4 ++-- docs/staking-dashboard/index.html | 4 ++-- docs/start-building/index.html | 4 ++-- docs/stay-safe-index/index.html | 4 ++-- docs/thousand-contributors/index.html | 4 ++-- docs/thousand-validators/index.html | 4 ++-- docs/transaction-attacks/index.html | 4 ++-- docs/wallets-and-extensions/index.html | 4 ++-- docs/wallets-index/index.html | 4 ++-- docs/web3-and-polkadot/index.html | 4 ++-- index.html | 4 ++-- search/index.html | 4 ++-- 252 files changed, 500 insertions(+), 500 deletions(-) delete mode 100644 assets/js/23498fd5.1c7adf5f.js create mode 100644 assets/js/23498fd5.3b8a29f6.js create mode 100644 assets/js/33bbe353.9ebf1df0.js delete mode 100644 assets/js/33bbe353.af891d40.js create mode 100644 assets/js/48d75399.4501bc70.js delete mode 100644 assets/js/48d75399.85e4bac4.js create mode 100644 assets/js/cda87995.19405962.js delete mode 100644 assets/js/cda87995.f07505e8.js delete mode 100644 assets/js/f2c21b54.0ce780c9.js create mode 100644 assets/js/f2c21b54.21375282.js rename assets/js/{runtime~main.89780907.js => runtime~main.03a98c4b.js} (97%) diff --git a/404.html b/404.html index 78abda97ea..6e5c876cb1 100644 --- a/404.html +++ b/404.html @@ -15,13 +15,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/23498fd5.1c7adf5f.js b/assets/js/23498fd5.1c7adf5f.js deleted file mode 100644 index 3c849a0fa3..0000000000 --- a/assets/js/23498fd5.1c7adf5f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[810],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>u});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),h=p(a),m=s,u=h["".concat(l,".").concat(m)]||h[m]||d[m]||i;return a?n.createElement(u,r(r({ref:t},c),{},{components:a})):n.createElement(u,r({ref:t},c))}));function u(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=a.length,r=new Array(i);r[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[h]="string"==typeof e?e:s,r[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>p,toc:()=>h});var n=a(87462),s=a(63366),i=(a(67294),a(3905)),r=["components"],o={id:"build-integrate-assets",title:"Assets on Polkadot",sidebar_label:"Integrating Assets",description:"Tools that you can use to integrating assets.",keywords:["assets","integration","api","operations"],slug:"../build-integrate-assets"},l=void 0,p={unversionedId:"build/build-integrate-assets",id:"build/build-integrate-assets",title:"Assets on Polkadot",description:"Tools that you can use to integrating assets.",source:"@site/../docs/build/build-integrate-assets.md",sourceDirName:"build",slug:"/build-integrate-assets",permalink:"/docs/build-integrate-assets",draft:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1696512501,formattedLastUpdatedAt:"Oct 5, 2023",frontMatter:{id:"build-integrate-assets",title:"Assets on Polkadot",sidebar_label:"Integrating Assets",description:"Tools that you can use to integrating assets.",keywords:["assets","integration","api","operations"],slug:"../build-integrate-assets"}},c={},h=[{value:"Assets Basics",id:"assets-basics",level:2},{value:"Asset Operations",id:"asset-operations",level:3},{value:"Integration",id:"integration",level:2},{value:"Parachain Node",id:"parachain-node",level:3},{value:"Asset Transfer API",id:"asset-transfer-api",level:3},{value:"Sidecar",id:"sidecar",level:3},{value:"Tx Wrapper Polkadot",id:"tx-wrapper-polkadot",level:3},{value:"XCM Transfer Monitoring",id:"xcm-transfer-monitoring",level:3},{value:"Monitoring of XCM deposits",id:"monitoring-of-xcm-deposits",level:4},{value:"Tracking back XCM information",id:"tracking-back-xcm-information",level:4},{value:"Additional Examples of Monitoring XCM Transfers",id:"additional-examples-of-monitoring-xcm-transfers",level:4},{value:"Monitoring of Failed XCM Transfers",id:"monitoring-of-failed-xcm-transfers",level:4}],d={toc:h},m="wrapper";function u(e){var t=e.components,a=(0,s.Z)(e,r);return(0,i.kt)(m,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The Kusama Relay Chain does not natively\nsupport assets beyond KSM. This functionality\nexists in parachains. On both Polkadot and Kusama, this parachain is called Asset Hub."),(0,i.kt)("p",null,"The Asset Hub provides a first-class interface for creating, managing, and using fungible and\nnon-fungible assets. The fungible interface is similar to Ethereum's ERC-20 standard. However, the\ndata structures and stateful operations are encoded directly into the chain's runtime, making\noperations fast and fee-efficient."),(0,i.kt)("p",null,"Beyond merely supporting assets, integrating an Asset Hub into your systems has several benefits for\ninfrastructure providers and users:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Support for on-chain assets."),(0,i.kt)("li",{parentName:"ul"},"Significantly lower transaction fees (about 1/10) than the Relay Chain."),(0,i.kt)("li",{parentName:"ul"},"Significantly lower deposits (1/10) than the Relay Chain. This includes the existential deposit\nand deposits for proxy/multisig operations."),(0,i.kt)("li",{parentName:"ul"},"Ability to pay transaction fees in certain assets. As in, accounts would ",(0,i.kt)("strong",{parentName:"li"},"not")," need DOT to exist\non-chain or pay fees.")),(0,i.kt)("p",null,"The Asset Hub will use DOT as its native currency. Users can transfer DOT from the Relay Chain into\nthe Asset Hub and use it natively. The Relay Chain will also accept DOT transfers from the Asset Hub\nback to the Relay Chain for staking, governance, or any other activity."),(0,i.kt)("p",null,"Using the Asset Hub for DOT/KSM balance transfers will be much more efficient than the Relay Chain\nand is highly recommended. Until domain-specific parachains are built, the Relay Chain will still\nneed to be used for staking and governance."),(0,i.kt)("h2",{id:"assets-basics"},"Assets Basics"),(0,i.kt)("p",null,"See the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/assets"},"Assets pallet")," for\nthe most up-to-date info and reference documentation."),(0,i.kt)("p",null,"Assets are stored as a map from an ID to information about the asset, including a management team,\ntotal supply, total number of accounts, its sufficiency for account existence, and more.\nAdditionally, the asset owner can register metadata like the name, symbol, and number of decimals\nfor representation."),(0,i.kt)("p",null,"Some assets, as determined by on-chain governance, are regarded as \u201csufficient\u201d. Sufficiency means\nthat the asset balance is enough to create the account on-chain, with no need for the DOT/KSM\nexistential deposit. Likewise, you cannot send a non-sufficient asset to an account that does not\nexist. Sufficient assets can be used to pay transaction fees (i.e. there is no need to hold DOT/KSM\non the account)."),(0,i.kt)("p",null,"Assets do have a minimum balance (set by the creator), and if an account drops below that balance,\nthe dust is lost."),(0,i.kt)("h3",{id:"asset-operations"},"Asset Operations"),(0,i.kt)("p",null,"The Assets pallet has its interface for dealing with assets. See the ",(0,i.kt)("a",{parentName:"p",href:"#integration"},"Integration"),"\nsection below for how to fetch information and construct transactions."),(0,i.kt)("p",null,"The main functions you will probably interact with are ",(0,i.kt)("inlineCode",{parentName:"p"},"transfer")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"transfer_keep_alive"),". These\nfunctions transfer some ",(0,i.kt)("inlineCode",{parentName:"p"},"amount")," (balance) of an ",(0,i.kt)("inlineCode",{parentName:"p"},"AssetId")," (a ",(0,i.kt)("inlineCode",{parentName:"p"},"u32"),", not a contract address) to\nanother account."),(0,i.kt)("p",null,"The Assets pallet also provides an ",(0,i.kt)("inlineCode",{parentName:"p"},"approve_transfer"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"cancel_approval"),", and ",(0,i.kt)("inlineCode",{parentName:"p"},"transfer_approved"),"\ninterface for non-custodial operations."),(0,i.kt)("p",null,"Asset transfers will result in an ",(0,i.kt)("inlineCode",{parentName:"p"},"assets.transferred")," event. The same instructions for\n",(0,i.kt)("a",{parentName:"p",href:"/docs/build-protocol-info#events"},"monitoring events and ",(0,i.kt)("strong",{parentName:"a"},"not")," transactions")," applies to asset\ntransfers."),(0,i.kt)("p",null,"Note that you can use the same addresses (except\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy"},"pure proxies"),"!) on the Asset Hub that\nyou use on the Relay Chain. The SS58 encodings are the same; only the chain information (genesis\nhash, etc.) will change on transaction construction."),(0,i.kt)("h2",{id:"integration"},"Integration"),(0,i.kt)("p",null,"The Asset Hub will come with the same tooling suite that Parity Technologies provides for the Relay\nChain, namely ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-api-sidecar"},"API Sidecar")," and\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/txwrapper-core/tree/main/packages/txwrapper-polkadot"},"TxWrapper Polkadot"),",\nas well as the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/asset-transfer-api"},"Asset Transfer API"),". If you have a\ntechnical question or issue about how to use one of the integration tools, please file a GitHub\nissue so a developer can help."),(0,i.kt)("h3",{id:"parachain-node"},"Parachain Node"),(0,i.kt)("p",null,"Using the Asset Hub will require running a parachain node to sync the chain. This is very similar to\nrunning a Kusama node, with the addition of\nsome extra flags. You can follow\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus#asset-hub-"},"these guidelines")," to set\nup an Asset Hub node."),(0,i.kt)("h3",{id:"asset-transfer-api"},"Asset Transfer API"),(0,i.kt)("p",null,"Asset-transfer-api is a library focused on simplifying the construction of asset transfers for\nSubstrate-based chains that involve system parachains like Asset Hub (Polkadot and Kusama). It\nexposes a reduced set of methods that facilitate users to send transfers to other (para) chains or\nlocally. You can refer to\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/asset-transfer-api/tree/main#current-cross-chain-support"},"this table"),"\nfor the current cross-chain support and ",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/asset-transfer-api/"},"here")," for\nthe complete documentation, including installation guide and usage examples."),(0,i.kt)("h3",{id:"sidecar"},"Sidecar"),(0,i.kt)("p",null,"API Sidecar is a REST service for Relay Chain and parachain nodes. It comes with endpoints to query\ninformation about assets and asset balances on the Asset Hub."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Asset lookups always use the ",(0,i.kt)("inlineCode",{parentName:"li"},"AssetId")," to refer to an asset class. On-chain metadata is subject to\nchange and thus unsuitable as a canonical index."),(0,i.kt)("li",{parentName:"ul"},"Please refer to ",(0,i.kt)("a",{parentName:"li",href:"https://paritytech.github.io/substrate-api-sidecar/dist/"},"docs")," for full usage\ninformation. Details on options like how to make a historical query are not included here.")),(0,i.kt)("p",null,"Here are the available public instances:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io"},"Sidecar connected to Polkadot Asset Hub"),"\nand"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io"},"Sidecar connected to Kusama Asset Hub"))),(0,i.kt)("p",null,"The purpose of these instances is to allow anyone to check and get a quick overview of the info that\nthe asset-related endpoints provide."),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"These instances should only be used for ad-hoc checks or tests and not for production, heavy testing\nor any other critical purpose.")),(0,i.kt)("h3",{id:"tx-wrapper-polkadot"},"Tx Wrapper Polkadot"),(0,i.kt)("p",null,"TxWrapper Polkadot is a library designed to facilitate transaction construction and signing in\noffline environments. It comes with asset-specific functions to use on the Asset Hub. When\nconstructing parachain transactions, you can use ",(0,i.kt)("inlineCode",{parentName:"p"},"txwrapper-polkadot")," exactly as on the Relay Chain,\nbut construct transactions with the appropriate parachain metadata like genesis hash, spec version,\nand type registry."),(0,i.kt)("h3",{id:"xcm-transfer-monitoring"},"XCM Transfer Monitoring"),(0,i.kt)("h4",{id:"monitoring-of-xcm-deposits"},"Monitoring of XCM deposits"),(0,i.kt)("p",null,"Thanks to XCM and a growing number of parachains,\nKSM can exist across several blockchains, which\nmeans the providers need to monitor cross-chain transfers on top of local transfers and\ncorresponding ",(0,i.kt)("inlineCode",{parentName:"p"},"balances.transfer")," events."),(0,i.kt)("p",null,"Currently KSM can be sent and received in the\nRelay Chain either with a ",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-teleport"},"Teleport")," from\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-system-chains"},"system parachains")," or with a\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-xcm-pallet#transfer-reserve-vs-teleport"},"Reserve Backed Transfer"),"\nfrom any other parachain. In both cases, the event emitted when processing the transfer is the\n",(0,i.kt)("inlineCode",{parentName:"p"},"balances.deposit")," event. Hence, providers should listen to these events, pointing to an address in\ntheir system. For this, the service provider must query every new block created, loop through the\nevents array, filter for any ",(0,i.kt)("inlineCode",{parentName:"p"},"balances.deposit")," event, and apply the appropriate business logic."),(0,i.kt)("h4",{id:"tracking-back-xcm-information"},"Tracking back XCM information"),(0,i.kt)("p",null,"What has been mentioned earlier should be sufficient to confirm that\nKSM has arrived in a given account via XCM.\nHowever, in some cases, it may be interesting to identify the cross-chain message that emitted the\nrelevant ",(0,i.kt)("inlineCode",{parentName:"p"},"balances.deposit")," event. This can be done as follows:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Query the Relay Chain ",(0,i.kt)("inlineCode",{parentName:"li"},"at")," the block the ",(0,i.kt)("inlineCode",{parentName:"li"},"balances.deposit")," event was emitted."),(0,i.kt)("li",{parentName:"ol"},"Filter for a ",(0,i.kt)("inlineCode",{parentName:"li"},"messageQueue(Processed)")," event, also emitted during block initialization. This\nevent has a parameter ",(0,i.kt)("inlineCode",{parentName:"li"},"Id"),". The value of ",(0,i.kt)("inlineCode",{parentName:"li"},"Id")," identifies the cross-chain message received in the\nRelay Chain. It can be used to track back the message in the origin parachain if needed. Note\nthat a block may contain several ",(0,i.kt)("inlineCode",{parentName:"li"},"messageQueue(Processed)")," events corresponding to several\ncross-chain messages processed for this block.")),(0,i.kt)("h4",{id:"additional-examples-of-monitoring-xcm-transfers"},"Additional Examples of Monitoring XCM Transfers"),(0,i.kt)("p",null,"The two previous sections outline the process of monitoring XCM deposits to specific account(s) and\nthen tracing back the origin of these deposits. However, the process of tracking an XCM transfer\n(hence the events to look for) may vary based on the direction of the XCM message. Here are some\nexamples to showcase the slight differences:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"For an XCM transfer from a Parachain to a Relay chain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-2f4138e73affe763bebbefa82ee2eb2633425541"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://moonbeam.subscan.io/extrinsic/4531955-6?event=4531955-29"},"event")," to look for in\nthe Parachain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"parachainsystem (UpwardMessageSent)"),", and the parameter\n",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," in this event identifies the XCM transfer."),(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.subscan.io/extrinsic/17487547-0?event=17487547-3"},"event")," to track in the\nRelay chain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"messagequeue (Processed)"),", and the parameter ",(0,i.kt)("inlineCode",{parentName:"li"},"id")," of the event\nshould be the same as the ",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," found in the Parachain event."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"For an XCM transfer from a Relay chain to a Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-9b01c2916c4d3c5ad01ee350bdda13059358981f"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.subscan.io/extrinsic/17487930-2?tab=xcm_transfer"},"XCM Transfer Hash")," is\nwhat we need to check on the Relay chain side."),(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://acala.subscan.io/extrinsic/4553422-1?event=4553422-5"},"event")," to look for in the\nParachain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"dmpqueue (ExecutedDownward)"),", and the parameter that identifies the\nXCM message is either called ",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"message_id"),"."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"For an XCM transfer from a System Parachain to a Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-7a1c6fd86e290680f8ee48cee8a64df8e75f7040"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://assethub-polkadot.subscan.io/extrinsic/4677169-2?event=4677169-4"},"event")," to look\nfor in the System Parachain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"xcmpqueue (XcmpMessageSent)"),", and again the\n",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," is one of the parameters of the event."),(0,i.kt)("li",{parentName:"ul"},"The corresponding ",(0,i.kt)("a",{parentName:"li",href:"https://astar.subscan.io/extrinsic/4540721-1?event=4540721-7"},"event")," in the\nParachain side is the ",(0,i.kt)("inlineCode",{parentName:"li"},"xcmpqueue (Success)")," and the ",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," found in that event should\nhave the same value as the one in the System parachain.")))),(0,i.kt)("p",null,"More examples with different directions and their corresponding events, can be found in this\n",(0,i.kt)("a",{parentName:"p",href:"https://hackmd.io/@LwMsxe3-SFmNXxugAXOKgg/SJrREymlp"},'"How to trace XCM Transfers"')," page."),(0,i.kt)("h4",{id:"monitoring-of-failed-xcm-transfers"},"Monitoring of Failed XCM Transfers"),(0,i.kt)("p",null,"In case that an XCM transfer fails to complete successfully, then we will notice some different\nparameters in the events emitted or different events. Below are some examples:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"From a Relay chain to a System Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-c8d7186edb43a592d65b3b5a87c4ecaac38c5aa2"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"We will see the\n",(0,i.kt)("a",{parentName:"li",href:"https://assethub-polkadot.subscan.io/extrinsic/4671081-0?event=4671081-1"},"event"),(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"dmpqueue (ExecutedDownward)"))," in the System Parachain side with the following parameters:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"outcome"))," with value ",(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"Incomplete"))," and with the type of error which in this example is\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/blob/c54ea64af43b522d23bfabb8d917a490c0f23217/polkadot/xcm/src/v2/traits.rs#L43"},"UntrustedReserveLocation"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"message_id"))," which shows the hash of the XCM Transfer."))))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"From a Parachain to another Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-3e74e95204faa6ecf3c81f5129b85f498b89cff2"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"We will see the ",(0,i.kt)("a",{parentName:"li",href:"https://interlay.subscan.io/extrinsic/3627057-1?event=3627057-8"},"event"),(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"xcmpqueue (Fail)"))," in the destination Parachain with the following parameters:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"error"))," which in this example is\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/blob/c54ea64af43b522d23bfabb8d917a490c0f23217/polkadot/xcm/src/v2/traits.rs#L98"},"TooExpensive"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"message_hash"))," which identifies the XCM Transfer."))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Note")," : there might be another\n",(0,i.kt)("a",{parentName:"li",href:"https://interlay.subscan.io/extrinsic/3627057-1?event=3627057-7"},"event")," called\n",(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"polkadotxcm (AssetsTrapped)"))," which indicates that some assets have been trapped (and hence\ncan be claimed).")))),(0,i.kt)("p",null,"A great resource to learn more about Error Management in XCM is the Polkadot blog post from Gavin\nWood,\n",(0,i.kt)("a",{parentName:"p",href:"https://www.polkadot.network/blog/xcm-part-three-execution-and-error-management"},"XCM Part III: Execution and Error Management"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/23498fd5.3b8a29f6.js b/assets/js/23498fd5.3b8a29f6.js new file mode 100644 index 0000000000..37fa68334e --- /dev/null +++ b/assets/js/23498fd5.3b8a29f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[810],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>u});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),h=p(a),m=s,u=h["".concat(l,".").concat(m)]||h[m]||d[m]||i;return a?n.createElement(u,r(r({ref:t},c),{},{components:a})):n.createElement(u,r({ref:t},c))}));function u(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=a.length,r=new Array(i);r[0]=m;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[h]="string"==typeof e?e:s,r[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>p,toc:()=>h});var n=a(87462),s=a(63366),i=(a(67294),a(3905)),r=["components"],o={id:"build-integrate-assets",title:"Assets on Polkadot",sidebar_label:"Integrating Assets",description:"Tools that you can use to integrating assets.",keywords:["assets","integration","api","operations"],slug:"../build-integrate-assets"},l=void 0,p={unversionedId:"build/build-integrate-assets",id:"build/build-integrate-assets",title:"Assets on Polkadot",description:"Tools that you can use to integrating assets.",source:"@site/../docs/build/build-integrate-assets.md",sourceDirName:"build",slug:"/build-integrate-assets",permalink:"/docs/build-integrate-assets",draft:!1,tags:[],version:"current",lastUpdatedBy:"Alberto Nicolas Penayo",lastUpdatedAt:1710964607,formattedLastUpdatedAt:"Mar 20, 2024",frontMatter:{id:"build-integrate-assets",title:"Assets on Polkadot",sidebar_label:"Integrating Assets",description:"Tools that you can use to integrating assets.",keywords:["assets","integration","api","operations"],slug:"../build-integrate-assets"}},c={},h=[{value:"Assets Basics",id:"assets-basics",level:2},{value:"Asset Operations",id:"asset-operations",level:3},{value:"Integration",id:"integration",level:2},{value:"Parachain Node",id:"parachain-node",level:3},{value:"Asset Transfer API",id:"asset-transfer-api",level:3},{value:"Sidecar",id:"sidecar",level:3},{value:"Tx Wrapper Polkadot",id:"tx-wrapper-polkadot",level:3},{value:"XCM Transfer Monitoring",id:"xcm-transfer-monitoring",level:3},{value:"Monitoring of XCM deposits",id:"monitoring-of-xcm-deposits",level:4},{value:"Tracking back XCM information",id:"tracking-back-xcm-information",level:4},{value:"Additional Examples of Monitoring XCM Transfers",id:"additional-examples-of-monitoring-xcm-transfers",level:4},{value:"Monitoring of Failed XCM Transfers",id:"monitoring-of-failed-xcm-transfers",level:4}],d={toc:h},m="wrapper";function u(e){var t=e.components,a=(0,s.Z)(e,r);return(0,i.kt)(m,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The Kusama Relay Chain does not natively\nsupport assets beyond KSM. This functionality\nexists in parachains. On both Polkadot and Kusama, this parachain is called Asset Hub."),(0,i.kt)("p",null,"The Asset Hub provides a first-class interface for creating, managing, and using fungible and\nnon-fungible assets. The fungible interface is similar to Ethereum's ERC-20 standard. However, the\ndata structures and stateful operations are encoded directly into the chain's runtime, making\noperations fast and fee-efficient."),(0,i.kt)("p",null,"Beyond merely supporting assets, integrating an Asset Hub into your systems has several benefits for\ninfrastructure providers and users:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Support for on-chain assets."),(0,i.kt)("li",{parentName:"ul"},"Significantly lower transaction fees (about 1/10) than the Relay Chain."),(0,i.kt)("li",{parentName:"ul"},"Significantly lower deposits (1/100) than the Relay Chain. This includes the existential deposit\nand deposits for proxy/multisig operations."),(0,i.kt)("li",{parentName:"ul"},"Ability to pay transaction fees in certain assets. As in, accounts would ",(0,i.kt)("strong",{parentName:"li"},"not")," need DOT to exist\non-chain or pay fees.")),(0,i.kt)("p",null,"The Asset Hub will use DOT as its native currency. Users can transfer DOT from the Relay Chain into\nthe Asset Hub and use it natively. The Relay Chain will also accept DOT transfers from the Asset Hub\nback to the Relay Chain for staking, governance, or any other activity."),(0,i.kt)("p",null,"Using the Asset Hub for DOT/KSM balance transfers will be much more efficient than the Relay Chain\nand is highly recommended. Until domain-specific parachains are built, the Relay Chain will still\nneed to be used for staking and governance."),(0,i.kt)("h2",{id:"assets-basics"},"Assets Basics"),(0,i.kt)("p",null,"See the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/assets"},"Assets pallet")," for\nthe most up-to-date info and reference documentation."),(0,i.kt)("p",null,"Assets are stored as a map from an ID to information about the asset, including a management team,\ntotal supply, total number of accounts, its sufficiency for account existence, and more.\nAdditionally, the asset owner can register metadata like the name, symbol, and number of decimals\nfor representation."),(0,i.kt)("p",null,"Some assets, as determined by on-chain governance, are regarded as \u201csufficient\u201d. Sufficiency means\nthat the asset balance is enough to create the account on-chain, with no need for the DOT/KSM\nexistential deposit. Likewise, you cannot send a non-sufficient asset to an account that does not\nexist. Sufficient assets can be used to pay transaction fees (i.e. there is no need to hold DOT/KSM\non the account)."),(0,i.kt)("p",null,"Assets do have a minimum balance (set by the creator), and if an account drops below that balance,\nthe dust is lost."),(0,i.kt)("h3",{id:"asset-operations"},"Asset Operations"),(0,i.kt)("p",null,"The Assets pallet has its interface for dealing with assets. See the ",(0,i.kt)("a",{parentName:"p",href:"#integration"},"Integration"),"\nsection below for how to fetch information and construct transactions."),(0,i.kt)("p",null,"The main functions you will probably interact with are ",(0,i.kt)("inlineCode",{parentName:"p"},"transfer")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"transfer_keep_alive"),". These\nfunctions transfer some ",(0,i.kt)("inlineCode",{parentName:"p"},"amount")," (balance) of an ",(0,i.kt)("inlineCode",{parentName:"p"},"AssetId")," (a ",(0,i.kt)("inlineCode",{parentName:"p"},"u32"),", not a contract address) to\nanother account."),(0,i.kt)("p",null,"The Assets pallet also provides an ",(0,i.kt)("inlineCode",{parentName:"p"},"approve_transfer"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"cancel_approval"),", and ",(0,i.kt)("inlineCode",{parentName:"p"},"transfer_approved"),"\ninterface for non-custodial operations."),(0,i.kt)("p",null,"Asset transfers will result in an ",(0,i.kt)("inlineCode",{parentName:"p"},"assets.transferred")," event. The same instructions for\n",(0,i.kt)("a",{parentName:"p",href:"/docs/build-protocol-info#events"},"monitoring events and ",(0,i.kt)("strong",{parentName:"a"},"not")," transactions")," applies to asset\ntransfers."),(0,i.kt)("p",null,"Note that you can use the same addresses (except\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy"},"pure proxies"),"!) on the Asset Hub that\nyou use on the Relay Chain. The SS58 encodings are the same; only the chain information (genesis\nhash, etc.) will change on transaction construction."),(0,i.kt)("h2",{id:"integration"},"Integration"),(0,i.kt)("p",null,"The Asset Hub will come with the same tooling suite that Parity Technologies provides for the Relay\nChain, namely ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-api-sidecar"},"API Sidecar")," and\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/txwrapper-core/tree/main/packages/txwrapper-polkadot"},"TxWrapper Polkadot"),",\nas well as the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/asset-transfer-api"},"Asset Transfer API"),". If you have a\ntechnical question or issue about how to use one of the integration tools, please file a GitHub\nissue so a developer can help."),(0,i.kt)("h3",{id:"parachain-node"},"Parachain Node"),(0,i.kt)("p",null,"Using the Asset Hub will require running a parachain node to sync the chain. This is very similar to\nrunning a Kusama node, with the addition of\nsome extra flags. You can follow\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus#asset-hub-"},"these guidelines")," to set\nup an Asset Hub node."),(0,i.kt)("h3",{id:"asset-transfer-api"},"Asset Transfer API"),(0,i.kt)("p",null,"Asset-transfer-api is a library focused on simplifying the construction of asset transfers for\nSubstrate-based chains that involve system parachains like Asset Hub (Polkadot and Kusama). It\nexposes a reduced set of methods that facilitate users to send transfers to other (para) chains or\nlocally. You can refer to\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/asset-transfer-api/tree/main#current-cross-chain-support"},"this table"),"\nfor the current cross-chain support and ",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/asset-transfer-api/"},"here")," for\nthe complete documentation, including installation guide and usage examples."),(0,i.kt)("h3",{id:"sidecar"},"Sidecar"),(0,i.kt)("p",null,"API Sidecar is a REST service for Relay Chain and parachain nodes. It comes with endpoints to query\ninformation about assets and asset balances on the Asset Hub."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Asset lookups always use the ",(0,i.kt)("inlineCode",{parentName:"li"},"AssetId")," to refer to an asset class. On-chain metadata is subject to\nchange and thus unsuitable as a canonical index."),(0,i.kt)("li",{parentName:"ul"},"Please refer to ",(0,i.kt)("a",{parentName:"li",href:"https://paritytech.github.io/substrate-api-sidecar/dist/"},"docs")," for full usage\ninformation. Details on options like how to make a historical query are not included here.")),(0,i.kt)("p",null,"Here are the available public instances:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io"},"Sidecar connected to Polkadot Asset Hub"),"\nand"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io"},"Sidecar connected to Kusama Asset Hub"))),(0,i.kt)("p",null,"The purpose of these instances is to allow anyone to check and get a quick overview of the info that\nthe asset-related endpoints provide."),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"These instances should only be used for ad-hoc checks or tests and not for production, heavy testing\nor any other critical purpose.")),(0,i.kt)("h3",{id:"tx-wrapper-polkadot"},"Tx Wrapper Polkadot"),(0,i.kt)("p",null,"TxWrapper Polkadot is a library designed to facilitate transaction construction and signing in\noffline environments. It comes with asset-specific functions to use on the Asset Hub. When\nconstructing parachain transactions, you can use ",(0,i.kt)("inlineCode",{parentName:"p"},"txwrapper-polkadot")," exactly as on the Relay Chain,\nbut construct transactions with the appropriate parachain metadata like genesis hash, spec version,\nand type registry."),(0,i.kt)("h3",{id:"xcm-transfer-monitoring"},"XCM Transfer Monitoring"),(0,i.kt)("h4",{id:"monitoring-of-xcm-deposits"},"Monitoring of XCM deposits"),(0,i.kt)("p",null,"Thanks to XCM and a growing number of parachains,\nKSM can exist across several blockchains, which\nmeans the providers need to monitor cross-chain transfers on top of local transfers and\ncorresponding ",(0,i.kt)("inlineCode",{parentName:"p"},"balances.transfer")," events."),(0,i.kt)("p",null,"Currently KSM can be sent and received in the\nRelay Chain either with a ",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-teleport"},"Teleport")," from\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-system-chains"},"system parachains")," or with a\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-xcm-pallet#transfer-reserve-vs-teleport"},"Reserve Backed Transfer"),"\nfrom any other parachain. In both cases, the event emitted when processing the transfer is the\n",(0,i.kt)("inlineCode",{parentName:"p"},"balances.deposit")," event. Hence, providers should listen to these events, pointing to an address in\ntheir system. For this, the service provider must query every new block created, loop through the\nevents array, filter for any ",(0,i.kt)("inlineCode",{parentName:"p"},"balances.deposit")," event, and apply the appropriate business logic."),(0,i.kt)("h4",{id:"tracking-back-xcm-information"},"Tracking back XCM information"),(0,i.kt)("p",null,"What has been mentioned earlier should be sufficient to confirm that\nKSM has arrived in a given account via XCM.\nHowever, in some cases, it may be interesting to identify the cross-chain message that emitted the\nrelevant ",(0,i.kt)("inlineCode",{parentName:"p"},"balances.deposit")," event. This can be done as follows:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Query the Relay Chain ",(0,i.kt)("inlineCode",{parentName:"li"},"at")," the block the ",(0,i.kt)("inlineCode",{parentName:"li"},"balances.deposit")," event was emitted."),(0,i.kt)("li",{parentName:"ol"},"Filter for a ",(0,i.kt)("inlineCode",{parentName:"li"},"messageQueue(Processed)")," event, also emitted during block initialization. This\nevent has a parameter ",(0,i.kt)("inlineCode",{parentName:"li"},"Id"),". The value of ",(0,i.kt)("inlineCode",{parentName:"li"},"Id")," identifies the cross-chain message received in the\nRelay Chain. It can be used to track back the message in the origin parachain if needed. Note\nthat a block may contain several ",(0,i.kt)("inlineCode",{parentName:"li"},"messageQueue(Processed)")," events corresponding to several\ncross-chain messages processed for this block.")),(0,i.kt)("h4",{id:"additional-examples-of-monitoring-xcm-transfers"},"Additional Examples of Monitoring XCM Transfers"),(0,i.kt)("p",null,"The two previous sections outline the process of monitoring XCM deposits to specific account(s) and\nthen tracing back the origin of these deposits. However, the process of tracking an XCM transfer\n(hence the events to look for) may vary based on the direction of the XCM message. Here are some\nexamples to showcase the slight differences:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"For an XCM transfer from a Parachain to a Relay chain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-2f4138e73affe763bebbefa82ee2eb2633425541"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://moonbeam.subscan.io/extrinsic/4531955-6?event=4531955-29"},"event")," to look for in\nthe Parachain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"parachainsystem (UpwardMessageSent)"),", and the parameter\n",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," in this event identifies the XCM transfer."),(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.subscan.io/extrinsic/17487547-0?event=17487547-3"},"event")," to track in the\nRelay chain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"messagequeue (Processed)"),", and the parameter ",(0,i.kt)("inlineCode",{parentName:"li"},"id")," of the event\nshould be the same as the ",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," found in the Parachain event."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"For an XCM transfer from a Relay chain to a Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-9b01c2916c4d3c5ad01ee350bdda13059358981f"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.subscan.io/extrinsic/17487930-2?tab=xcm_transfer"},"XCM Transfer Hash")," is\nwhat we need to check on the Relay chain side."),(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://acala.subscan.io/extrinsic/4553422-1?event=4553422-5"},"event")," to look for in the\nParachain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"dmpqueue (ExecutedDownward)"),", and the parameter that identifies the\nXCM message is either called ",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"message_id"),"."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"For an XCM transfer from a System Parachain to a Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-7a1c6fd86e290680f8ee48cee8a64df8e75f7040"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"The ",(0,i.kt)("a",{parentName:"li",href:"https://assethub-polkadot.subscan.io/extrinsic/4677169-2?event=4677169-4"},"event")," to look\nfor in the System Parachain side is called ",(0,i.kt)("inlineCode",{parentName:"li"},"xcmpqueue (XcmpMessageSent)"),", and again the\n",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," is one of the parameters of the event."),(0,i.kt)("li",{parentName:"ul"},"The corresponding ",(0,i.kt)("a",{parentName:"li",href:"https://astar.subscan.io/extrinsic/4540721-1?event=4540721-7"},"event")," in the\nParachain side is the ",(0,i.kt)("inlineCode",{parentName:"li"},"xcmpqueue (Success)")," and the ",(0,i.kt)("inlineCode",{parentName:"li"},"message_hash")," found in that event should\nhave the same value as the one in the System parachain.")))),(0,i.kt)("p",null,"More examples with different directions and their corresponding events, can be found in this\n",(0,i.kt)("a",{parentName:"p",href:"https://hackmd.io/@LwMsxe3-SFmNXxugAXOKgg/SJrREymlp"},'"How to trace XCM Transfers"')," page."),(0,i.kt)("h4",{id:"monitoring-of-failed-xcm-transfers"},"Monitoring of Failed XCM Transfers"),(0,i.kt)("p",null,"In case that an XCM transfer fails to complete successfully, then we will notice some different\nparameters in the events emitted or different events. Below are some examples:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"From a Relay chain to a System Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-c8d7186edb43a592d65b3b5a87c4ecaac38c5aa2"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"We will see the\n",(0,i.kt)("a",{parentName:"li",href:"https://assethub-polkadot.subscan.io/extrinsic/4671081-0?event=4671081-1"},"event"),(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"dmpqueue (ExecutedDownward)"))," in the System Parachain side with the following parameters:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"outcome"))," with value ",(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"Incomplete"))," and with the type of error which in this example is\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/blob/c54ea64af43b522d23bfabb8d917a490c0f23217/polkadot/xcm/src/v2/traits.rs#L43"},"UntrustedReserveLocation"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"message_id"))," which shows the hash of the XCM Transfer."))))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"From a Parachain to another Parachain\n",(0,i.kt)("em",{parentName:"p"},"(",(0,i.kt)("a",{parentName:"em",href:"https://polkadot.subscan.io/xcm_message/polkadot-3e74e95204faa6ecf3c81f5129b85f498b89cff2"},"example"),")"),":"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"We will see the ",(0,i.kt)("a",{parentName:"li",href:"https://interlay.subscan.io/extrinsic/3627057-1?event=3627057-8"},"event"),(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"xcmpqueue (Fail)"))," in the destination Parachain with the following parameters:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"error"))," which in this example is\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/blob/c54ea64af43b522d23bfabb8d917a490c0f23217/polkadot/xcm/src/v2/traits.rs#L98"},"TooExpensive"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"message_hash"))," which identifies the XCM Transfer."))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Note")," : there might be another\n",(0,i.kt)("a",{parentName:"li",href:"https://interlay.subscan.io/extrinsic/3627057-1?event=3627057-7"},"event")," called\n",(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"polkadotxcm (AssetsTrapped)"))," which indicates that some assets have been trapped (and hence\ncan be claimed).")))),(0,i.kt)("p",null,"A great resource to learn more about Error Management in XCM is the Polkadot blog post from Gavin\nWood,\n",(0,i.kt)("a",{parentName:"p",href:"https://www.polkadot.network/blog/xcm-part-three-execution-and-error-management"},"XCM Part III: Execution and Error Management"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/33bbe353.9ebf1df0.js b/assets/js/33bbe353.9ebf1df0.js new file mode 100644 index 0000000000..4db2b384c9 --- /dev/null +++ b/assets/js/33bbe353.9ebf1df0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7908],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>c});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var l=n.createContext({}),d=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},m=function(e){var t=d(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),u=d(a),h=i,c=u["".concat(l,".").concat(h)]||u[h]||p[h]||o;return a?n.createElement(c,r(r({ref:t},m),{},{components:a})):n.createElement(c,r({ref:t},m))}));function c(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,r=new Array(o);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:i,r[1]=s;for(var d=2;d{a.r(t),a.d(t,{assets:()=>m,contentTitle:()=>l,default:()=>c,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var n=a(87462),i=a(63366),o=(a(67294),a(3905)),r=["components"],s={id:"maintain-guides-society-kusama",title:"Kappa Sigma Mu",sidebar_label:"Kappa Sigma Mu",description:"Learn about the Kappa Sigma Mu society and join as a member.",keywords:["kappa sigma mu","society","kusama","member"],slug:"../../maintain-guides-society-kusama"},l=void 0,d={unversionedId:"maintain/kusama/maintain-guides-society-kusama",id:"maintain/kusama/maintain-guides-society-kusama",title:"Kappa Sigma Mu",description:"Learn about the Kappa Sigma Mu society and join as a member.",source:"@site/../docs/maintain/kusama/maintain-guides-society-kusama.md",sourceDirName:"maintain/kusama",slug:"/maintain-guides-society-kusama",permalink:"/docs/maintain-guides-society-kusama",draft:!1,tags:[],version:"current",lastUpdatedBy:"Andrei Kostakov",lastUpdatedAt:1710922051,formattedLastUpdatedAt:"Mar 20, 2024",frontMatter:{id:"maintain-guides-society-kusama",title:"Kappa Sigma Mu",sidebar_label:"Kappa Sigma Mu",description:"Learn about the Kappa Sigma Mu society and join as a member.",keywords:["kappa sigma mu","society","kusama","member"],slug:"../../maintain-guides-society-kusama"},sidebar:"docs",previous:{title:"Community",permalink:"/docs/kusama-community"},next:{title:"Wallets",permalink:"/docs/wallets-index"}},m={},u=[{value:"UI Overview",id:"ui-overview",level:2},{value:"User Types",id:"user-types",level:2},{value:"Procedure",id:"procedure",level:2},{value:"1. Bid Phase",id:"1-bid-phase",level:3},{value:"2. Candidate Phase",id:"2-candidate-phase",level:3},{value:"Lock-up Time",id:"lock-up-time",level:4},{value:"3. Member Phase",id:"3-member-phase",level:3},{value:"Useful links",id:"useful-links",level:2}],p={toc:u},h="wrapper";function c(e){var t=e.components,s=(0,i.Z)(e,r);return(0,o.kt)(h,(0,n.Z)({},p,s,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Kappa Sigma Mu is a membership club using the Substrate\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_society/index.html"},"Society pallet"),". It is an\neconomic game to incentivize users to join a society that coordinates around whatever the rules are\ndecided to be. The members of the society are incentivized to participate in the society via the\nrewards paid by the treasury. Currently, there is only one society on Kusama but it is possible to\nhave multiple societies in the future through a runtime upgrade."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"kusama_society_page",src:a(18330).Z,width:"2880",height:"1650"}),"\n",(0,o.kt)("img",{alt:"kusama_society_page2",src:a(76014).Z,width:"2874",height:"716"})),(0,o.kt)("p",null,"Before joining the society, let's take a brief look at the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/society"},"Society UI")," on Polkadot-JS apps and read through all the\n",(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"rules"),"\nto become a member."),(0,o.kt)("h2",{id:"ui-overview"},"UI Overview"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Members"),": The number of members in the society. Currently, the maximum number of members is set\nto ",(0,o.kt)("inlineCode",{parentName:"li"},"150"),". It can be changed by using governance to increase the number."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Rotation"),": The time period for membership rotations."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Challenge"),": The time period to randomly select one of the members to defend his membership in the\nsociety."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Pot"),": Resource balance that is used to support members of the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Bids"),": A list of users who submitted a bid to join the society.")),(0,o.kt)("h2",{id:"user-types"},"User Types"),(0,o.kt)("p",null,"Below are the various types of users at different stages."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Bidder")," - A token holder who intends to join the society by placing a bid."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Candidate")," - The selected bidders that will be voted on by members of the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Suspended Candidate")," - The candidates that failed to join the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Member")," - Member of the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Suspender Member")," - A member of the society who has accumulated too many strikes or failed their\nmembership challenge."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Head")," - One winning candidate will be randomly chosen as head of the members, weighted by the\nnumber of approvals the winning candidates accumulated."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Defender")," - In every challenge period, one of the members will be randomly selected to defend\ntheir membership in the society. The rules for defending the membership are documented\n",(0,o.kt)("a",{parentName:"li",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"in the rules"),".")),(0,o.kt)("h2",{id:"procedure"},"Procedure"),(0,o.kt)("p",null,"Remember to take a look at the\n",(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"rules"),"\nfirst. And since those rules are not enforced entirely on-chain, it is recommended to join the\n",(0,o.kt)("a",{parentName:"p",href:"https://app.element.io/#/room/!BUmiAAnAYSRGarqwOt:matrix.parity.io"},"Kappa Sigma Mu Lounge")," to ask\nany questions if anything is unclear."),(0,o.kt)("h3",{id:"1-bid-phase"},"1. Bid Phase"),(0,o.kt)("p",null,"To submit a bid, click the Submit Bid button on the\n",(0,o.kt)("a",{parentName:"p",href:"https://cloudflare-ipfs.com/ipns/kusama.dotapps.io/#/society"},"Society page"),"."),(0,o.kt)("p",null,"Anyone can submit a bid to join the society by reserving a deposit or finding an existing member to\ncreate a bid on their behalf by vouching for them. At every rotation period, as many bids as the\nsociety pot can support will be selected. The selected bids will be moved to the candidate phase,\nwhereas bids that were not selected will stay in the bidder pool until they are selected or a user\nchooses to unbid."),(0,o.kt)("p",null,"Anyone who wants to join the society is required to deposit 1.6 KSM for reserve on Kusama and\ndeclare the bid amount (1 KSM in this case) that they will receive for joining the society."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"test_bid",src:a(62226).Z,width:"2490",height:"498"})),(0,o.kt)("p",null,"Once you have submitted the transaction, your bid will be shown on the\n",(0,o.kt)("a",{parentName:"p",href:"https://cloudflare-ipfs.com/ipns/kusama.dotapps.io/#/society"},"Society page")," under the bids section. You can\ncancel the bidding if you changed your mind about joining the society by calling ",(0,o.kt)("inlineCode",{parentName:"p"},"unbid")," on the same\npage."),(0,o.kt)("p",null,"You can find an existing member to place a bid on your behalf if you do not have KSM and you are\nwilling to give them a tip. An existing member can submit a ",(0,o.kt)("inlineCode",{parentName:"p"},"vouch")," transaction through the\nExtrinsics page."),(0,o.kt)("admonition",{title:"vouch(who,value,tip)",type:"info"},(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},"who: The user you are vouching for"),(0,o.kt)("li",{parentName:"ul"},"value: The value that the user would like to get when joining the society"),(0,o.kt)("li",{parentName:"ul"},"tip: Fees you get")),(0,o.kt)("p",{parentName:"admonition"},"The final value that the candidate will get = (value - tip)")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"vouch",src:a(91121).Z,width:"1210",height:"461"})),(0,o.kt)("h3",{id:"2-candidate-phase"},"2. Candidate Phase"),(0,o.kt)("p",null,"Bids selected in this phase will be voted on by the existing members to decide whether or not you\nwill be approved to join the society. Members will vote for all the candidates and the final outcome\nwill be randomly selected by one of the votes. Let's take a look the example shown below:"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"If the randomly selected member does not vote, it will be treated as a rejection. For each rotation\nperiod, the maximum number of members that can be accepted is set as 10.")),(0,o.kt)("p",null,"A - Accept, R - Reject, S - Skeptic"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Member"),(0,o.kt)("th",{parentName:"tr",align:null},"1"),(0,o.kt)("th",{parentName:"tr",align:null},"2"),(0,o.kt)("th",{parentName:"tr",align:null},"3"),(0,o.kt)("th",{parentName:"tr",align:null},"4"),(0,o.kt)("th",{parentName:"tr",align:null},"5"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Vote"),(0,o.kt)("td",{parentName:"tr",align:null},"A"),(0,o.kt)("td",{parentName:"tr",align:null},"A"),(0,o.kt)("td",{parentName:"tr",align:null},"A"),(0,o.kt)("td",{parentName:"tr",align:null},"R"),(0,o.kt)("td",{parentName:"tr",align:null},"S")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Selected"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null},"X"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("p",null,'In this example, a candidate will be approved to join the society since member 3 was selected as a\nfinal voting outcome. A number of members will also be randomly chosen as "skeptics" to vote for the\ncandidates during the rotation period.'),(0,o.kt)("p",null,"Since member 5 was chosen as a skeptic, they are required to participate in the voting process. If\nthey do not participate in voting, they will be punished with one strike per missing vote. If one\naccumulates too many strikes, one's membership is suspended which means they may need to re-apply\nand their unclaimed payouts will be slashed. Moreover, each member who voted opposite to the\nrandomly selected vote will have their unclaimed payouts slashed and strikes increased. In this\ncase, member 4 will be punished."),(0,o.kt)("admonition",{title:"The maximum number of strikes you can have is on Kusama is 10",type:"info"}),(0,o.kt)("p",null,"The slashed funds (2 KSM currently) will be given to a random member who voted the same as the\nselected vote as a reward for participating in the vote. The reward is escrowed for some period of\ntime - see below."),(0,o.kt)("h4",{id:"lock-up-time"},"Lock-up Time"),(0,o.kt)("p",null,"It would take the number of members of the society as the variable to determine how many blocks you\nhave to wait in order to get the payout. The longest lockup time is close to 3 years. The formula is\ndefined\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_society/index.html"},"in the society pallet")," if\nyou would like to have a look."),(0,o.kt)("p",null,"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"Let's assume we have 5 members in the society\n\nlock_duration = 100 - 50_000 / (5 + 500)\nlock_duration * MAX_LOCK_DURATION_IN_BLOCKS\n\nResult = 1% * 15_552_000 ~ 11 days\n")),(0,o.kt)("p",null,"Based on the above calculation, it is required to wait close to 11 days to get the slashed funds."),(0,o.kt)("p",null,"If the candidate wins the vote, they receive their bid reward as a future payout. If the bid was\nplaced by a voucher, they will get back the reward that was set during vouching with the remainder\ngiven to the candidate - both escrowed for some time."),(0,o.kt)("p",null,"If the candidate loses the vote, they are suspended and it is up to the founder of the society (the\n",(0,o.kt)("inlineCode",{parentName:"p"},"Suspension Judgement Origin"),") to determine if the candidate should go through the bidding process\nagain, should be accepted into the membership society, or rejected and their deposit slashed."),(0,o.kt)("h3",{id:"3-member-phase"},"3. Member Phase"),(0,o.kt)("p",null,"Once you become a member of the society, you will get back the deposit that you have reserved during\nthe bidding. A few things you need to be aware of. First, you should vote on candidates who applied\nfor the membership in every rotation period."),(0,o.kt)("p",null,"Second, you will need to claim your payout manually by calling ",(0,o.kt)("inlineCode",{parentName:"p"},"payout")," after the lockup time. It is\nthe same as the above mentioned lockup formula."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Society Payout",src:a(3404).Z,width:"2580",height:"572"})),(0,o.kt)("p",null,"Third, there will be a membership challenge every seven days on Kusama. So one of the members will\nbe randomly selected as a defender. Then, other members can vote whether this defender should stay\nin the society or not. A simple majority wins the vote. You can take a look\n",(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"here"),'\nand search for "Existing Members (Challenges)". Besides that, you can earn extra KSM by helping a\nuser apply for the membership and requesting a tip. This is useful when a user does not have enough\nbalance to reserve a deposit. The tip will be given when a user successfully joins the society.'),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Each member can only vouch for one user at a time. A member is not required to reserve the deposit\nwhen vouching for a user.")),(0,o.kt)("p",null,"If a member accumulates too many strikes or fails their membership challenge, they will become\nsuspended. While a member is suspended, they are unable to claim matured payouts. It is up to the\nsuspension judgment origin to determine if the member should re-enter society or be removed from\nsociety with all their future payouts slashed."),(0,o.kt)("h2",{id:"useful-links"},"Useful links"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"Convention of Approval of Membership")," -\nRules about joining the Kusama society"),(0,o.kt)("p",null,'The rules are encoded on-chain in UTF-8 format. This is displayed in most block explorers as a\nhexadecimal string. In order to see the rules in human-readable format, you can convert it. In the\nextrinsic\'s parameters go to Element 1 ("proposal") -> "value" -> "params" -> Element 2 ("rules")\nand copy the value corresponding to the key "value". You can use a hex-to-UTF8 converter to then\ndisplay the text. Note that the text is formatted with Markdown.'))}c.isMDXComponent=!0},18330:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/kusama_society_page-e9e3297982c38b1f88e7b7a123c83b0c.png"},76014:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/kusama_society_page2-042fd01000b37b4bff71e974384e6eb6.png"},3404:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/payout-9a8517b19e461e4c56fa825885986f97.jpg"},62226:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/test_bid-ce5ef28a241c20b3afa46b8d491bf9ee.jpg"},91121:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/vouch-4bdeb1a9c73bb236ecc042feb375149f.jpg"}}]); \ No newline at end of file diff --git a/assets/js/33bbe353.af891d40.js b/assets/js/33bbe353.af891d40.js deleted file mode 100644 index c9ca2b004c..0000000000 --- a/assets/js/33bbe353.af891d40.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7908],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>c});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var l=n.createContext({}),d=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},m=function(e){var t=d(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),u=d(a),h=i,c=u["".concat(l,".").concat(h)]||u[h]||p[h]||o;return a?n.createElement(c,r(r({ref:t},m),{},{components:a})):n.createElement(c,r({ref:t},m))}));function c(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,r=new Array(o);r[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:i,r[1]=s;for(var d=2;d{a.r(t),a.d(t,{assets:()=>m,contentTitle:()=>l,default:()=>c,frontMatter:()=>s,metadata:()=>d,toc:()=>u});var n=a(87462),i=a(63366),o=(a(67294),a(3905)),r=["components"],s={id:"maintain-guides-society-kusama",title:"Kappa Sigma Mu",sidebar_label:"Kappa Sigma Mu",description:"Learn about the Kappa Sigma Mu society and join as a member.",keywords:["kappa sigma mu","society","kusama","member"],slug:"../../maintain-guides-society-kusama"},l=void 0,d={unversionedId:"maintain/kusama/maintain-guides-society-kusama",id:"maintain/kusama/maintain-guides-society-kusama",title:"Kappa Sigma Mu",description:"Learn about the Kappa Sigma Mu society and join as a member.",source:"@site/../docs/maintain/kusama/maintain-guides-society-kusama.md",sourceDirName:"maintain/kusama",slug:"/maintain-guides-society-kusama",permalink:"/docs/maintain-guides-society-kusama",draft:!1,tags:[],version:"current",lastUpdatedBy:"Keith Alfaro",lastUpdatedAt:1672251942,formattedLastUpdatedAt:"Dec 28, 2022",frontMatter:{id:"maintain-guides-society-kusama",title:"Kappa Sigma Mu",sidebar_label:"Kappa Sigma Mu",description:"Learn about the Kappa Sigma Mu society and join as a member.",keywords:["kappa sigma mu","society","kusama","member"],slug:"../../maintain-guides-society-kusama"},sidebar:"docs",previous:{title:"Community",permalink:"/docs/kusama-community"},next:{title:"Wallets",permalink:"/docs/wallets-index"}},m={},u=[{value:"UI Overview",id:"ui-overview",level:2},{value:"User Types",id:"user-types",level:2},{value:"Procedure",id:"procedure",level:2},{value:"1. Bid Phase",id:"1-bid-phase",level:3},{value:"2. Candidate Phase",id:"2-candidate-phase",level:3},{value:"Lock-up Time",id:"lock-up-time",level:4},{value:"3. Member Phase",id:"3-member-phase",level:3},{value:"Useful links",id:"useful-links",level:2}],p={toc:u},h="wrapper";function c(e){var t=e.components,s=(0,i.Z)(e,r);return(0,o.kt)(h,(0,n.Z)({},p,s,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Kappa Sigma Mu is a membership club using the Substrate\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_society/index.html"},"Society pallet"),". It is an\neconomic game to incentivize users to join a society that coordinates around whatever the rules are\ndecided to be. The members of the society are incentivized to participate in the society via the\nrewards paid by the treasury. Currently, there is only one society on Kusama but it is possible to\nhave multiple societies in the future through a runtime upgrade."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"kusama_society_page",src:a(18330).Z,width:"2880",height:"1650"}),"\n",(0,o.kt)("img",{alt:"kusama_society_page2",src:a(76014).Z,width:"2874",height:"716"})),(0,o.kt)("p",null,"Before joining the society, let's take a brief look at the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/society"},"Society UI")," on Polkadot-JS apps and read through all the\n",(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"rules"),"\nto become a member."),(0,o.kt)("h2",{id:"ui-overview"},"UI Overview"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Members"),": The number of members in the society. Currently, the maximum number of members is set\nto ",(0,o.kt)("inlineCode",{parentName:"li"},"150"),". It can be changed by using governance to increase the number."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Rotation"),": The time period for membership rotations."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Challenge"),": The time period to randomly select one of the members to defend his membership in the\nsociety."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Pot"),": Resource balance that is used to support members of the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Bids"),": A list of users who submitted a bid to join the society.")),(0,o.kt)("h2",{id:"user-types"},"User Types"),(0,o.kt)("p",null,"Below are the various types of users at different stages."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Bidder")," - A token holder who intends to join the society by placing a bid."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Candidate")," - The selected bidders that will be voted on by members of the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Suspended Candidate")," - The candidates that failed to join the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Member")," - Member of the society."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Suspender Member")," - A member of the society who has accumulated too many strikes or failed their\nmembership challenge."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Head")," - One winning candidate will be randomly chosen as head of the members, weighted by the\nnumber of approvals the winning candidates accumulated."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Defender")," - In every challenge period, one of the members will be randomly selected to defend\ntheir membership in the society. The rules for defending the membership are documented\n",(0,o.kt)("a",{parentName:"li",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"in the rules"),".")),(0,o.kt)("h2",{id:"procedure"},"Procedure"),(0,o.kt)("p",null,"Remember to take a look at the\n",(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"rules"),"\nfirst. And since those rules are not enforced entirely on-chain, it is recommended to join the\n",(0,o.kt)("a",{parentName:"p",href:"https://app.element.io/#/room/!BUmiAAnAYSRGarqwOt:matrix.parity.io"},"Kappa Sigma Mu Lounge")," to ask\nany questions if anything is unclear."),(0,o.kt)("h3",{id:"1-bid-phase"},"1. Bid Phase"),(0,o.kt)("p",null,"To submit a bid, click the Submit Bid button on the\n",(0,o.kt)("a",{parentName:"p",href:"https://ipfs.io/ipns/kusama.dotapps.io/#/society"},"Society page"),"."),(0,o.kt)("p",null,"Anyone can submit a bid to join the society by reserving a deposit or finding an existing member to\ncreate a bid on their behalf by vouching for them. At every rotation period, as many bids as the\nsociety pot can support will be selected. The selected bids will be moved to the candidate phase,\nwhereas bids that were not selected will stay in the bidder pool until they are selected or a user\nchooses to unbid."),(0,o.kt)("p",null,"Anyone who wants to join the society is required to deposit 1.6 KSM for reserve on Kusama and\ndeclare the bid amount (1 KSM in this case) that they will receive for joining the society."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"test_bid",src:a(62226).Z,width:"2490",height:"498"})),(0,o.kt)("p",null,"Once you have submitted the transaction, your bid will be shown on the\n",(0,o.kt)("a",{parentName:"p",href:"https://ipfs.io/ipns/kusama.dotapps.io/#/society"},"Society page")," under the bids section. You can\ncancel the bidding if you changed your mind about joining the society by calling ",(0,o.kt)("inlineCode",{parentName:"p"},"unbid")," on the same\npage."),(0,o.kt)("p",null,"You can find an existing member to place a bid on your behalf if you do not have KSM and you are\nwilling to give them a tip. An existing member can submit a ",(0,o.kt)("inlineCode",{parentName:"p"},"vouch")," transaction through the\nExtrinsics page."),(0,o.kt)("admonition",{title:"vouch(who,value,tip)",type:"info"},(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},"who: The user you are vouching for"),(0,o.kt)("li",{parentName:"ul"},"value: The value that the user would like to get when joining the society"),(0,o.kt)("li",{parentName:"ul"},"tip: Fees you get")),(0,o.kt)("p",{parentName:"admonition"},"The final value that the candidate will get = (value - tip)")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"vouch",src:a(91121).Z,width:"1210",height:"461"})),(0,o.kt)("h3",{id:"2-candidate-phase"},"2. Candidate Phase"),(0,o.kt)("p",null,"Bids selected in this phase will be voted on by the existing members to decide whether or not you\nwill be approved to join the society. Members will vote for all the candidates and the final outcome\nwill be randomly selected by one of the votes. Let's take a look the example shown below:"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"If the randomly selected member does not vote, it will be treated as a rejection. For each rotation\nperiod, the maximum number of members that can be accepted is set as 10.")),(0,o.kt)("p",null,"A - Accept, R - Reject, S - Skeptic"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Member"),(0,o.kt)("th",{parentName:"tr",align:null},"1"),(0,o.kt)("th",{parentName:"tr",align:null},"2"),(0,o.kt)("th",{parentName:"tr",align:null},"3"),(0,o.kt)("th",{parentName:"tr",align:null},"4"),(0,o.kt)("th",{parentName:"tr",align:null},"5"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Vote"),(0,o.kt)("td",{parentName:"tr",align:null},"A"),(0,o.kt)("td",{parentName:"tr",align:null},"A"),(0,o.kt)("td",{parentName:"tr",align:null},"A"),(0,o.kt)("td",{parentName:"tr",align:null},"R"),(0,o.kt)("td",{parentName:"tr",align:null},"S")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Selected"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null},"X"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("p",null,'In this example, a candidate will be approved to join the society since member 3 was selected as a\nfinal voting outcome. A number of members will also be randomly chosen as "skeptics" to vote for the\ncandidates during the rotation period.'),(0,o.kt)("p",null,"Since member 5 was chosen as a skeptic, they are required to participate in the voting process. If\nthey do not participate in voting, they will be punished with one strike per missing vote. If one\naccumulates too many strikes, one's membership is suspended which means they may need to re-apply\nand their unclaimed payouts will be slashed. Moreover, each member who voted opposite to the\nrandomly selected vote will have their unclaimed payouts slashed and strikes increased. In this\ncase, member 4 will be punished."),(0,o.kt)("admonition",{title:"The maximum number of strikes you can have is on Kusama is 10",type:"info"}),(0,o.kt)("p",null,"The slashed funds (2 KSM currently) will be given to a random member who voted the same as the\nselected vote as a reward for participating in the vote. The reward is escrowed for some period of\ntime - see below."),(0,o.kt)("h4",{id:"lock-up-time"},"Lock-up Time"),(0,o.kt)("p",null,"It would take the number of members of the society as the variable to determine how many blocks you\nhave to wait in order to get the payout. The longest lockup time is close to 3 years. The formula is\ndefined\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_society/index.html"},"in the society pallet")," if\nyou would like to have a look."),(0,o.kt)("p",null,"Example:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"Let's assume we have 5 members in the society\n\nlock_duration = 100 - 50_000 / (5 + 500)\nlock_duration * MAX_LOCK_DURATION_IN_BLOCKS\n\nResult = 1% * 15_552_000 ~ 11 days\n")),(0,o.kt)("p",null,"Based on the above calculation, it is required to wait close to 11 days to get the slashed funds."),(0,o.kt)("p",null,"If the candidate wins the vote, they receive their bid reward as a future payout. If the bid was\nplaced by a voucher, they will get back the reward that was set during vouching with the remainder\ngiven to the candidate - both escrowed for some time."),(0,o.kt)("p",null,"If the candidate loses the vote, they are suspended and it is up to the founder of the society (the\n",(0,o.kt)("inlineCode",{parentName:"p"},"Suspension Judgement Origin"),") to determine if the candidate should go through the bidding process\nagain, should be accepted into the membership society, or rejected and their deposit slashed."),(0,o.kt)("h3",{id:"3-member-phase"},"3. Member Phase"),(0,o.kt)("p",null,"Once you become a member of the society, you will get back the deposit that you have reserved during\nthe bidding. A few things you need to be aware of. First, you should vote on candidates who applied\nfor the membership in every rotation period."),(0,o.kt)("p",null,"Second, you will need to claim your payout manually by calling ",(0,o.kt)("inlineCode",{parentName:"p"},"payout")," after the lockup time. It is\nthe same as the above mentioned lockup formula."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Society Payout",src:a(3404).Z,width:"2580",height:"572"})),(0,o.kt)("p",null,"Third, there will be a membership challenge every seven days on Kusama. So one of the members will\nbe randomly selected as a defender. Then, other members can vote whether this defender should stay\nin the society or not. A simple majority wins the vote. You can take a look\n",(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"here"),'\nand search for "Existing Members (Challenges)". Besides that, you can earn extra KSM by helping a\nuser apply for the membership and requesting a tip. This is useful when a user does not have enough\nbalance to reserve a deposit. The tip will be given when a user successfully joins the society.'),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Each member can only vouch for one user at a time. A member is not required to reserve the deposit\nwhen vouching for a user.")),(0,o.kt)("p",null,"If a member accumulates too many strikes or fails their membership challenge, they will become\nsuspended. While a member is suspended, they are unable to claim matured payouts. It is up to the\nsuspension judgment origin to determine if the member should re-enter society or be removed from\nsociety with all their future payouts slashed."),(0,o.kt)("h2",{id:"useful-links"},"Useful links"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/0x948d3a4378914341dc7af9220a4c73acb2b3f72a70f14ee8089799da16d94c17"},"Convention of Approval of Membership")," -\nRules about joining the Kusama society"),(0,o.kt)("p",null,'The rules are encoded on-chain in UTF-8 format. This is displayed in most block explorers as a\nhexadecimal string. In order to see the rules in human-readable format, you can convert it. In the\nextrinsic\'s parameters go to Element 1 ("proposal") -> "value" -> "params" -> Element 2 ("rules")\nand copy the value corresponding to the key "value". You can use a hex-to-UTF8 converter to then\ndisplay the text. Note that the text is formatted with Markdown.'))}c.isMDXComponent=!0},18330:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/kusama_society_page-e9e3297982c38b1f88e7b7a123c83b0c.png"},76014:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/kusama_society_page2-042fd01000b37b4bff71e974384e6eb6.png"},3404:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/payout-9a8517b19e461e4c56fa825885986f97.jpg"},62226:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/test_bid-ce5ef28a241c20b3afa46b8d491bf9ee.jpg"},91121:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/vouch-4bdeb1a9c73bb236ecc042feb375149f.jpg"}}]); \ No newline at end of file diff --git a/assets/js/48d75399.4501bc70.js b/assets/js/48d75399.4501bc70.js new file mode 100644 index 0000000000..8c5ce0e859 --- /dev/null +++ b/assets/js/48d75399.4501bc70.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[4620],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>p});var o=a(74165),n=a(15861),i=a(67294),r=a(87152),s=a(14741),l=a(67425);function h(e,t,a){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,o.Z)().mark((function e(t,a,n){var i,l,h,d,c;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return h=new r.U(i),e.next=21,s.G.create({provider:h});case 21:d=e.sent,(c=a.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,a,o){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,o);break;case"precise":(0,l.Precise)(e,a,o);break;case"blocksToDays":(0,l.BlocksToDays)(e,o);break;case"erasToDays":(0,l.ErasToDays)(e,o,a);break;case"percentage":(0,l.Percentage)(e,o);break;case"permillToPercent":(0,l.PermillToPercent)(e,o);break;case"arrayLength":(0,l.ArrayLength)(e,o);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,a=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),p=d[0],u=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?c(r.toString(),l,t,u):u(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-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,n.Z)((0,o.Z)().mark((function e(){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h(t,a,u);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?c(n,l,t,u):u(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),p}},67425:e=>{var t="polkadot",a="kusama",o="statemine",n="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===n)l=3;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===n)s=1;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},17384:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>h,default:()=>k,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var o=a(87462),n=a(63366),i=(a(67294),a(3905)),r=a(47940),s=["components"],l={id:"faq",title:"Frequently Asked Questions (FAQs)",sidebar_label:"FAQ",description:"FAQs to Help you Navigate on Polkadot.",keywords:["FAQ","questions"],slug:"../faq"},h=void 0,d={unversionedId:"general/faq",id:"general/faq",title:"Frequently Asked Questions (FAQs)",description:"FAQs to Help you Navigate on Polkadot.",source:"@site/../docs/general/faq.md",sourceDirName:"general",slug:"/faq",permalink:"/docs/faq",draft:!1,tags:[],version:"current",lastUpdatedBy:"Andrei Kostakov",lastUpdatedAt:1710922051,formattedLastUpdatedAt:"Mar 20, 2024",frontMatter:{id:"faq",title:"Frequently Asked Questions (FAQs)",sidebar_label:"FAQ",description:"FAQs to Help you Navigate on Polkadot.",keywords:["FAQ","questions"],slug:"../faq"},sidebar:"docs",previous:{title:"Research Pages",permalink:"/docs/research"},next:{title:"Glossary",permalink:"/docs/glossary"}},c={},p=[{value:"Polkadot Launch",id:"polkadot-launch",level:2},{value:"Polkadot Roadmap",id:"polkadot-roadmap",level:2},{value:"Validators",id:"validators",level:2},{value:"How do I apply to be a validator?",id:"how-do-i-apply-to-be-a-validator",level:3},{value:"How are validators rewarded?",id:"how-are-validators-rewarded",level:3},{value:"What is the minimum stake necessary to be elected as an active validator?",id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",level:3},{value:"Why will Polkadot have only 1000 validators while other projects have hundreds of thousands?",id:"why-will-polkadot-have-only-1000-validators-while-other-projects-have-hundreds-of-thousands",level:3},{value:"Relay Chain",id:"relay-chain",level:2},{value:"What is the block time of the Relay Chain?",id:"what-is-the-block-time-of-the-relay-chain",level:3},{value:"Does Polkadot have smart contracts?",id:"does-polkadot-have-smart-contracts",level:3},{value:"How will the Polkadot Relay Chain connect to external chains in the ecosystem?",id:"how-will-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem",level:3},{value:"What is Polkadot's Transactions Per Second (TPS)?",id:"what-is-polkadots-transactions-per-second-tps",level:3},{value:"DOT",id:"dot",level:2},{value:"What is the difference between DOT (old) and new DOT?",id:"what-is-the-difference-between-dot-old-and-new-dot",level:3},{value:"What is the inflation rate of the DOT?",id:"what-is-the-inflation-rate-of-the-dot",level:3},{value:"Why can't crowdloaned DOT be staked?",id:"why-cant-crowdloaned-dot-be-staked",level:3},{value:"Governance",id:"governance",level:2},{value:"What prevents Polkadot governance from failing?",id:"what-prevents-polkadot-governance-from-failing",level:3},{value:"What prevents Polkadot governance from becoming plutocratic?",id:"what-prevents-polkadot-governance-from-becoming-plutocratic",level:3},{value:"Parachains",id:"parachains",level:2},{value:"How do parachain economics work?",id:"how-do-parachain-economics-work",level:3},{value:"Are parachains ephemeral? What happens when a parachain loses the next auction?",id:"are-parachains-ephemeral-what-happens-when-a-parachain-loses-the-next-auction",level:3},{value:"Networking",id:"networking",level:2},{value:"What is libp2p?",id:"what-is-libp2p",level:3},{value:"Does Polkadot use libp2p?",id:"does-polkadot-use-libp2p",level:3},{value:"How does libp2p differ from IPFS?",id:"how-does-libp2p-differ-from-ipfs",level:3},{value:"Kusama",id:"kusama",level:2},{value:"What is the minimum amount of KSM / DOT I can have in my account?",id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account",level:3},{value:"What are the transfer fees for Kusama?",id:"what-are-the-transfer-fees-for-kusama",level:3},{value:"Answered by Gav series",id:"answered-by-gav-series",level:2}],u={toc:p},m="wrapper";function k(e){var t=e.components,a=(0,n.Z)(e,s);return(0,i.kt)(m,(0,o.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"This FAQ focuses on technical questions for users interested in developing applications for\nPolkadot. If you have a more general question, you may wish to search for the answer on our support\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Knowledge Base")," or the main\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/faq"},"Polkadot network FAQ"),". If you have a question that is not answered,\nplease feel free to ask on the Polkadot Watercooler\n",(0,i.kt)("a",{parentName:"p",href:"https://app.element.io/#/room/#polkadot-watercooler:web3.foundation"},"Element channel")," or contact\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot Support"),".")),(0,i.kt)("h2",{id:"polkadot-launch"},"Polkadot Launch"),(0,i.kt)("p",null,"The Genesis block of the Polkadot network was launched on May 26, 2020 at 15:36:21 UTC, as a Proof\nof Authority (PoA) network, with governance controlled by the single Sudo (super-user) account.\nDuring this time, validators started joining the network and signaling their intention to\nparticipate in consensus."),(0,i.kt)("p",null,"The network evolved to become a Proof of Stake (PoS) network on June 18, 2020. With the chain\nsecured by the decentralized community of validators, the Sudo module was removed on July 20, 2020,\ntransitioning the governance of the chain into the hands of the token (DOT) holders. This is the\npoint where Polkadot became decentralized."),(0,i.kt)("p",null,"The final step of the transition to full-functioning Polkadot was the enabling of transfer\nfunctionality, which occurred on Polkadot at block number 1_205_128 on August 18, 2020, at 16:39\nUTC."),(0,i.kt)("p",null,"On August 21, 2020, Redenomination of DOT occurred. From this date, one DOT (old) equals 100 new\nDOT."),(0,i.kt)("h2",{id:"polkadot-roadmap"},"Polkadot Roadmap"),(0,i.kt)("p",null,"For more information on the Polkadot roadmap please visit the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/technology/#roadmap"},"official Polkadot website"),"."),(0,i.kt)("h2",{id:"validators"},"Validators"),(0,i.kt)("h3",{id:"how-do-i-apply-to-be-a-validator"},"How do I apply to be a validator?"),(0,i.kt)("p",null,"There is no central authority that decides on validators, so there is not per se an ",(0,i.kt)("em",{parentName:"p"},"application"),"\nthat you can fill out. Registering as a validator is permissionless; in order to become one you must\nonly set up a validator node and mark your intention to validate on chain. For detailed instruction\non how to do this you can consult the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-guides-how-to-validate-kusama"},"Kusama validator guide")," on validating\nfor Kusama or the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-guides-how-to-validate-polkadot"},"Polkadot validator guide")," for validating\non Polkadot."),(0,i.kt)("p",null,"However, once you've set up a validator and have registered your intention it does not mean that you\nwill be included in the ",(0,i.kt)("em",{parentName:"p"},"active set")," right away. The validators are elected to the active set based\non the results of an election algorithm known as ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n's method"),".\nPhragm\xe9n's method tries to accomplish two goals: 1) select ",(0,i.kt)("inlineCode",{parentName:"p"},"n")," members from a larger set based on\nstake-weighted votes and 2) equalize the stake backing each validator as much as possible."),(0,i.kt)("p",null,"You will likely want to campaign your validator to the community in order to get more backing. You\nare looking for ",(0,i.kt)("em",{parentName:"p"},"nominators")," that will put up their tokens to increase the stake for your validator.\nFor validators who cannot acquire the minimum stake from the community, Parity and Web3 Foundation\nalso run a joint programme called ",(0,i.kt)("a",{parentName:"p",href:"/docs/thousand-validators"},"Thousand Validators")," that will nominate\nvalidators if they apply and fit the requirements."),(0,i.kt)("h3",{id:"how-are-validators-rewarded"},"How are validators rewarded?"),(0,i.kt)("p",null,"Validators are rewarded from the inflation of the Relay Chain, transaction fees, and tips. However,\nthey only take a percentage of the former two. More details can be read on the page for\n",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-guides-validator-payout"},"validator payouts"),"."),(0,i.kt)("h3",{id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator"},"What is the minimum stake necessary to be elected as an active validator?"),(0,i.kt)("p",null,"The minimum stake that is necessary to be elected as an active validator is dynamic and can change\nover time. It depends not only on how much stake is being put behind each validator, but also the\nsize of the active set and how many validators are waiting in the pool."),(0,i.kt)("p",null,"There are a few ways to estimate the minimum stake."),(0,i.kt)("p",null,"One way can be to navigate to the\n",(0,i.kt)("a",{parentName:"p",href:"https://cloudflare-ipfs.com/ipns/polkadot.dotapps.io/#/staking/targets"},"Polkadot Apps Targets tab"),'. The value\nat the top of the screen saying "Lowest" is the least staked validator. You need at least this\nmuch + 1 to enter the set.'),(0,i.kt)("p",null,"You can also use some tools some to perform estimations."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-debug-kit/tree/master/offline-election"},"Offline Election"),"\ncan provide exact results of running an election on the current set of validators using the same\nRust code that is ran in Polkadot.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("a",{parentName:"p",href:"https://github.com/w3f/validator-stats"},"Validator stats script")," can give you an estimate that is\nbased on the currently elected set, as well as some statistics about Kusama validators."))),(0,i.kt)("h3",{id:"why-will-polkadot-have-only-1000-validators-while-other-projects-have-hundreds-of-thousands"},"Why will Polkadot have only 1000 validators while other projects have hundreds of thousands?"),(0,i.kt)("p",null,"Polkadot's goal to have 1000 validators is set to be something that is practically achievable in the\nshort term with high confidence of good performance in a live environment. Furthermore, validators\nin Polkadot are not the only stakers, and if we consider the number of stakers that can be possible\non Polkadot the number can scale up to hundreds of thousands. Since validators are performing\ncritical consensus work to maintain the security of the chain including all of its shards, a more\nmodest number of validators is estimated to start. Upon later improvements, such as implementing\nsignature aggregation for finalization messages, the number of validators could reasonably scale up.\nHowever, increasing validators above one thousand remains a goal for later iterations of Polkadot."),(0,i.kt)("p",null,"It is also worth mentioning that one thousand validators is more than the number of validators of\nsimilar PoS chains with comparable levels of economic security as Polkadot. The closest contenders\nare operating with around 150 validators, while Polkadot is already securely running with\n","\n",(0,i.kt)(r.Z,{network:"polkadot",path:"query.staking.validatorCount",defaultValue:297,mdxType:"RPC"}),"\nvalidators."),(0,i.kt)("p",null,"Additionally, other projects sometimes have a different definition of ",(0,i.kt)("em",{parentName:"p"},"validator"),' that approximates\nmore closely to remote signing keys without the full operation of a validating node. On Polkadot,\neach validator is running their own validating node and performing full verification of the Relay\nChain, voting on finality, producing blocks in their decided slots, and verifying parachain state\ntransitions. Other projects may consider validators and "validating nodes" as separate entities.'),(0,i.kt)("p",null,"Finally, individuals may participate in the block production process indirectly by\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-nominator"},"nominating")," validators. In this way, individuals who are not running a\nnode can still share in staking rewards."),(0,i.kt)("h2",{id:"relay-chain"},"Relay Chain"),(0,i.kt)("h3",{id:"what-is-the-block-time-of-the-relay-chain"},"What is the block time of the Relay Chain?"),(0,i.kt)("p",null,"Both the Kusama and Polkadot networks are currently operating at a rate of one block every six\nseconds."),(0,i.kt)("p",null,"This may be changed in the future. It may go as low as two to three seconds after optimizations, or\npotentially increase in order to handle the capacity of the parachain networking in a live\nenvironment."),(0,i.kt)("h3",{id:"does-polkadot-have-smart-contracts"},"Does Polkadot have smart contracts?"),(0,i.kt)("p",null,"No - and yes. The Polkadot Relay Chain does not implement smart contracts natively. The reason for\nnot having smart contracts on the Relay Chain is part of the design philosophy for Polkadot that\ndictates that the Relay Chain should be the minimal logic required to accomplish its job."),(0,i.kt)("p",null,"However, Polkadot will be a platform for other chains that ",(0,i.kt)("em",{parentName:"p"},"do")," implement smart contracts. It's\npossible for parachains to enable smart contract functionality and then benefit from the security\nand interoperability features of Polkadot. Additionally, existing smart contract chains can connect\nto Polkadot as a parachain, or via a bridge."),(0,i.kt)("p",null,"While the Polkadot Relay Chain does not implement smart contracts directly, undoubtedly there will\nbe parachains that do. So it's better to say that the Polkadot ",(0,i.kt)("em",{parentName:"p"},"ecosystem"),' has smart contracts\nversus "Polkadot has smart contracts."'),(0,i.kt)("h3",{id:"how-will-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem"},"How will the Polkadot Relay Chain connect to external chains in the ecosystem?"),(0,i.kt)("p",null,"One of the cornerstone interoperability technologies being researched and developed for deployment\non Polkadot is cross-chain bridges. Bridges come in a variety of flavors with varying levels of\ntrust associated with them. Polkadot is predominantly researching the trust-minimized flavor that\nimposes economic costs on the operators of the bridge, and therefore makes it economically secure.\nBridge efforts are being worked on in concert with other projects in the ecosystem. Eventually,\nthere will be bridges between Polkadot and most of the other major chains."),(0,i.kt)("h3",{id:"what-is-polkadots-transactions-per-second-tps"},"What is Polkadot's Transactions Per Second (TPS)?"),(0,i.kt)("p",null,"Polkadot is a heterogeneous sharded network comprising a relay chain and numerous parachains, which\nare all individual blockchains built on ",(0,i.kt)("a",{parentName:"p",href:"https://substrate.io/"},"Substrate")," executing in parallel.\nHence, the Transactions Per Second (TPS) of Polkadot is a number that encompasses all the\ntransactions on the relay chain as well as parachains. As the transactions on these Substrate-based\nblockchains are ",(0,i.kt)("a",{parentName:"p",href:"https://docs.substrate.io/build/tx-weights-fees/"},"weights based"),", it makes sense to\nuse TPS as a measure for the network performance if all the transactions carry the same weight.\n",(0,i.kt)("a",{parentName:"p",href:"https://twitter.com/gavofyork/status/1270025498580656134"},"Performance benchmark tests")," show that\nSubstrate-based blockchains can achieve over 1000 TPS for balance transfer transactions. Assuming\nPolkadot is running over 100 parachains; the projected TPS is well over 100,000. With\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-async-backing"},"asynchronous backing upgrade"),", the TPS is expected to increase\ntenfold to 1,000,000."),(0,i.kt)("p",null,"It is essential to realize that TPS is inherently a subjective measurement with numerous factors\nthat can contribute to it. It's hard to gauge the usefulness of TPS in isolation (when compared to\nother chains), as it depends on what a transaction does for a particular network. To view how\nPolkadot measures TPS see the Polkadot sTPS\n(",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-stps/blob/main/docs/introduction.md"},"Standard Transaction Per Second"),")\nto consider precisely how benchmarking was performed for Polkadot."),(0,i.kt)("h2",{id:"dot"},"DOT"),(0,i.kt)("h3",{id:"what-is-the-difference-between-dot-old-and-new-dot"},"What is the difference between DOT (old) and new DOT?"),(0,i.kt)("p",null,"The DOT (old) unit on Polkadot was at twelve decimal places, otherwise known as 1e12 Plancks. On 21\nAugust, 2020, Denomination Day, the DOT (old) value was redenominated to 1e10 (10_000_000_000, or\nten billion) Plancks, meaning that the new DOT was valued at ten decimal places. Following the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn/learn-redenomination"},"redenomination"),", the new DOT is called DOT."),(0,i.kt)("h3",{id:"what-is-the-inflation-rate-of-the-dot"},"What is the inflation rate of the DOT?"),(0,i.kt)("p",null,"The inflation rate is approximately 10% per year."),(0,i.kt)("p",null,"A portion of the inflation is rewarded to validators for performing their duties, while another\nportion may go directly to the treasury. The exact percentage that goes into both varies and is\nbased on the amount of DOT that are staked. Please see the article on\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking/#inflation"},"inflation")," for more information."),(0,i.kt)("h3",{id:"why-cant-crowdloaned-dot-be-staked"},"Why can't crowdloaned DOT be staked?"),(0,i.kt)("p",null,"DOTs contributed to a successful crowdloan campaign by a parachain are bonded for the entire lease\nperiod, which is two years on Polkadot. The crowdloaned DOT cannot be used for any other DOT utility\nfunctionalities like staking and democracy. In exchange to the lost staking rewards or liquidity of\nDOTs, the parachain team may offer rewards to the contributor."),(0,i.kt)("p",null,"The utility of crowdloaned DOT is to provide a lease for a parachain. The utility of staked DOT is\nto secure the network through a reward/slash mechanism. Allowing crowdloaned DOT to be staked\nresults in complex consequences like applying a slash on crowdloaned DOT that was meant to be bonded\nfor the entire lease period of a parachain. In a way, the inaccessibility of crowdloaned DOTs and\nthe lack of staking rewards for the entire lease duration encourages the contributors to back\nprojects that are valuable to the ecosystem."),(0,i.kt)("h2",{id:"governance"},"Governance"),(0,i.kt)("h3",{id:"what-prevents-polkadot-governance-from-failing"},"What prevents Polkadot governance from failing?"),(0,i.kt)("p",null,"Polkadot's governance has already been shown to work. Examples can be found in the runtime upgrades\nthat have successfully taken place through on the testnets as well as in a real economic environment\non ",(0,i.kt)("a",{parentName:"p",href:"https://guide.kusama.network"},"Kusama")," and Polkadot itself."),(0,i.kt)("p",null,"It is fair to say that the field of on-chain blockchain governance is still new, and no one can\nclaim to know exactly what the optimal version of on-chain governance is yet. However, Polkadot\ntakes a brave step forward in pioneering thought-through mechanisms for evolving a blockchain."),(0,i.kt)("p",null,"Blockchains need a method to adapt and evolve. Therefore, an on-chain governance system was\nnecessary for the long-term success of Polkadot. Ultimately, it is the token holders that are\nresponsible for preventing Polkadot's governance from failing by using their economic value and\nconviction to sway the progression of the protocol."),(0,i.kt)("h3",{id:"what-prevents-polkadot-governance-from-becoming-plutocratic"},"What prevents Polkadot governance from becoming plutocratic?"),(0,i.kt)("p",null,"A savvy reader might have noticed that the answer to the previous question endowed the token holder\nwith the ultimate responsibility to ensure that Polkadot's governance does not fail. By following\nthe train of this assertion, one might assume that Polkadot's governance is susceptible to becoming\nruled by a few large token holders (called ",(0,i.kt)("em",{parentName:"p"},"whales")," in trading parlance) and therefore become a mere\nplutocracy (rule of the rich)."),(0,i.kt)("p",null,"There are several other mechanisms that are built-in to the governance system to resist this\nplutocratic tendency. One of these mechanisms is called conviction voting, and imbues greater voting\npower to token holders who are willing to lock their tokens on the protocol for longer lengths of\ntime. Longer lock-ups display ",(0,i.kt)("em",{parentName:"p"},"conviction")," in a vote. Conviction voting could allow a highly\ndetermined minority to overrule the vote of an apathetic majority in certain situations. Another\nmechanism is known as Adaptive Quorum Biasing. This makes proposals have a varying threshold for\napproval or rejection based on what part of the governance protocol the proposal originated in. For\ndetails on the subtleties of Polkadot's governance system, please see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"governance page"),"."),(0,i.kt)("h2",{id:"parachains"},"Parachains"),(0,i.kt)("h3",{id:"how-do-parachain-economics-work"},"How do parachain economics work?"),(0,i.kt)("p",null,"Parachains have the flexibility to implement their own monetary system or incentive structure for\ncollators. However, this is not strictly necessary. Since the collator's job is to continue to give\nrecent state transitions to the validators on the Relay Chain who validate each transition, the\nsecurity of the parachain and the Polkadot network is completely separate from parachain economics.\nParachains need collators to continue to progress, so it wouldn't be unreasonable to see them\nincentivize collator nodes in some way, but the specific mechanism is completely up to parachain\nimplementers."),(0,i.kt)("h3",{id:"are-parachains-ephemeral-what-happens-when-a-parachain-loses-the-next-auction"},"Are parachains ephemeral? What happens when a parachain loses the next auction?"),(0,i.kt)("p",null,"Parachains are not ephemeral. As long as someone is keeping the data for a parachain, the parachain\ncan move between being a parachain, a parathread, or a separate sovereign chain at different points\nof its lifetime. Especially with parathreads, parachains can be decommissioned to only produce\nblocks when their usage and throughput makes it necessary."),(0,i.kt)("p",null,"When a parachain loses an auction for renewal, that parachain has a few options. In most cases,\nbecoming a parathread instead would be a suitable choice. Parathreads are still secured by the Relay\nChain, but don't need to hold a parachain slot and can produce a block when its economically\nfeasible for them. For more on parachains please see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachains page")," and for more on parathreads see\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-parathreads"},"the parathreads page"),"."),(0,i.kt)("h2",{id:"networking"},"Networking"),(0,i.kt)("h3",{id:"what-is-libp2p"},"What is libp2p?"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://libp2p.io"},"Libp2p")," is a modular and extensible networking stack that is used by IPFS,\nSubstrate, and many other projects. It is a collection of peer-to-peer protocols for finding peers\nand connecting to them. Its modules have logic for content routing, peer routing, peer discovery,\ndifferent transports, and NAT traversals. It is intended to be used by applications for building\nlarge scale peer-to-peer networks by only selecting the parts of the protocol suite that are needed."),(0,i.kt)("p",null,"The Rust implementation of the specification was built and primarily maintained by a team of\ncontributors at Parity Technologies. The Go and JavaScript versions are maintained by Protocol Labs\nas well as community contributors. A ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/status-im/nim-libp2p"},"Nim")," version of the\nlibrary also exists. Libp2p as a whole is an open source project that is actively developed and\nexpanded on various code repositories hosted on ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/libp2p"},"their GitHub"),"."),(0,i.kt)("h3",{id:"does-polkadot-use-libp2p"},"Does Polkadot use libp2p?"),(0,i.kt)("p",null,"Yes, since Polkadot is built with Substrate. Substrate uses a networking protocol that is based on\nlibp2p (specifically the Rust libp2p library). However, Substrate uses a mix of standard libp2p\nprotocols and protocols that are homegrown and not official libp2p standards. Of the standards\nprotocols, those which are shared with other implementations of libp2p such as IPFS, are\nconnection-checking (ping), asking for information on a peer (identity), and Kademlia random walks\n(kad)."),(0,i.kt)("p",null,"Of the protocols that are custom to Substrate, there are the legacy Substrate stream, a\nrequest-response for getting information on blocks (sync), a light client protocol, a notification\nprotocol for transactions, and block announcement. For detailed information on how Substrate uses\nlibp2p and the standard and custom protocols, please see the\n",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/sc_network/index.html"},"networking documentation"),"."),(0,i.kt)("h3",{id:"how-does-libp2p-differ-from-ipfs"},"How does libp2p differ from IPFS?"),(0,i.kt)("p",null,"The ",(0,i.kt)("a",{parentName:"p",href:"https://ipfs.tech/"},"Interplanetary File System"),' (IPFS) is a peer-to-peer hypermedia protocol used\nprimarily for storage of files. It allows one to upload a file onto the network and share it with\nits content addressable URI. IPFS, like Substrate, is an application of libp2p and exists higher on\nthe technology stack. Although both IPFS and Substrate use libp2p, it cannot be said that Substrate\n"uses" IPFS since besides sharing the underlying library for networking there is no native\nintegration between the two applications.'),(0,i.kt)("h2",{id:"kusama"},"Kusama"),(0,i.kt)("h3",{id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account"},"What is the minimum amount of KSM / DOT I can have in my account?"),(0,i.kt)("p",null,"Please see information about ",(0,i.kt)("a",{parentName:"p",href:"/docs/build-protocol-info"},"Existential Deposits"),"."),(0,i.kt)("h3",{id:"what-are-the-transfer-fees-for-kusama"},"What are the transfer fees for Kusama?"),(0,i.kt)("p",null,"It is important to note that the cost of transferring KSM is dynamic. Currently, the minimum cost of\ntransferring KSM is 0.01 KSM (the base fee), although this can be changed via governance. However,\nactual transaction fees will vary based on a variety of factors. Specifically, fee calculation\nfollows the following formula:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"base_fee + (tx_length * length_fee) + WeightToFee(weight)\n")),(0,i.kt)("p",null,"Please see the\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/how-to-guides/weights/calculate-fees/"},"fee calculation")," page in\nthe Substrate documentation for more detailed information."),(0,i.kt)("h2",{id:"answered-by-gav-series"},"Answered by Gav series"),(0,i.kt)("p",null,'The "Answered by Gav" series is a collection of posts uploaded to Reddit of questions that have been\nasked in the Polkadot Watercooler Riot channel and answered by Polkadot founder Gavin Wood.'),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87d96/answered_by_gav_reason_for_using_asynchronous/"},"Reason for using asynchronous rather than synchronous communication? Difference in terms of TPS?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87awr/answered_by_gav_how_exactly_do_validators_in_an/"},"How exactly do validators in an ETH parachain keep moving around and how is communication between zones trustless?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87bua/answered_by_gav_what_are_the_main_issues_with/"},"What are the main issues with Bitcoin integration and will it ever be possible? Same problem with other POW chains? Is Polkadot only going to work with POS chains? How is it trust-less in comparison to Cosmos though?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87cjz/answered_by_gav_what_are_the_current_thoughts/"},"What are the current thoughts around governance especially since projects have to be voted in to receive the parachains security?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87ds8/answered_by_gav_also_is_there_any_detailed/"},"Also is there any detailed overview of how exactly a token transfer from ETH could be exchanged with another chain's currency?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/bcqrx9/answered_by_gav_can_i_run_multiple_validators/"},"Can I run multiple Validators with the same Session Key?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/bcqwit/answered_by_gav_how_to_tackle_the_concentration/"},"How to tackle the concentration risk of Validators in data centers?"))))}k.isMDXComponent=!0},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/48d75399.85e4bac4.js b/assets/js/48d75399.85e4bac4.js deleted file mode 100644 index 1274e5490e..0000000000 --- a/assets/js/48d75399.85e4bac4.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[4620],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>p});var o=a(74165),n=a(15861),i=a(67294),r=a(87152),s=a(14741),l=a(67425);function h(e,t,a){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,o.Z)().mark((function e(t,a,n){var i,l,h,d,c;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return h=new r.U(i),e.next=21,s.G.create({provider:h});case 21:d=e.sent,(c=a.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,a,o){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,o);break;case"precise":(0,l.Precise)(e,a,o);break;case"blocksToDays":(0,l.BlocksToDays)(e,o);break;case"erasToDays":(0,l.ErasToDays)(e,o,a);break;case"percentage":(0,l.Percentage)(e,o);break;case"permillToPercent":(0,l.PermillToPercent)(e,o);break;case"arrayLength":(0,l.ArrayLength)(e,o);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,a=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),p=d[0],u=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?c(r.toString(),l,t,u):u(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-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,n.Z)((0,o.Z)().mark((function e(){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h(t,a,u);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?c(n,l,t,u):u(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),p}},67425:e=>{var t="polkadot",a="kusama",o="statemine",n="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===n)l=3;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===n)s=1;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},17384:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>h,default:()=>k,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var o=a(87462),n=a(63366),i=(a(67294),a(3905)),r=a(47940),s=["components"],l={id:"faq",title:"Frequently Asked Questions (FAQs)",sidebar_label:"FAQ",description:"FAQs to Help you Navigate on Polkadot.",keywords:["FAQ","questions"],slug:"../faq"},h=void 0,d={unversionedId:"general/faq",id:"general/faq",title:"Frequently Asked Questions (FAQs)",description:"FAQs to Help you Navigate on Polkadot.",source:"@site/../docs/general/faq.md",sourceDirName:"general",slug:"/faq",permalink:"/docs/faq",draft:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1710432171,formattedLastUpdatedAt:"Mar 14, 2024",frontMatter:{id:"faq",title:"Frequently Asked Questions (FAQs)",sidebar_label:"FAQ",description:"FAQs to Help you Navigate on Polkadot.",keywords:["FAQ","questions"],slug:"../faq"},sidebar:"docs",previous:{title:"Research Pages",permalink:"/docs/research"},next:{title:"Glossary",permalink:"/docs/glossary"}},c={},p=[{value:"Polkadot Launch",id:"polkadot-launch",level:2},{value:"Polkadot Roadmap",id:"polkadot-roadmap",level:2},{value:"Validators",id:"validators",level:2},{value:"How do I apply to be a validator?",id:"how-do-i-apply-to-be-a-validator",level:3},{value:"How are validators rewarded?",id:"how-are-validators-rewarded",level:3},{value:"What is the minimum stake necessary to be elected as an active validator?",id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator",level:3},{value:"Why will Polkadot have only 1000 validators while other projects have hundreds of thousands?",id:"why-will-polkadot-have-only-1000-validators-while-other-projects-have-hundreds-of-thousands",level:3},{value:"Relay Chain",id:"relay-chain",level:2},{value:"What is the block time of the Relay Chain?",id:"what-is-the-block-time-of-the-relay-chain",level:3},{value:"Does Polkadot have smart contracts?",id:"does-polkadot-have-smart-contracts",level:3},{value:"How will the Polkadot Relay Chain connect to external chains in the ecosystem?",id:"how-will-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem",level:3},{value:"What is Polkadot's Transactions Per Second (TPS)?",id:"what-is-polkadots-transactions-per-second-tps",level:3},{value:"DOT",id:"dot",level:2},{value:"What is the difference between DOT (old) and new DOT?",id:"what-is-the-difference-between-dot-old-and-new-dot",level:3},{value:"What is the inflation rate of the DOT?",id:"what-is-the-inflation-rate-of-the-dot",level:3},{value:"Why can't crowdloaned DOT be staked?",id:"why-cant-crowdloaned-dot-be-staked",level:3},{value:"Governance",id:"governance",level:2},{value:"What prevents Polkadot governance from failing?",id:"what-prevents-polkadot-governance-from-failing",level:3},{value:"What prevents Polkadot governance from becoming plutocratic?",id:"what-prevents-polkadot-governance-from-becoming-plutocratic",level:3},{value:"Parachains",id:"parachains",level:2},{value:"How do parachain economics work?",id:"how-do-parachain-economics-work",level:3},{value:"Are parachains ephemeral? What happens when a parachain loses the next auction?",id:"are-parachains-ephemeral-what-happens-when-a-parachain-loses-the-next-auction",level:3},{value:"Networking",id:"networking",level:2},{value:"What is libp2p?",id:"what-is-libp2p",level:3},{value:"Does Polkadot use libp2p?",id:"does-polkadot-use-libp2p",level:3},{value:"How does libp2p differ from IPFS?",id:"how-does-libp2p-differ-from-ipfs",level:3},{value:"Kusama",id:"kusama",level:2},{value:"What is the minimum amount of KSM / DOT I can have in my account?",id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account",level:3},{value:"What are the transfer fees for Kusama?",id:"what-are-the-transfer-fees-for-kusama",level:3},{value:"Answered by Gav series",id:"answered-by-gav-series",level:2}],u={toc:p},m="wrapper";function k(e){var t=e.components,a=(0,n.Z)(e,s);return(0,i.kt)(m,(0,o.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"This FAQ focuses on technical questions for users interested in developing applications for\nPolkadot. If you have a more general question, you may wish to search for the answer on our support\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Knowledge Base")," or the main\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/faq"},"Polkadot network FAQ"),". If you have a question that is not answered,\nplease feel free to ask on the Polkadot Watercooler\n",(0,i.kt)("a",{parentName:"p",href:"https://app.element.io/#/room/#polkadot-watercooler:web3.foundation"},"Element channel")," or contact\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot Support"),".")),(0,i.kt)("h2",{id:"polkadot-launch"},"Polkadot Launch"),(0,i.kt)("p",null,"The Genesis block of the Polkadot network was launched on May 26, 2020 at 15:36:21 UTC, as a Proof\nof Authority (PoA) network, with governance controlled by the single Sudo (super-user) account.\nDuring this time, validators started joining the network and signaling their intention to\nparticipate in consensus."),(0,i.kt)("p",null,"The network evolved to become a Proof of Stake (PoS) network on June 18, 2020. With the chain\nsecured by the decentralized community of validators, the Sudo module was removed on July 20, 2020,\ntransitioning the governance of the chain into the hands of the token (DOT) holders. This is the\npoint where Polkadot became decentralized."),(0,i.kt)("p",null,"The final step of the transition to full-functioning Polkadot was the enabling of transfer\nfunctionality, which occurred on Polkadot at block number 1_205_128 on August 18, 2020, at 16:39\nUTC."),(0,i.kt)("p",null,"On August 21, 2020, Redenomination of DOT occurred. From this date, one DOT (old) equals 100 new\nDOT."),(0,i.kt)("h2",{id:"polkadot-roadmap"},"Polkadot Roadmap"),(0,i.kt)("p",null,"For more information on the Polkadot roadmap please visit the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/technology/#roadmap"},"official Polkadot website"),"."),(0,i.kt)("h2",{id:"validators"},"Validators"),(0,i.kt)("h3",{id:"how-do-i-apply-to-be-a-validator"},"How do I apply to be a validator?"),(0,i.kt)("p",null,"There is no central authority that decides on validators, so there is not per se an ",(0,i.kt)("em",{parentName:"p"},"application"),"\nthat you can fill out. Registering as a validator is permissionless; in order to become one you must\nonly set up a validator node and mark your intention to validate on chain. For detailed instruction\non how to do this you can consult the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-guides-how-to-validate-kusama"},"Kusama validator guide")," on validating\nfor Kusama or the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-guides-how-to-validate-polkadot"},"Polkadot validator guide")," for validating\non Polkadot."),(0,i.kt)("p",null,"However, once you've set up a validator and have registered your intention it does not mean that you\nwill be included in the ",(0,i.kt)("em",{parentName:"p"},"active set")," right away. The validators are elected to the active set based\non the results of an election algorithm known as ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n's method"),".\nPhragm\xe9n's method tries to accomplish two goals: 1) select ",(0,i.kt)("inlineCode",{parentName:"p"},"n")," members from a larger set based on\nstake-weighted votes and 2) equalize the stake backing each validator as much as possible."),(0,i.kt)("p",null,"You will likely want to campaign your validator to the community in order to get more backing. You\nare looking for ",(0,i.kt)("em",{parentName:"p"},"nominators")," that will put up their tokens to increase the stake for your validator.\nFor validators who cannot acquire the minimum stake from the community, Parity and Web3 Foundation\nalso run a joint programme called ",(0,i.kt)("a",{parentName:"p",href:"/docs/thousand-validators"},"Thousand Validators")," that will nominate\nvalidators if they apply and fit the requirements."),(0,i.kt)("h3",{id:"how-are-validators-rewarded"},"How are validators rewarded?"),(0,i.kt)("p",null,"Validators are rewarded from the inflation of the Relay Chain, transaction fees, and tips. However,\nthey only take a percentage of the former two. More details can be read on the page for\n",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-guides-validator-payout"},"validator payouts"),"."),(0,i.kt)("h3",{id:"what-is-the-minimum-stake-necessary-to-be-elected-as-an-active-validator"},"What is the minimum stake necessary to be elected as an active validator?"),(0,i.kt)("p",null,"The minimum stake that is necessary to be elected as an active validator is dynamic and can change\nover time. It depends not only on how much stake is being put behind each validator, but also the\nsize of the active set and how many validators are waiting in the pool."),(0,i.kt)("p",null,"There are a few ways to estimate the minimum stake."),(0,i.kt)("p",null,"One way can be to navigate to the\n",(0,i.kt)("a",{parentName:"p",href:"https://ipfs.io/ipns/polkadot.dotapps.io/#/staking/targets"},"Polkadot Apps Targets tab"),'. The value\nat the top of the screen saying "Lowest" is the least staked validator. You need at least this\nmuch + 1 to enter the set.'),(0,i.kt)("p",null,"You can also use some tools some to perform estimations."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate-debug-kit/tree/master/offline-election"},"Offline Election"),"\ncan provide exact results of running an election on the current set of validators using the same\nRust code that is ran in Polkadot.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("a",{parentName:"p",href:"https://github.com/w3f/validator-stats"},"Validator stats script")," can give you an estimate that is\nbased on the currently elected set, as well as some statistics about Kusama validators."))),(0,i.kt)("h3",{id:"why-will-polkadot-have-only-1000-validators-while-other-projects-have-hundreds-of-thousands"},"Why will Polkadot have only 1000 validators while other projects have hundreds of thousands?"),(0,i.kt)("p",null,"Polkadot's goal to have 1000 validators is set to be something that is practically achievable in the\nshort term with high confidence of good performance in a live environment. Furthermore, validators\nin Polkadot are not the only stakers, and if we consider the number of stakers that can be possible\non Polkadot the number can scale up to hundreds of thousands. Since validators are performing\ncritical consensus work to maintain the security of the chain including all of its shards, a more\nmodest number of validators is estimated to start. Upon later improvements, such as implementing\nsignature aggregation for finalization messages, the number of validators could reasonably scale up.\nHowever, increasing validators above one thousand remains a goal for later iterations of Polkadot."),(0,i.kt)("p",null,"It is also worth mentioning that one thousand validators is more than the number of validators of\nsimilar PoS chains with comparable levels of economic security as Polkadot. The closest contenders\nare operating with around 150 validators, while Polkadot is already securely running with\n","\n",(0,i.kt)(r.Z,{network:"polkadot",path:"query.staking.validatorCount",defaultValue:297,mdxType:"RPC"}),"\nvalidators."),(0,i.kt)("p",null,"Additionally, other projects sometimes have a different definition of ",(0,i.kt)("em",{parentName:"p"},"validator"),' that approximates\nmore closely to remote signing keys without the full operation of a validating node. On Polkadot,\neach validator is running their own validating node and performing full verification of the Relay\nChain, voting on finality, producing blocks in their decided slots, and verifying parachain state\ntransitions. Other projects may consider validators and "validating nodes" as separate entities.'),(0,i.kt)("p",null,"Finally, individuals may participate in the block production process indirectly by\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-nominator"},"nominating")," validators. In this way, individuals who are not running a\nnode can still share in staking rewards."),(0,i.kt)("h2",{id:"relay-chain"},"Relay Chain"),(0,i.kt)("h3",{id:"what-is-the-block-time-of-the-relay-chain"},"What is the block time of the Relay Chain?"),(0,i.kt)("p",null,"Both the Kusama and Polkadot networks are currently operating at a rate of one block every six\nseconds."),(0,i.kt)("p",null,"This may be changed in the future. It may go as low as two to three seconds after optimizations, or\npotentially increase in order to handle the capacity of the parachain networking in a live\nenvironment."),(0,i.kt)("h3",{id:"does-polkadot-have-smart-contracts"},"Does Polkadot have smart contracts?"),(0,i.kt)("p",null,"No - and yes. The Polkadot Relay Chain does not implement smart contracts natively. The reason for\nnot having smart contracts on the Relay Chain is part of the design philosophy for Polkadot that\ndictates that the Relay Chain should be the minimal logic required to accomplish its job."),(0,i.kt)("p",null,"However, Polkadot will be a platform for other chains that ",(0,i.kt)("em",{parentName:"p"},"do")," implement smart contracts. It's\npossible for parachains to enable smart contract functionality and then benefit from the security\nand interoperability features of Polkadot. Additionally, existing smart contract chains can connect\nto Polkadot as a parachain, or via a bridge."),(0,i.kt)("p",null,"While the Polkadot Relay Chain does not implement smart contracts directly, undoubtedly there will\nbe parachains that do. So it's better to say that the Polkadot ",(0,i.kt)("em",{parentName:"p"},"ecosystem"),' has smart contracts\nversus "Polkadot has smart contracts."'),(0,i.kt)("h3",{id:"how-will-the-polkadot-relay-chain-connect-to-external-chains-in-the-ecosystem"},"How will the Polkadot Relay Chain connect to external chains in the ecosystem?"),(0,i.kt)("p",null,"One of the cornerstone interoperability technologies being researched and developed for deployment\non Polkadot is cross-chain bridges. Bridges come in a variety of flavors with varying levels of\ntrust associated with them. Polkadot is predominantly researching the trust-minimized flavor that\nimposes economic costs on the operators of the bridge, and therefore makes it economically secure.\nBridge efforts are being worked on in concert with other projects in the ecosystem. Eventually,\nthere will be bridges between Polkadot and most of the other major chains."),(0,i.kt)("h3",{id:"what-is-polkadots-transactions-per-second-tps"},"What is Polkadot's Transactions Per Second (TPS)?"),(0,i.kt)("p",null,"Polkadot is a heterogeneous sharded network comprising a relay chain and numerous parachains, which\nare all individual blockchains built on ",(0,i.kt)("a",{parentName:"p",href:"https://substrate.io/"},"Substrate")," executing in parallel.\nHence, the Transactions Per Second (TPS) of Polkadot is a number that encompasses all the\ntransactions on the relay chain as well as parachains. As the transactions on these Substrate-based\nblockchains are ",(0,i.kt)("a",{parentName:"p",href:"https://docs.substrate.io/build/tx-weights-fees/"},"weights based"),", it makes sense to\nuse TPS as a measure for the network performance if all the transactions carry the same weight.\n",(0,i.kt)("a",{parentName:"p",href:"https://twitter.com/gavofyork/status/1270025498580656134"},"Performance benchmark tests")," show that\nSubstrate-based blockchains can achieve over 1000 TPS for balance transfer transactions. Assuming\nPolkadot is running over 100 parachains; the projected TPS is well over 100,000. With\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-async-backing"},"asynchronous backing upgrade"),", the TPS is expected to increase\ntenfold to 1,000,000."),(0,i.kt)("p",null,"It is essential to realize that TPS is inherently a subjective measurement with numerous factors\nthat can contribute to it. It's hard to gauge the usefulness of TPS in isolation (when compared to\nother chains), as it depends on what a transaction does for a particular network. To view how\nPolkadot measures TPS see the Polkadot sTPS\n(",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-stps/blob/main/docs/introduction.md"},"Standard Transaction Per Second"),")\nto consider precisely how benchmarking was performed for Polkadot."),(0,i.kt)("h2",{id:"dot"},"DOT"),(0,i.kt)("h3",{id:"what-is-the-difference-between-dot-old-and-new-dot"},"What is the difference between DOT (old) and new DOT?"),(0,i.kt)("p",null,"The DOT (old) unit on Polkadot was at twelve decimal places, otherwise known as 1e12 Plancks. On 21\nAugust, 2020, Denomination Day, the DOT (old) value was redenominated to 1e10 (10_000_000_000, or\nten billion) Plancks, meaning that the new DOT was valued at ten decimal places. Following the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn/learn-redenomination"},"redenomination"),", the new DOT is called DOT."),(0,i.kt)("h3",{id:"what-is-the-inflation-rate-of-the-dot"},"What is the inflation rate of the DOT?"),(0,i.kt)("p",null,"The inflation rate is approximately 10% per year."),(0,i.kt)("p",null,"A portion of the inflation is rewarded to validators for performing their duties, while another\nportion may go directly to the treasury. The exact percentage that goes into both varies and is\nbased on the amount of DOT that are staked. Please see the article on\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking/#inflation"},"inflation")," for more information."),(0,i.kt)("h3",{id:"why-cant-crowdloaned-dot-be-staked"},"Why can't crowdloaned DOT be staked?"),(0,i.kt)("p",null,"DOTs contributed to a successful crowdloan campaign by a parachain are bonded for the entire lease\nperiod, which is two years on Polkadot. The crowdloaned DOT cannot be used for any other DOT utility\nfunctionalities like staking and democracy. In exchange to the lost staking rewards or liquidity of\nDOTs, the parachain team may offer rewards to the contributor."),(0,i.kt)("p",null,"The utility of crowdloaned DOT is to provide a lease for a parachain. The utility of staked DOT is\nto secure the network through a reward/slash mechanism. Allowing crowdloaned DOT to be staked\nresults in complex consequences like applying a slash on crowdloaned DOT that was meant to be bonded\nfor the entire lease period of a parachain. In a way, the inaccessibility of crowdloaned DOTs and\nthe lack of staking rewards for the entire lease duration encourages the contributors to back\nprojects that are valuable to the ecosystem."),(0,i.kt)("h2",{id:"governance"},"Governance"),(0,i.kt)("h3",{id:"what-prevents-polkadot-governance-from-failing"},"What prevents Polkadot governance from failing?"),(0,i.kt)("p",null,"Polkadot's governance has already been shown to work. Examples can be found in the runtime upgrades\nthat have successfully taken place through on the testnets as well as in a real economic environment\non ",(0,i.kt)("a",{parentName:"p",href:"https://guide.kusama.network"},"Kusama")," and Polkadot itself."),(0,i.kt)("p",null,"It is fair to say that the field of on-chain blockchain governance is still new, and no one can\nclaim to know exactly what the optimal version of on-chain governance is yet. However, Polkadot\ntakes a brave step forward in pioneering thought-through mechanisms for evolving a blockchain."),(0,i.kt)("p",null,"Blockchains need a method to adapt and evolve. Therefore, an on-chain governance system was\nnecessary for the long-term success of Polkadot. Ultimately, it is the token holders that are\nresponsible for preventing Polkadot's governance from failing by using their economic value and\nconviction to sway the progression of the protocol."),(0,i.kt)("h3",{id:"what-prevents-polkadot-governance-from-becoming-plutocratic"},"What prevents Polkadot governance from becoming plutocratic?"),(0,i.kt)("p",null,"A savvy reader might have noticed that the answer to the previous question endowed the token holder\nwith the ultimate responsibility to ensure that Polkadot's governance does not fail. By following\nthe train of this assertion, one might assume that Polkadot's governance is susceptible to becoming\nruled by a few large token holders (called ",(0,i.kt)("em",{parentName:"p"},"whales")," in trading parlance) and therefore become a mere\nplutocracy (rule of the rich)."),(0,i.kt)("p",null,"There are several other mechanisms that are built-in to the governance system to resist this\nplutocratic tendency. One of these mechanisms is called conviction voting, and imbues greater voting\npower to token holders who are willing to lock their tokens on the protocol for longer lengths of\ntime. Longer lock-ups display ",(0,i.kt)("em",{parentName:"p"},"conviction")," in a vote. Conviction voting could allow a highly\ndetermined minority to overrule the vote of an apathetic majority in certain situations. Another\nmechanism is known as Adaptive Quorum Biasing. This makes proposals have a varying threshold for\napproval or rejection based on what part of the governance protocol the proposal originated in. For\ndetails on the subtleties of Polkadot's governance system, please see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"governance page"),"."),(0,i.kt)("h2",{id:"parachains"},"Parachains"),(0,i.kt)("h3",{id:"how-do-parachain-economics-work"},"How do parachain economics work?"),(0,i.kt)("p",null,"Parachains have the flexibility to implement their own monetary system or incentive structure for\ncollators. However, this is not strictly necessary. Since the collator's job is to continue to give\nrecent state transitions to the validators on the Relay Chain who validate each transition, the\nsecurity of the parachain and the Polkadot network is completely separate from parachain economics.\nParachains need collators to continue to progress, so it wouldn't be unreasonable to see them\nincentivize collator nodes in some way, but the specific mechanism is completely up to parachain\nimplementers."),(0,i.kt)("h3",{id:"are-parachains-ephemeral-what-happens-when-a-parachain-loses-the-next-auction"},"Are parachains ephemeral? What happens when a parachain loses the next auction?"),(0,i.kt)("p",null,"Parachains are not ephemeral. As long as someone is keeping the data for a parachain, the parachain\ncan move between being a parachain, a parathread, or a separate sovereign chain at different points\nof its lifetime. Especially with parathreads, parachains can be decommissioned to only produce\nblocks when their usage and throughput makes it necessary."),(0,i.kt)("p",null,"When a parachain loses an auction for renewal, that parachain has a few options. In most cases,\nbecoming a parathread instead would be a suitable choice. Parathreads are still secured by the Relay\nChain, but don't need to hold a parachain slot and can produce a block when its economically\nfeasible for them. For more on parachains please see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachains page")," and for more on parathreads see\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-parathreads"},"the parathreads page"),"."),(0,i.kt)("h2",{id:"networking"},"Networking"),(0,i.kt)("h3",{id:"what-is-libp2p"},"What is libp2p?"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://libp2p.io"},"Libp2p")," is a modular and extensible networking stack that is used by IPFS,\nSubstrate, and many other projects. It is a collection of peer-to-peer protocols for finding peers\nand connecting to them. Its modules have logic for content routing, peer routing, peer discovery,\ndifferent transports, and NAT traversals. It is intended to be used by applications for building\nlarge scale peer-to-peer networks by only selecting the parts of the protocol suite that are needed."),(0,i.kt)("p",null,"The Rust implementation of the specification was built and primarily maintained by a team of\ncontributors at Parity Technologies. The Go and JavaScript versions are maintained by Protocol Labs\nas well as community contributors. A ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/status-im/nim-libp2p"},"Nim")," version of the\nlibrary also exists. Libp2p as a whole is an open source project that is actively developed and\nexpanded on various code repositories hosted on ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/libp2p"},"their GitHub"),"."),(0,i.kt)("h3",{id:"does-polkadot-use-libp2p"},"Does Polkadot use libp2p?"),(0,i.kt)("p",null,"Yes, since Polkadot is built with Substrate. Substrate uses a networking protocol that is based on\nlibp2p (specifically the Rust libp2p library). However, Substrate uses a mix of standard libp2p\nprotocols and protocols that are homegrown and not official libp2p standards. Of the standards\nprotocols, those which are shared with other implementations of libp2p such as IPFS, are\nconnection-checking (ping), asking for information on a peer (identity), and Kademlia random walks\n(kad)."),(0,i.kt)("p",null,"Of the protocols that are custom to Substrate, there are the legacy Substrate stream, a\nrequest-response for getting information on blocks (sync), a light client protocol, a notification\nprotocol for transactions, and block announcement. For detailed information on how Substrate uses\nlibp2p and the standard and custom protocols, please see the\n",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/sc_network/index.html"},"networking documentation"),"."),(0,i.kt)("h3",{id:"how-does-libp2p-differ-from-ipfs"},"How does libp2p differ from IPFS?"),(0,i.kt)("p",null,"The ",(0,i.kt)("a",{parentName:"p",href:"https://ipfs.io/"},"Interplanetary File System"),' (IPFS) is a peer-to-peer hypermedia protocol used\nprimarily for storage of files. It allows one to upload a file onto the network and share it with\nits content addressable URI. IPFS, like Substrate, is an application of libp2p and exists higher on\nthe technology stack. Although both IPFS and Substrate use libp2p, it cannot be said that Substrate\n"uses" IPFS since besides sharing the underlying library for networking there is no native\nintegration between the two applications.'),(0,i.kt)("h2",{id:"kusama"},"Kusama"),(0,i.kt)("h3",{id:"what-is-the-minimum-amount-of-ksm--dot-i-can-have-in-my-account"},"What is the minimum amount of KSM / DOT I can have in my account?"),(0,i.kt)("p",null,"Please see information about ",(0,i.kt)("a",{parentName:"p",href:"/docs/build-protocol-info"},"Existential Deposits"),"."),(0,i.kt)("h3",{id:"what-are-the-transfer-fees-for-kusama"},"What are the transfer fees for Kusama?"),(0,i.kt)("p",null,"It is important to note that the cost of transferring KSM is dynamic. Currently, the minimum cost of\ntransferring KSM is 0.01 KSM (the base fee), although this can be changed via governance. However,\nactual transaction fees will vary based on a variety of factors. Specifically, fee calculation\nfollows the following formula:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"base_fee + (tx_length * length_fee) + WeightToFee(weight)\n")),(0,i.kt)("p",null,"Please see the\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/how-to-guides/weights/calculate-fees/"},"fee calculation")," page in\nthe Substrate documentation for more detailed information."),(0,i.kt)("h2",{id:"answered-by-gav-series"},"Answered by Gav series"),(0,i.kt)("p",null,'The "Answered by Gav" series is a collection of posts uploaded to Reddit of questions that have been\nasked in the Polkadot Watercooler Riot channel and answered by Polkadot founder Gavin Wood.'),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87d96/answered_by_gav_reason_for_using_asynchronous/"},"Reason for using asynchronous rather than synchronous communication? Difference in terms of TPS?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87awr/answered_by_gav_how_exactly_do_validators_in_an/"},"How exactly do validators in an ETH parachain keep moving around and how is communication between zones trustless?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87bua/answered_by_gav_what_are_the_main_issues_with/"},"What are the main issues with Bitcoin integration and will it ever be possible? Same problem with other POW chains? Is Polkadot only going to work with POS chains? How is it trust-less in comparison to Cosmos though?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87cjz/answered_by_gav_what_are_the_current_thoughts/"},"What are the current thoughts around governance especially since projects have to be voted in to receive the parachains security?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/b87ds8/answered_by_gav_also_is_there_any_detailed/"},"Also is there any detailed overview of how exactly a token transfer from ETH could be exchanged with another chain's currency?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/bcqrx9/answered_by_gav_can_i_run_multiple_validators/"},"Can I run multiple Validators with the same Session Key?")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/dot/comments/bcqwit/answered_by_gav_how_to_tackle_the_concentration/"},"How to tackle the concentration risk of Validators in data centers?"))))}k.isMDXComponent=!0},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/cda87995.19405962.js b/assets/js/cda87995.19405962.js new file mode 100644 index 0000000000..f5a6effe1f --- /dev/null +++ b/assets/js/cda87995.19405962.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3933],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>d});var o=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,o)}return a}function n(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var s=o.createContext({}),p=function(t){var e=o.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):n(n({},e),t)),a},c=function(t){var e=p(t.components);return o.createElement(s.Provider,{value:e},t.children)},u="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},m=o.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,s=t.parentName,c=l(t,["components","mdxType","originalType","parentName"]),u=p(a),m=r,d=u["".concat(s,".").concat(m)]||u[m]||h[m]||i;return a?o.createElement(d,n(n({ref:e},c),{},{components:a})):o.createElement(d,n({ref:e},c))}));function d(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,n=new Array(i);n[0]=m;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l[u]="string"==typeof t?t:r,n[1]=l;for(var p=2;p{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var o=a(87462),r=a(63366),i=(a(67294),a(3905)),n=["components"],l={id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},s=void 0,p={unversionedId:"build/build-tools-index",id:"build/build-tools-index",title:"Tool Index",description:"Reference point for a list of tools to support your development.",source:"@site/../docs/build/build-tools-index.md",sourceDirName:"build",slug:"/build-tools-index",permalink:"/docs/build-tools-index",draft:!1,tags:[],version:"current",lastUpdatedBy:"Andrei Kostakov",lastUpdatedAt:1710922051,formattedLastUpdatedAt:"Mar 20, 2024",frontMatter:{id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},sidebar:"docs",previous:{title:"Using Light Clients",permalink:"/docs/build-light-clients"},next:{title:"Open Source Stack",permalink:"/docs/build-open-source"}},c={},u=[{value:"Wallets",id:"wallets",level:2},{value:"Block Explorers",id:"block-explorers",level:2},{value:"Blockchain Analytics",id:"blockchain-analytics",level:2},{value:"Network Monitoring & Reporting",id:"network-monitoring--reporting",level:2},{value:"Clients",id:"clients",level:2},{value:"Tools",id:"tools",level:2},{value:"IDEs",id:"ides",level:2},{value:"UI",id:"ui",level:2},{value:"Libraries",id:"libraries",level:2},{value:"Polkadot-JS API",id:"polkadot-js-api",level:3},{value:"Alternative Libraries",id:"alternative-libraries",level:3},{value:"CLI Tools",id:"cli-tools",level:3},{value:"WASM",id:"wasm",level:3},{value:"RPC and API Tools",id:"rpc-and-api-tools",level:3},{value:"SCALE Codec",id:"scale-codec",level:3},{value:"Data Crawling and Conversion",id:"data-crawling-and-conversion",level:2}],h={toc:u},m="wrapper";function d(t){var e=t.components,a=(0,r.Z)(t,n);return(0,i.kt)(m,(0,o.Z)({},h,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Here, we provide a list of tools available for your development needs. They are sorted by context.\nIf you're actively maintaining a tool that might be useful to other Polkadot, Kusama or Substrate\ndevelopers, feel free to ",(0,i.kt)("a",{parentName:"p",href:"/docs/contributing"},"add it in"),"."),(0,i.kt)("h2",{id:"wallets"},"Wallets"),(0,i.kt)("p",null,"Please see the ",(0,i.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions"},"Wallets")," page."),(0,i.kt)("h2",{id:"block-explorers"},"Block Explorers"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps Explorer")," - Polkadot dashboard block\nexplorer. Supports dozens of other networks, including Kusama, Westend, and other remote or local\nendpoints. ",(0,i.kt)("a",{parentName:"li",href:"https://cloudflare-ipfs.com/ipns/dotapps.io"},"Access via IPFS")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkascan.io/"},"Polkascan")," - Blockchain explorer for Polkadot, Kusama, and other related\nchains. ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/polkascan-os"},"Repo"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://subscan.io"},"Subscan")," - Blockchain explorer for Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/subscan-essentials"},"Repo"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://dotscanner.com?utm_source=polkadot_wiki"},"DotScanner")," - Polkadot & Kusama Blockchain\nexplorer."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://3xpl.com/polkadot"},"3xpl.com")," - Fastest ad-free universal block explorer and JSON API with\nPolkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://blockchair.com/polkadot"},"Blockchair.com")," - Universal blockchain explorer and search\nengine with Polkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkaholic.io"},"Polkaholic.io")," - Polkadot & Kusama Blockchain explorer with API and DeFi\nsupport across 40+ parachains.")),(0,i.kt)("h2",{id:"blockchain-analytics"},"Blockchain Analytics"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://app.web3go.xyz/#/"},"Web3go")," - An open platform for everyone to play with, curate and\nvisualize multi-blockchain data"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkawatch.app/"},"Polkawatch")," - Polkadot Decentralization Analytics")),(0,i.kt)("h2",{id:"network-monitoring--reporting"},"Network Monitoring & Reporting"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://telemetry.polkadot.io/"},"Polkadot Telemetry Service")," - Network information including what\nnodes are running the chain, what software versions they are running, sync status, and location."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot"},"Polkabot")," - Polkadot network monitoring and reporting using Matrix\n(Riot / Element) chat. Users may create custom bot plugins.\n",(0,i.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/polkabot-a3dba18c20c8"},"Blogpost"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Ryabina-io/substratebot"},"Ryabina's Telegram Bot")," - A Telegram bot for\nmonitoring on-chain events of Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot/polkabot"},"GitHub Repository")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkastats.io/"},"PolkaStats")," - Polkadot network statistics (includes Kusama). Shows\nnetwork information and staking details from validators and intentions.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/Colm3na/polkastats-v2/"},"GitHub Repository"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/panic"},"Panic")," - A node monitoring and alert server for validators."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/open-web3-stack/guardian"},"OpenWeb3/Guardian")," - A CLI tool and JS library to\nmonitor on chain states and events."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sodazone/ocelloids"},"Ocelloids SDK")," - Typescript SDK for multi-chain monitoring\nthat supports domain-specific logic for different pallets."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ArthurHoeke/cyclops/"},"Cyclops Dashboard")," - a validator dashboard application\nthat helps Polkadot network validators keep track of all their validators, their staking rewards,\nand performance.")),(0,i.kt)("h2",{id:"clients"},"Clients"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot"},"Polkadot")," - The original Rust implementation of the\nPolkadot Host."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/kagome"},"Kagome")," - A C++ Polkadot implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu"},"Soramitsu"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," - A Go implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://chainsafe.io/"},"ChainSafe Systems"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/txwrapper"},"TX Wrapper")," - Helper functions for offline transaction\ngeneration.")),(0,i.kt)("h2",{id:"tools"},"Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate"},"Substrate")," - Blockchain development platform written in\nRust. The Rust version of the Polkadot Host is being built with Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/"},"Substrate Docs")," - Comprehensive documentation and tutorials for\nbuilding a blockchain using Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/vscode-substrate"},"Substrate VSCode plugin"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate Debug Kit")," - A collection of debug\ntools and libraries around substrate chains. Includes tools to calculate NPoS elections offline,\ndisk usage monitoring, test templates against chain state and other pallet-specific helper."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://crates.io/crates/diener"},"Diener")," - A tool for easy changing of Polkadot or Substrate\ndependency versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/shawntabrizi/polkadot-launch"},"Polkadot Launch")," - A tool to easily launch\ncustom local parachain-enabled Polkadot versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/halva-suite/halva"},"Halva")," - A Truffle-inspired local development environment\nfor Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork-off Substrate")," - Copies the state of an\nexisting chain into your local version and lets you further experiment on it."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.chevdor.com/tags/srtool/"},"srtool")," - A tool for verifying runtime versions against\non-chain proposal hashes."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nikvolf/sub-bench"},"sub-bench")," - A tool to spam your node with transactions for\nthe sake of benchmarking."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/danforbes/substrate-devhub-utils"},"substrate-devhub-utils")," - A set of\nJavaScript utilities making life with Substrate a little easier."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," - A tool to benchmark Substrate by flooding it\nwith requests."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Apillon"},"Apillon")," - A Web3 development platform with a complete toolbox and\naccess to Polkadot\u2019s technology stack.")),(0,i.kt)("h2",{id:"ides"},"IDEs"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://chainide.gitbook.io/chainide-english-1/ethereum-ide-1/13.-astar-ide"},"Astar IDE")," by\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/"},"Chain IDE")," is a tool for lightning-speed smart contracts and dApp\ndevelopment for ",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-wasm?language=en"},"Wasm")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-evm?language=en"},"EVM"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sandoxio/sandox"},"Sandox IDE")," is an integrated development environment (IDE)\nwith tools for building in the Polkadot environment. Currently helpful for creating applications\nin JS.")),(0,i.kt)("h2",{id:"ui"},"UI"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Swader/polkadash"},"Polkadash")," - VueJS-based starter kit for custom user\ninterfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/apps"},"Polkadot JS Apps UI")," - Repository of the\n",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps"},"polkadot.js.org/apps")," UI."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/substrate-front-end-template"},"Substrate Front-end Template")," -\nReactJS-based starter UI for custom user interfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/extension"},"Polkadot JS Browser Extension")," - Key management in a\nChrome extension."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot-ui.info/"},"Polkadot UI")," - A library and platform for developing and publishing\nassets for Polkadot dapps.")),(0,i.kt)("h2",{id:"libraries"},"Libraries"),(0,i.kt)("h3",{id:"polkadot-js-api"},"Polkadot-JS API"),(0,i.kt)("p",null,"The Polkadot-JS API provides various utility functions that are used across all projects in the\n",(0,i.kt)("inlineCode",{parentName:"p"},"@polkadot")," namespace and is split into a number of internal utility packages. The documentation and\nusage instructions are provided at ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/"},"Polkadot-JS API Documentation"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring"},"@polkadot/keyring")," This allows you to create and load\naccounts in JavaScript. It is helpful for creating wallets or any application that will require\nthe user to write to chain. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/create"},"Examples"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/install#other-dependencies"},"@polkadot/util")," Utility\nfunctions like checking if a string is hex-encoded."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/util-crypto/"},"@polkadot/util-crypto")," Useful cryptographic utilities\nfor developing with Polkadot.")),(0,i.kt)("h3",{id:"alternative-libraries"},"Alternative Libraries"),(0,i.kt)("p",null,"The following libraries/SDKs allow for interfacing with a Substrate node in other languages:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Library by Polkascan")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go Library by Centrifuge")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/strategyobject/substrate-client-java"},"Java Library by StrategyObject")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-iOS"},"Fearless Utils iOS Swift SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nova-wallet/substrate-sdk-ios"},"Nova Wallet iOS/Swift Substrate SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-Android"},"Kotlin SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/leonardocustodio/polkadart"},"Dart/Flutter Library"))),(0,i.kt)("h3",{id:"cli-tools"},"CLI Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/api-cli"},"@polkadot/api-cli")," Command\nline interface for the polkadot API. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/api/start"},"Documentation"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/monitor-rpc"},"@polkadot/monitor-rpc")," An\nRPC monitor for Polkadot. See the RPC tools below for additional information."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/signer-cli"},"@polkadot/signer-cli")," A\nTool to construct, sign, and broadcast transactions. Signing can be done offline."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"Polkadot API Cpp")," - A \u0421++ API for Polkadot, can\nbuild ",(0,i.kt)("inlineCode",{parentName:"li"},"clip"),", a command line tool."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey")," - Command line utility\nfor generating and inspecting key pairs.")),(0,i.kt)("h3",{id:"wasm"},"WASM"),(0,i.kt)("p",null,"WebAssembly related tools and projects."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/ink/"},"ink!")," - An eDSL to write WebAssembly based smart contracts\nusing the Rust programming language."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/parity-wasm"},"parity-wasm")," - Low-level WebAssembly format library."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasm-utils"},"wasm-utils")," - Collection of WebAssembly utilities used\nin pwasm-ethereum and substrate contract development."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasmi"},"wasmi")," - A WebAssembly interpreter conceived as a component\nof parity-ethereum (Ethereum-like contracts in Wasm) and Substrate.")),(0,i.kt)("h3",{id:"rpc-and-api-tools"},"RPC and API Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/api/tree/master/packages/rpc-provider"},"@polkadot/api/rpc-provider"),"\nDemonstrates how the JS tools interact with the node over RPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/substrate/rpc"},"RPC documentation")," - Documentation of Substrate RPC\nmethods."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/polkadot_api_server"},"Polkadot API Server by SimplyVC")," - A wrapper\naround the Polkadot API which makes it easier to make Polkadot API calls from any programming\nlanguage."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/substrate-api-rpc"},"Go: Subscan API")," - Go API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++ Polkadot API")," - \u0421++ API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ajuna-network/Ajuna.SDK"},".NET Toolchain for Polkadot/Substrate API")," -\nToolchain to generate Polkadot API & Service Layer for .NET (usable in Unity)."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".NET Polkadot API")," - Polkadot Substrate API\nfor .NET."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Polkadot API")," - Polkadot library for\nPython."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client/"},"GSRPC")," - Substrate RPC client in Go,\na.k.a. GSRPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar")," - An HTTP wrapper for\nSubstrate, abstracting some complex RPC calls into simple REST calls."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-subxt"},"Subxt")," - A Rust library to submit extrinsics to a\nSubstrate node via RPC.")),(0,i.kt)("h3",{id:"scale-codec"},"SCALE Codec"),(0,i.kt)("p",null,"The SCALE (Simple Concatenated Aggregate Little-Endian) Codec is a lightweight, efficient, binary\nserialization and deserialization codec."),(0,i.kt)("p",null,"It is designed for high-performance, copy-free encoding and decoding of data in resource-constrained\nexecution contexts, such as the Substrate runtime. It is not self-describing in any way and assumes\nthe decoding context has all type knowledge about the encoded data."),(0,i.kt)("p",null,"It is used in almost all communication to/from Substrate nodes, so implementations in different\nlanguages exist:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/awesome-substrate#scale-codec"},"Substrate Awesome"),"\nmaintains a list of SCALE codex implementations.")),(0,i.kt)("h2",{id:"data-crawling-and-conversion"},"Data Crawling and Conversion"),(0,i.kt)("p",null,"The following tools help you extract and structure data from a Substrate node."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/polkascan-pre-harvester"},"Polkascan PRE Harvester"),"\n(",(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/polkascan-pre-explorer-gui"},"matching explorer for harvested data"),") -\nTransforms raw blockchain data into relational data."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-archive"},"Parity's Substrate Archive")," - Can be run\nalongside a Substrate node to archive all blocks, state, and extrinsic data into PostgreSQL\ndatabase."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/squid-archive-setup"},"Subsquid Archives")," - Generate a GraphQL database\nfrom a Substrate chain's data with rich filtering and querying capabilities. The data (events,\nextrinsics, blocks) for most parachains is readily available though public archive GraphQL\nendpoints, kept in\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/archive-registry/blob/main/archives.json"},"Squid Archive Registry")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/TheGoldenEye/polka-store"},"Polka-store")," - A tool which scans a Substrate chain\nand stores balance-relevant transactions in an SQLite database."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/playzero/substrate-graph"},"Substrate-graph")," - A compact indexer for Substrate\nbased nodes providing a GraphQL interface.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cda87995.f07505e8.js b/assets/js/cda87995.f07505e8.js deleted file mode 100644 index e9f572d6a9..0000000000 --- a/assets/js/cda87995.f07505e8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3933],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>d});var o=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,o)}return a}function n(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var s=o.createContext({}),p=function(t){var e=o.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):n(n({},e),t)),a},c=function(t){var e=p(t.components);return o.createElement(s.Provider,{value:e},t.children)},u="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},m=o.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,s=t.parentName,c=l(t,["components","mdxType","originalType","parentName"]),u=p(a),m=r,d=u["".concat(s,".").concat(m)]||u[m]||h[m]||i;return a?o.createElement(d,n(n({ref:e},c),{},{components:a})):o.createElement(d,n({ref:e},c))}));function d(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,n=new Array(i);n[0]=m;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l[u]="string"==typeof t?t:r,n[1]=l;for(var p=2;p{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var o=a(87462),r=a(63366),i=(a(67294),a(3905)),n=["components"],l={id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},s=void 0,p={unversionedId:"build/build-tools-index",id:"build/build-tools-index",title:"Tool Index",description:"Reference point for a list of tools to support your development.",source:"@site/../docs/build/build-tools-index.md",sourceDirName:"build",slug:"/build-tools-index",permalink:"/docs/build-tools-index",draft:!1,tags:[],version:"current",lastUpdatedBy:"Nikos Kontakis",lastUpdatedAt:1708944643,formattedLastUpdatedAt:"Feb 26, 2024",frontMatter:{id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},sidebar:"docs",previous:{title:"Using Light Clients",permalink:"/docs/build-light-clients"},next:{title:"Open Source Stack",permalink:"/docs/build-open-source"}},c={},u=[{value:"Wallets",id:"wallets",level:2},{value:"Block Explorers",id:"block-explorers",level:2},{value:"Blockchain Analytics",id:"blockchain-analytics",level:2},{value:"Network Monitoring & Reporting",id:"network-monitoring--reporting",level:2},{value:"Clients",id:"clients",level:2},{value:"Tools",id:"tools",level:2},{value:"IDEs",id:"ides",level:2},{value:"UI",id:"ui",level:2},{value:"Libraries",id:"libraries",level:2},{value:"Polkadot-JS API",id:"polkadot-js-api",level:3},{value:"Alternative Libraries",id:"alternative-libraries",level:3},{value:"CLI Tools",id:"cli-tools",level:3},{value:"WASM",id:"wasm",level:3},{value:"RPC and API Tools",id:"rpc-and-api-tools",level:3},{value:"SCALE Codec",id:"scale-codec",level:3},{value:"Data Crawling and Conversion",id:"data-crawling-and-conversion",level:2}],h={toc:u},m="wrapper";function d(t){var e=t.components,a=(0,r.Z)(t,n);return(0,i.kt)(m,(0,o.Z)({},h,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Here, we provide a list of tools available for your development needs. They are sorted by context.\nIf you're actively maintaining a tool that might be useful to other Polkadot, Kusama or Substrate\ndevelopers, feel free to ",(0,i.kt)("a",{parentName:"p",href:"/docs/contributing"},"add it in"),"."),(0,i.kt)("h2",{id:"wallets"},"Wallets"),(0,i.kt)("p",null,"Please see the ",(0,i.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions"},"Wallets")," page."),(0,i.kt)("h2",{id:"block-explorers"},"Block Explorers"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps Explorer")," - Polkadot dashboard block\nexplorer. Supports dozens of other networks, including Kusama, Westend, and other remote or local\nendpoints. ",(0,i.kt)("a",{parentName:"li",href:"https://ipfs.io/ipns/dotapps.io"},"Access via IPFS")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkascan.io/"},"Polkascan")," - Blockchain explorer for Polkadot, Kusama, and other related\nchains. ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/polkascan-os"},"Repo"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://subscan.io"},"Subscan")," - Blockchain explorer for Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/subscan-essentials"},"Repo"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://dotscanner.com?utm_source=polkadot_wiki"},"DotScanner")," - Polkadot & Kusama Blockchain\nexplorer."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://3xpl.com/polkadot"},"3xpl.com")," - Fastest ad-free universal block explorer and JSON API with\nPolkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://blockchair.com/polkadot"},"Blockchair.com")," - Universal blockchain explorer and search\nengine with Polkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkaholic.io"},"Polkaholic.io")," - Polkadot & Kusama Blockchain explorer with API and DeFi\nsupport across 40+ parachains.")),(0,i.kt)("h2",{id:"blockchain-analytics"},"Blockchain Analytics"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://app.web3go.xyz/#/"},"Web3go")," - An open platform for everyone to play with, curate and\nvisualize multi-blockchain data"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkawatch.app/"},"Polkawatch")," - Polkadot Decentralization Analytics")),(0,i.kt)("h2",{id:"network-monitoring--reporting"},"Network Monitoring & Reporting"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://telemetry.polkadot.io/"},"Polkadot Telemetry Service")," - Network information including what\nnodes are running the chain, what software versions they are running, sync status, and location."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot"},"Polkabot")," - Polkadot network monitoring and reporting using Matrix\n(Riot / Element) chat. Users may create custom bot plugins.\n",(0,i.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/polkabot-a3dba18c20c8"},"Blogpost"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Ryabina-io/substratebot"},"Ryabina's Telegram Bot")," - A Telegram bot for\nmonitoring on-chain events of Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot/polkabot"},"GitHub Repository")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkastats.io/"},"PolkaStats")," - Polkadot network statistics (includes Kusama). Shows\nnetwork information and staking details from validators and intentions.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/Colm3na/polkastats-v2/"},"GitHub Repository"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/panic"},"Panic")," - A node monitoring and alert server for validators."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/open-web3-stack/guardian"},"OpenWeb3/Guardian")," - A CLI tool and JS library to\nmonitor on chain states and events."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sodazone/ocelloids"},"Ocelloids SDK")," - Typescript SDK for multi-chain monitoring\nthat supports domain-specific logic for different pallets."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ArthurHoeke/cyclops/"},"Cyclops Dashboard")," - a validator dashboard application\nthat helps Polkadot network validators keep track of all their validators, their staking rewards,\nand performance.")),(0,i.kt)("h2",{id:"clients"},"Clients"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot"},"Polkadot")," - The original Rust implementation of the\nPolkadot Host."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/kagome"},"Kagome")," - A C++ Polkadot implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu"},"Soramitsu"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," - A Go implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://chainsafe.io/"},"ChainSafe Systems"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/txwrapper"},"TX Wrapper")," - Helper functions for offline transaction\ngeneration.")),(0,i.kt)("h2",{id:"tools"},"Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate"},"Substrate")," - Blockchain development platform written in\nRust. The Rust version of the Polkadot Host is being built with Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/"},"Substrate Docs")," - Comprehensive documentation and tutorials for\nbuilding a blockchain using Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/vscode-substrate"},"Substrate VSCode plugin"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate Debug Kit")," - A collection of debug\ntools and libraries around substrate chains. Includes tools to calculate NPoS elections offline,\ndisk usage monitoring, test templates against chain state and other pallet-specific helper."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://crates.io/crates/diener"},"Diener")," - A tool for easy changing of Polkadot or Substrate\ndependency versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/shawntabrizi/polkadot-launch"},"Polkadot Launch")," - A tool to easily launch\ncustom local parachain-enabled Polkadot versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/halva-suite/halva"},"Halva")," - A Truffle-inspired local development environment\nfor Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork-off Substrate")," - Copies the state of an\nexisting chain into your local version and lets you further experiment on it."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.chevdor.com/tags/srtool/"},"srtool")," - A tool for verifying runtime versions against\non-chain proposal hashes."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nikvolf/sub-bench"},"sub-bench")," - A tool to spam your node with transactions for\nthe sake of benchmarking."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/danforbes/substrate-devhub-utils"},"substrate-devhub-utils")," - A set of\nJavaScript utilities making life with Substrate a little easier."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," - A tool to benchmark Substrate by flooding it\nwith requests."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Apillon"},"Apillon")," - A Web3 development platform with a complete toolbox and\naccess to Polkadot\u2019s technology stack.")),(0,i.kt)("h2",{id:"ides"},"IDEs"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://chainide.gitbook.io/chainide-english-1/ethereum-ide-1/13.-astar-ide"},"Astar IDE")," by\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/"},"Chain IDE")," is a tool for lightning-speed smart contracts and dApp\ndevelopment for ",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-wasm?language=en"},"Wasm")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-evm?language=en"},"EVM"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sandoxio/sandox"},"Sandox IDE")," is an integrated development environment (IDE)\nwith tools for building in the Polkadot environment. Currently helpful for creating applications\nin JS.")),(0,i.kt)("h2",{id:"ui"},"UI"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Swader/polkadash"},"Polkadash")," - VueJS-based starter kit for custom user\ninterfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/apps"},"Polkadot JS Apps UI")," - Repository of the\n",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps"},"polkadot.js.org/apps")," UI."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/substrate-front-end-template"},"Substrate Front-end Template")," -\nReactJS-based starter UI for custom user interfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/extension"},"Polkadot JS Browser Extension")," - Key management in a\nChrome extension."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot-ui.info/"},"Polkadot UI")," - A library and platform for developing and publishing\nassets for Polkadot dapps.")),(0,i.kt)("h2",{id:"libraries"},"Libraries"),(0,i.kt)("h3",{id:"polkadot-js-api"},"Polkadot-JS API"),(0,i.kt)("p",null,"The Polkadot-JS API provides various utility functions that are used across all projects in the\n",(0,i.kt)("inlineCode",{parentName:"p"},"@polkadot")," namespace and is split into a number of internal utility packages. The documentation and\nusage instructions are provided at ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/"},"Polkadot-JS API Documentation"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring"},"@polkadot/keyring")," This allows you to create and load\naccounts in JavaScript. It is helpful for creating wallets or any application that will require\nthe user to write to chain. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/create"},"Examples"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/install#other-dependencies"},"@polkadot/util")," Utility\nfunctions like checking if a string is hex-encoded."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/util-crypto/"},"@polkadot/util-crypto")," Useful cryptographic utilities\nfor developing with Polkadot.")),(0,i.kt)("h3",{id:"alternative-libraries"},"Alternative Libraries"),(0,i.kt)("p",null,"The following libraries/SDKs allow for interfacing with a Substrate node in other languages:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Library by Polkascan")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go Library by Centrifuge")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/strategyobject/substrate-client-java"},"Java Library by StrategyObject")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-iOS"},"Fearless Utils iOS Swift SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nova-wallet/substrate-sdk-ios"},"Nova Wallet iOS/Swift Substrate SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-Android"},"Kotlin SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/leonardocustodio/polkadart"},"Dart/Flutter Library"))),(0,i.kt)("h3",{id:"cli-tools"},"CLI Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/api-cli"},"@polkadot/api-cli")," Command\nline interface for the polkadot API. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/api/start"},"Documentation"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/monitor-rpc"},"@polkadot/monitor-rpc")," An\nRPC monitor for Polkadot. See the RPC tools below for additional information."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/signer-cli"},"@polkadot/signer-cli")," A\nTool to construct, sign, and broadcast transactions. Signing can be done offline."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"Polkadot API Cpp")," - A \u0421++ API for Polkadot, can\nbuild ",(0,i.kt)("inlineCode",{parentName:"li"},"clip"),", a command line tool."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey")," - Command line utility\nfor generating and inspecting key pairs.")),(0,i.kt)("h3",{id:"wasm"},"WASM"),(0,i.kt)("p",null,"WebAssembly related tools and projects."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/ink/"},"ink!")," - An eDSL to write WebAssembly based smart contracts\nusing the Rust programming language."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/parity-wasm"},"parity-wasm")," - Low-level WebAssembly format library."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasm-utils"},"wasm-utils")," - Collection of WebAssembly utilities used\nin pwasm-ethereum and substrate contract development."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasmi"},"wasmi")," - A WebAssembly interpreter conceived as a component\nof parity-ethereum (Ethereum-like contracts in Wasm) and Substrate.")),(0,i.kt)("h3",{id:"rpc-and-api-tools"},"RPC and API Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/api/tree/master/packages/rpc-provider"},"@polkadot/api/rpc-provider"),"\nDemonstrates how the JS tools interact with the node over RPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/substrate/rpc"},"RPC documentation")," - Documentation of Substrate RPC\nmethods."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/polkadot_api_server"},"Polkadot API Server by SimplyVC")," - A wrapper\naround the Polkadot API which makes it easier to make Polkadot API calls from any programming\nlanguage."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/substrate-api-rpc"},"Go: Subscan API")," - Go API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++ Polkadot API")," - \u0421++ API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ajuna-network/Ajuna.SDK"},".NET Toolchain for Polkadot/Substrate API")," -\nToolchain to generate Polkadot API & Service Layer for .NET (usable in Unity)."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".NET Polkadot API")," - Polkadot Substrate API\nfor .NET."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Polkadot API")," - Polkadot library for\nPython."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client/"},"GSRPC")," - Substrate RPC client in Go,\na.k.a. GSRPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar")," - An HTTP wrapper for\nSubstrate, abstracting some complex RPC calls into simple REST calls."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-subxt"},"Subxt")," - A Rust library to submit extrinsics to a\nSubstrate node via RPC.")),(0,i.kt)("h3",{id:"scale-codec"},"SCALE Codec"),(0,i.kt)("p",null,"The SCALE (Simple Concatenated Aggregate Little-Endian) Codec is a lightweight, efficient, binary\nserialization and deserialization codec."),(0,i.kt)("p",null,"It is designed for high-performance, copy-free encoding and decoding of data in resource-constrained\nexecution contexts, such as the Substrate runtime. It is not self-describing in any way and assumes\nthe decoding context has all type knowledge about the encoded data."),(0,i.kt)("p",null,"It is used in almost all communication to/from Substrate nodes, so implementations in different\nlanguages exist:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/awesome-substrate#scale-codec"},"Substrate Awesome"),"\nmaintains a list of SCALE codex implementations.")),(0,i.kt)("h2",{id:"data-crawling-and-conversion"},"Data Crawling and Conversion"),(0,i.kt)("p",null,"The following tools help you extract and structure data from a Substrate node."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/polkascan-pre-harvester"},"Polkascan PRE Harvester"),"\n(",(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/polkascan-pre-explorer-gui"},"matching explorer for harvested data"),") -\nTransforms raw blockchain data into relational data."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-archive"},"Parity's Substrate Archive")," - Can be run\nalongside a Substrate node to archive all blocks, state, and extrinsic data into PostgreSQL\ndatabase."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/squid-archive-setup"},"Subsquid Archives")," - Generate a GraphQL database\nfrom a Substrate chain's data with rich filtering and querying capabilities. The data (events,\nextrinsics, blocks) for most parachains is readily available though public archive GraphQL\nendpoints, kept in\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/archive-registry/blob/main/archives.json"},"Squid Archive Registry")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/TheGoldenEye/polka-store"},"Polka-store")," - A tool which scans a Substrate chain\nand stores balance-relevant transactions in an SQLite database."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/playzero/substrate-graph"},"Substrate-graph")," - A compact indexer for Substrate\nbased nodes providing a GraphQL interface.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f2c21b54.0ce780c9.js b/assets/js/f2c21b54.0ce780c9.js deleted file mode 100644 index af21aaa9d8..0000000000 --- a/assets/js/f2c21b54.0ce780c9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4363],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),d=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(a),h=n,m=p["".concat(l,".").concat(h)]||p[h]||u[h]||i;return a?r.createElement(m,o(o({ref:t},c),{},{components:a})):r.createElement(m,o({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:n,o[1]=s;for(var d=2;d{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var r=a(87462),n=a(63366),i=(a(67294),a(3905)),o=["components"],s={id:"build-storage",title:"Decentralized Storage",sidebar_label:"Decentralized Storage",description:"Information about building with decentralized storage.",keywords:["build","cloud","storage"],slug:"../build-storage"},l=void 0,d={unversionedId:"build/build-storage",id:"build/build-storage",title:"Decentralized Storage",description:"Information about building with decentralized storage.",source:"@site/../docs/build/build-storage.md",sourceDirName:"build",slug:"/build-storage",permalink:"/docs/build-storage",draft:!1,tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1674478718,formattedLastUpdatedAt:"Jan 23, 2023",frontMatter:{id:"build-storage",title:"Decentralized Storage",sidebar_label:"Decentralized Storage",description:"Information about building with decentralized storage.",keywords:["build","cloud","storage"],slug:"../build-storage"},sidebar:"docs",previous:{title:"Parachain Development",permalink:"/docs/build-pdk"},next:{title:"Smart Contracts",permalink:"/docs/build-smart-contracts"}},c={},p=[{value:"DCS (Decentralized Cloud Storage)",id:"dcs-decentralized-cloud-storage",level:2},{value:"IPFS (Interplanetary File System)",id:"ipfs-interplanetary-file-system",level:3},{value:"Brief comparison of IPFS & HTTP:",id:"brief-comparison-of-ipfs--http",level:4},{value:"Crust Storage",id:"crust-storage",level:3},{value:"Filebase",id:"filebase",level:3},{value:"Using Polkadot-JS Files (IPFS) module",id:"using-polkadot-js-files-ipfs-module",level:4}],u={toc:p},h="wrapper";function m(e){var t=e.components,s=(0,n.Z)(e,o);return(0,i.kt)(h,(0,r.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Storage is an integral part of modern computer systems, and the same is true for distributed and\ndecentralized systems like a blockchain. When interacting with the\nKusama ecosystem, it will be helpful if you\nfamiliarize yourself with the current Web3 approach towards decentralized storage."),(0,i.kt)("h2",{id:"dcs-decentralized-cloud-storage"},"DCS (Decentralized Cloud Storage)"),(0,i.kt)("p",null,"The key attribute that characterizes centralized cloud storage is the location of data."),(0,i.kt)("p",null,"In decentralized cloud storage, the key attribute becomes the data itself instead of the data's\nlocation."),(0,i.kt)("p",null,"This can be viewed as the shift from the centralized ",(0,i.kt)("em",{parentName:"p"},"location-centric")," storage approach to the\ndecentralized ",(0,i.kt)("em",{parentName:"p"},"content-centric")," approach."),(0,i.kt)("h3",{id:"ipfs-interplanetary-file-system"},"IPFS (Interplanetary File System)"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://ipfs.io/"},"IPFS")," is a peer-to-peer distributed file system that seeks to connect all\ncomputing devices with the same system of files, by utilizing features such as content-addressing,\ncontent-signing, and enhanced security methods through encryption. IPFS aims to address the current\nhurdles of the HTTP-based Internet."),(0,i.kt)("h4",{id:"brief-comparison-of-ipfs--http"},"Brief comparison of IPFS & HTTP:"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"IPFS"),(0,i.kt)("th",{parentName:"tr",align:null},"HTTP"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"network: peer-to-peer model (decentralized)"),(0,i.kt)("td",{parentName:"tr",align:null},"network: client-server model (centralized)")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"requests: use a cryptographic hash of that data"),(0,i.kt)("td",{parentName:"tr",align:null},"requests: use the address on which data is hosted")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"accessibility: data is distributed to multiple nodes and can be accessed at any time. Bandwidth is high: nearest peer can serve the data"),(0,i.kt)("td",{parentName:"tr",align:null},"accessibility: data can only be accessed if the server is live and there are no interruptions in transmission. Bandwidth is limited: clients send requests to the same server")))),(0,i.kt)("h3",{id:"crust-storage"},"Crust Storage"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://crust.network"},"Crust Network")," provides a Web3.0 decentralized storage network for the\nMetaverse. It is designed to realize core values of decentralization, privacy, and assurance. Crust\nsupports multiple storage-layer protocols such as ",(0,i.kt)("a",{parentName:"p",href:"#ipfs-interplanetary-file-system"},"IPFS"),", and\nexposes instant accessible on-chain storage functions to users. Crust\u02bcs technical stack is also\ncapable of supporting data manipulating and computing."),(0,i.kt)("p",null,"Crust provides a native cross-chain communication pallet based on\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-xcm"},"XCMP"),", called\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/crustio/crust/tree/parachain/shadow/crust-collator/pallets/xstorage"},"xStorage"),"."),(0,i.kt)("p",null,"The protocol also supports most smart contract platforms, including Ethereum, with its\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/buildCrossChainSolution"},"cross-chain dStorage solution"),"."),(0,i.kt)("admonition",{title:"Learn more about Crust",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"To learn more about Crust, check out the ",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/en"},"Crust Network Wiki"),". Try\nintegrating with Crust by following their\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/build101"},"Crust Storage 101")," guide.")),(0,i.kt)("h3",{id:"filebase"},"Filebase"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://filebase.com"},"Filebase")," is the first S3-compatible object storage platform that allows you\nto store data in a secure, redundant, and performant manner across multiple decentralized storage\nnetworks."),(0,i.kt)("p",null,"Filebase offers a geo-redundant IPFS pinning service that allows you to pin files to IPFS across\nmultiple diverse geographic locations. All files uploaded to IPFS through Filebase are automatically\npinned to the Filebase infrastructure with 3x replication across the globe. This ensures that your\ndata is globally available and redundant at all times."),(0,i.kt)("p",null,"Filebase acts as an easy on-ramp to IPFS and decentralized storage by offering a user-friendly web\nconsole dashboard, making drag-and-dropping files onto Web3 simple and easy. Filebase also provides\nan S3-compatible API for widespread integrations and configurations in current workflows."),(0,i.kt)("admonition",{title:"Learn more about Filebase",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"To learn more about Filebase, check out the ",(0,i.kt)("a",{parentName:"p",href:"https://docs.filebase.com"},"Filebase Documentation"),", and\nspecifically the documentation on\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.filebase.com/web3-education/web3-tutorials/polkadot/polkadot-deploy-a-polkadot-dapp-on-decentralized-storage"},"deploying Polkadot dApp on decentralized storage."),"\nYou can get started with Filebase by signing up ",(0,i.kt)("a",{parentName:"p",href:"https://filebase.com/signup"},"here."))),(0,i.kt)("h4",{id:"using-polkadot-js-files-ipfs-module"},"Using Polkadot-JS Files (IPFS) module"),(0,i.kt)("p",null,"Polkadot-JS UI includes a decentralized storage module that allows Substrate-based chain users to\nupload their files to an\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/buildIPFSWeb3AuthGW"},"IPFS W3Auth Gateway")," and use the\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/buildIPFSW3AuthPin"},"IPFS W3Auth Pinning Service")," to pin their\nfiles on Crust Network."),(0,i.kt)("p",null,"Start by uploading a single file or folder:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"upload",src:a(8260).Z,width:"1917",height:"968"})),(0,i.kt)("p",null,"Choose a Gateway:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"gateway",src:a(47771).Z,width:"1916",height:"966"})),(0,i.kt)("p",null,"Sign the message:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"sign",src:a(4407).Z,width:"1918",height:"968"})),(0,i.kt)("p",null,"You should be able to view the file info, as follows:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"file info",src:a(81879).Z,width:"1917",height:"966"})),(0,i.kt)("p",null,"As well as the file status:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"file statue",src:a(58608).Z,width:"1916",height:"966"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"The whole files module is decentralized, so your file directory is only cached in browser. The file\ndirectory info will not be visible if you switch to a new browser or clear the browser cache. The\nstorage module allows you to export file directory info from the current browser and import it to\nthe new browser.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"manage file dir",src:a(87329).Z,width:"1917",height:"965"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"These above images are taken from this ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/pull/6106"},"pull request"))))}m.isMDXComponent=!0},8260:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-1-b911815ce2aa992118b70e76adff406a.png"},47771:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-2-b16e86055a05152fd766c6c8fb2478b3.png"},4407:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-3-6b5badf567f42956c47ce5dcd7edd78c.png"},81879:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-4-80c0cc191b4a9d3dbcd336f2413e1922.png"},58608:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-5-9906fb4cea40075a2e3eb225a9d14dd7.png"},87329:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-6-e1d84abd6cf39f3b3651ae30a33b38b5.png"}}]); \ No newline at end of file diff --git a/assets/js/f2c21b54.21375282.js b/assets/js/f2c21b54.21375282.js new file mode 100644 index 0000000000..daab4bc746 --- /dev/null +++ b/assets/js/f2c21b54.21375282.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4363],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),d=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=d(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(a),h=n,m=p["".concat(l,".").concat(h)]||p[h]||u[h]||i;return a?r.createElement(m,o(o({ref:t},c),{},{components:a})):r.createElement(m,o({ref:t},c))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:n,o[1]=s;for(var d=2;d{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var r=a(87462),n=a(63366),i=(a(67294),a(3905)),o=["components"],s={id:"build-storage",title:"Decentralized Storage",sidebar_label:"Decentralized Storage",description:"Information about building with decentralized storage.",keywords:["build","cloud","storage"],slug:"../build-storage"},l=void 0,d={unversionedId:"build/build-storage",id:"build/build-storage",title:"Decentralized Storage",description:"Information about building with decentralized storage.",source:"@site/../docs/build/build-storage.md",sourceDirName:"build",slug:"/build-storage",permalink:"/docs/build-storage",draft:!1,tags:[],version:"current",lastUpdatedBy:"Andrei Kostakov",lastUpdatedAt:1710922051,formattedLastUpdatedAt:"Mar 20, 2024",frontMatter:{id:"build-storage",title:"Decentralized Storage",sidebar_label:"Decentralized Storage",description:"Information about building with decentralized storage.",keywords:["build","cloud","storage"],slug:"../build-storage"},sidebar:"docs",previous:{title:"Parachain Development",permalink:"/docs/build-pdk"},next:{title:"Smart Contracts",permalink:"/docs/build-smart-contracts"}},c={},p=[{value:"DCS (Decentralized Cloud Storage)",id:"dcs-decentralized-cloud-storage",level:2},{value:"IPFS (Interplanetary File System)",id:"ipfs-interplanetary-file-system",level:3},{value:"Brief comparison of IPFS & HTTP:",id:"brief-comparison-of-ipfs--http",level:4},{value:"Crust Storage",id:"crust-storage",level:3},{value:"Filebase",id:"filebase",level:3},{value:"Using Polkadot-JS Files (IPFS) module",id:"using-polkadot-js-files-ipfs-module",level:4}],u={toc:p},h="wrapper";function m(e){var t=e.components,s=(0,n.Z)(e,o);return(0,i.kt)(h,(0,r.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Storage is an integral part of modern computer systems, and the same is true for distributed and\ndecentralized systems like a blockchain. When interacting with the\nKusama ecosystem, it will be helpful if you\nfamiliarize yourself with the current Web3 approach towards decentralized storage."),(0,i.kt)("h2",{id:"dcs-decentralized-cloud-storage"},"DCS (Decentralized Cloud Storage)"),(0,i.kt)("p",null,"The key attribute that characterizes centralized cloud storage is the location of data."),(0,i.kt)("p",null,"In decentralized cloud storage, the key attribute becomes the data itself instead of the data's\nlocation."),(0,i.kt)("p",null,"This can be viewed as the shift from the centralized ",(0,i.kt)("em",{parentName:"p"},"location-centric")," storage approach to the\ndecentralized ",(0,i.kt)("em",{parentName:"p"},"content-centric")," approach."),(0,i.kt)("h3",{id:"ipfs-interplanetary-file-system"},"IPFS (Interplanetary File System)"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://ipfs.tech/"},"IPFS")," is a peer-to-peer distributed file system that seeks to connect all\ncomputing devices with the same system of files, by utilizing features such as content-addressing,\ncontent-signing, and enhanced security methods through encryption. IPFS aims to address the current\nhurdles of the HTTP-based Internet."),(0,i.kt)("h4",{id:"brief-comparison-of-ipfs--http"},"Brief comparison of IPFS & HTTP:"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"IPFS"),(0,i.kt)("th",{parentName:"tr",align:null},"HTTP"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"network: peer-to-peer model (decentralized)"),(0,i.kt)("td",{parentName:"tr",align:null},"network: client-server model (centralized)")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"requests: use a cryptographic hash of that data"),(0,i.kt)("td",{parentName:"tr",align:null},"requests: use the address on which data is hosted")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"accessibility: data is distributed to multiple nodes and can be accessed at any time. Bandwidth is high: nearest peer can serve the data"),(0,i.kt)("td",{parentName:"tr",align:null},"accessibility: data can only be accessed if the server is live and there are no interruptions in transmission. Bandwidth is limited: clients send requests to the same server")))),(0,i.kt)("h3",{id:"crust-storage"},"Crust Storage"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://crust.network"},"Crust Network")," provides a Web3.0 decentralized storage network for the\nMetaverse. It is designed to realize core values of decentralization, privacy, and assurance. Crust\nsupports multiple storage-layer protocols such as ",(0,i.kt)("a",{parentName:"p",href:"#ipfs-interplanetary-file-system"},"IPFS"),", and\nexposes instant accessible on-chain storage functions to users. Crust\u02bcs technical stack is also\ncapable of supporting data manipulating and computing."),(0,i.kt)("p",null,"Crust provides a native cross-chain communication pallet based on\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-xcm"},"XCMP"),", called\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/crustio/crust/tree/parachain/shadow/crust-collator/pallets/xstorage"},"xStorage"),"."),(0,i.kt)("p",null,"The protocol also supports most smart contract platforms, including Ethereum, with its\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/buildCrossChainSolution"},"cross-chain dStorage solution"),"."),(0,i.kt)("admonition",{title:"Learn more about Crust",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"To learn more about Crust, check out the ",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/en"},"Crust Network Wiki"),". Try\nintegrating with Crust by following their\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/build101"},"Crust Storage 101")," guide.")),(0,i.kt)("h3",{id:"filebase"},"Filebase"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://filebase.com"},"Filebase")," is the first S3-compatible object storage platform that allows you\nto store data in a secure, redundant, and performant manner across multiple decentralized storage\nnetworks."),(0,i.kt)("p",null,"Filebase offers a geo-redundant IPFS pinning service that allows you to pin files to IPFS across\nmultiple diverse geographic locations. All files uploaded to IPFS through Filebase are automatically\npinned to the Filebase infrastructure with 3x replication across the globe. This ensures that your\ndata is globally available and redundant at all times."),(0,i.kt)("p",null,"Filebase acts as an easy on-ramp to IPFS and decentralized storage by offering a user-friendly web\nconsole dashboard, making drag-and-dropping files onto Web3 simple and easy. Filebase also provides\nan S3-compatible API for widespread integrations and configurations in current workflows."),(0,i.kt)("admonition",{title:"Learn more about Filebase",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"To learn more about Filebase, check out the ",(0,i.kt)("a",{parentName:"p",href:"https://docs.filebase.com"},"Filebase Documentation"),", and\nspecifically the documentation on\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.filebase.com/web3-education/web3-tutorials/polkadot/polkadot-deploy-a-polkadot-dapp-on-decentralized-storage"},"deploying Polkadot dApp on decentralized storage."),"\nYou can get started with Filebase by signing up ",(0,i.kt)("a",{parentName:"p",href:"https://filebase.com/signup"},"here."))),(0,i.kt)("h4",{id:"using-polkadot-js-files-ipfs-module"},"Using Polkadot-JS Files (IPFS) module"),(0,i.kt)("p",null,"Polkadot-JS UI includes a decentralized storage module that allows Substrate-based chain users to\nupload their files to an\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/buildIPFSWeb3AuthGW"},"IPFS W3Auth Gateway")," and use the\n",(0,i.kt)("a",{parentName:"p",href:"https://wiki.crust.network/docs/en/buildIPFSW3AuthPin"},"IPFS W3Auth Pinning Service")," to pin their\nfiles on Crust Network."),(0,i.kt)("p",null,"Start by uploading a single file or folder:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"upload",src:a(8260).Z,width:"1917",height:"968"})),(0,i.kt)("p",null,"Choose a Gateway:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"gateway",src:a(47771).Z,width:"1916",height:"966"})),(0,i.kt)("p",null,"Sign the message:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"sign",src:a(4407).Z,width:"1918",height:"968"})),(0,i.kt)("p",null,"You should be able to view the file info, as follows:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"file info",src:a(81879).Z,width:"1917",height:"966"})),(0,i.kt)("p",null,"As well as the file status:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"file statue",src:a(58608).Z,width:"1916",height:"966"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"The whole files module is decentralized, so your file directory is only cached in browser. The file\ndirectory info will not be visible if you switch to a new browser or clear the browser cache. The\nstorage module allows you to export file directory info from the current browser and import it to\nthe new browser.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"manage file dir",src:a(87329).Z,width:"1917",height:"965"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"These above images are taken from this ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/pull/6106"},"pull request"))))}m.isMDXComponent=!0},8260:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-1-b911815ce2aa992118b70e76adff406a.png"},47771:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-2-b16e86055a05152fd766c6c8fb2478b3.png"},4407:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-3-6b5badf567f42956c47ce5dcd7edd78c.png"},81879:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-4-80c0cc191b4a9d3dbcd336f2413e1922.png"},58608:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-5-9906fb4cea40075a2e3eb225a9d14dd7.png"},87329:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/substrate-files-6-e1d84abd6cf39f3b3651ae30a33b38b5.png"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.89780907.js b/assets/js/runtime~main.03a98c4b.js similarity index 97% rename from assets/js/runtime~main.89780907.js rename to assets/js/runtime~main.03a98c4b.js index 4c752ec0ef..ec629eb560 100644 --- a/assets/js/runtime~main.89780907.js +++ b/assets/js/runtime~main.03a98c4b.js @@ -1 +1 @@ -(()=>{"use strict";var e,f,c,d,b={},a={};function r(e){var f=a[e];if(void 0!==f)return f.exports;var c=a[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=a,e=[],r.O=(f,c,d,b)=>{if(!c){var a=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,d,b]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var a={};f=f||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~f.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((f=>a[f]=()=>e[f]));return a.default=()=>e,r.d(b,a),b},r.d=(e,f)=>{for(var c in f)r.o(f,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:f[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,c)=>(r.f[c](e,f),f)),[])),r.u=e=>"assets/js/"+({1:"f4fb6e9c",6:"408829bd",12:"1d6d4797",43:"74985360",53:"935f2afb",63:"9f319605",150:"77c23c97",192:"f189ca9f",217:"c7a044bb",315:"9528ac88",502:"2d429218",537:"3829cf1d",576:"f52abf29",609:"d569989b",657:"386bfe51",691:"145746f5",740:"078895e8",779:"49dac903",810:"23498fd5",1062:"f90fa732",1083:"899aadcc",1090:"cfd53ea4",1125:"3184af97",1211:"73c3bebc",1213:"25f2bd2a",1239:"f359a251",1288:"fabebe44",1299:"74df6a22",1372:"b61f6dc7",1415:"4d76887f",1419:"f750c690",1446:"5136ee31",1451:"f44679e7",1486:"8dd7cee0",1494:"b21dd8a7",1506:"c977dfe8",1529:"ffe9c3c9",1585:"33b0bcab",1598:"7fbac68a",1635:"5db34cd0",1678:"fa343ad1",1686:"f7191335",1703:"a5002e4a",1723:"0df78d26",1748:"987d08ef",1774:"9e6341e5",1786:"d9ef69a7",1804:"0e306820",1825:"48074a08",1872:"78e1e977",1953:"1ed3671a",1957:"df154d69",1966:"f47489cd",1979:"0cb62240",2008:"4f031749",2042:"dd32e389",2078:"84f79495",2117:"21877fa5",2119:"6d5c9a28",2136:"ecb495b7",2169:"1646726c",2194:"6151e7ce",2242:"f3027c84",2248:"da9f79cb",2354:"493c7fdf",2399:"8d3a1bf8",2433:"69253974",2507:"7c78c461",2508:"918b38b6",2552:"863c4753",2581:"967fa6d4",2609:"db0b42b0",2633:"e2e89062",2635:"0b632434",2664:"9662c81e",2665:"f4130007",2677:"ece9fdae",2704:"f3bde756",2710:"39c15ff8",2712:"c2c6a3a6",2749:"b906f375",2754:"78868b16",2758:"9e3f6a8a",2884:"5d69d9d4",2909:"f4200fe5",2914:"2be0d940",2949:"2ea50c63",3029:"6544ec02",3066:"af40287e",3091:"b0a48d97",3132:"85afe03a",3262:"8a8a7d05",3274:"41f7224c",3330:"e31fc461",3332:"3497b7c6",3356:"f14351c1",3452:"3d1bf5db",3484:"5c90fc9b",3513:"41b7b3e8",3554:"d5909206",3599:"21899dd2",3620:"f137ce68",3643:"cb9afd28",3665:"f1585bfb",3667:"b0cbc1d4",3668:"b225a2ce",3669:"dbbd9e76",3757:"bea375d6",3842:"ff6596ea",3933:"cda87995",3945:"f8518919",3978:"c8dd560b",4004:"ec3b6a32",4097:"eef3f1dd",4105:"702d5d94",4126:"5355b952",4143:"9f804621",4195:"c4f5d8e4",4338:"84ede15a",4355:"19ed4d4c",4359:"dc36d550",4363:"f2c21b54",4379:"c662f00a",4445:"4d9b9869",4507:"a7b37b86",4537:"1ae2b102",4541:"3e56470e",4566:"694e7470",4577:"9ebc4c9a",4620:"48d75399",4634:"54338ffb",4666:"f41c4e9d",4672:"43ee4f22",4674:"fea93377",4860:"346ef9e6",4885:"2462cc91",4909:"f0855ff9",4916:"c1bbdb2a",5005:"320c8a05",5013:"c41801b5",5103:"db039c7f",5157:"d27ae88d",5281:"31bd35e0",5341:"9913464d",5422:"b3719d54",5483:"f7acb151",5526:"0c68fb82",5548:"d6b0148d",5651:"9e2042f5",5704:"b9b4ec9e",5752:"73a7060c",5989:"fbf58567",6104:"c7c5ba1a",6110:"b9c2850c",6140:"32e8da05",6253:"a29dc56e",6255:"452ad91d",6277:"a62d9768",6294:"bbba852d",6312:"dbc4065c",6325:"3002ebf4",6357:"43cda9e8",6373:"ceaa29cb",6585:"13b7bafa",6598:"ca9fe671",6673:"af3013e9",6687:"bf789d83",6689:"f2521980",6730:"73617284",6827:"279fb1d6",6920:"ccc1222e",6946:"4642ab5c",7022:"543610b9",7061:"feea648c",7202:"4a8eb552",7211:"f44ed8f8",7288:"6f1a81b8",7313:"db3d6c4d",7368:"bb8b1738",7388:"bd701914",7466:"a5b3561d",7584:"98a431f4",7633:"b940de31",7654:"c07c2447",7683:"cc44e8fd",7714:"591eca19",7717:"43267d13",7745:"9129da9e",7799:"8b670b2b",7823:"9e76b49d",7830:"15985664",7837:"0a3f0c9b",7858:"d6a97e7e",7903:"03dc8648",7908:"33bbe353",7918:"17896441",7920:"1a4e3797",7940:"ad762f86",7961:"a2800a5b",8034:"fecdcc34",8067:"69b97ecd",8115:"8247eba8",8138:"694672cd",8139:"386099fc",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",8648:"71ed82b9",8702:"a74a59a0",8757:"83d4859f",8791:"ab138bf8",8831:"3bd77df4",8855:"d3a753cf",8860:"766a10e1",8866:"98a30fd8",8876:"31c99aa1",8887:"a4ac0905",8901:"b48c599b",8950:"4cdd7dfa",8951:"e495ca4d",9062:"b38833d4",9071:"60738e36",9217:"64c7e1cc",9226:"2f3b630e",9315:"6d2ffbf3",9323:"131c7f55",9478:"c7a2145e",9514:"1be78505",9548:"f95cee6f",9596:"390ca211",9626:"32c9742a",9764:"dc776cbc",9771:"89a76fd2",9802:"1e15616a",9806:"51fbc2c9",9817:"14eb3368",9856:"06597bc8",9905:"b0cb055f",9964:"050c0163",9977:"3104d5d8",9993:"482bfb5c"}[e]||e)+"."+{1:"7982c32a",6:"db131571",12:"739fb3e6",43:"ec615290",53:"55d00d9c",63:"177a619b",150:"4efcadd8",192:"890d0637",217:"d820e3b8",315:"ae1b1c2c",502:"38f6d938",537:"cd865501",576:"b6d8d8a7",609:"778916fd",657:"697635de",691:"ec9e755b",740:"39312c74",779:"355a312e",810:"1c7adf5f",1062:"5680eae3",1083:"83ff7dc0",1090:"925d00c8",1125:"4e55558d",1211:"8f5a0e7c",1213:"eba85fea",1239:"317a5f0b",1288:"0277d206",1299:"c961e5f6",1372:"f88587f7",1415:"9e1bf21b",1419:"c2242db3",1426:"ad86846c",1446:"537a7011",1451:"a00e99c3",1486:"0fb92bf0",1494:"efa4db16",1506:"179fd968",1529:"5d874bb3",1585:"aabb2412",1598:"4023b7a2",1635:"ed993afa",1678:"69169b5c",1686:"56d8ba25",1703:"88cd0fc9",1723:"963f4038",1748:"5354ab25",1774:"1d252aa1",1786:"f4772110",1804:"281549bf",1825:"50dfa91e",1872:"fa609304",1953:"2e3d0d61",1957:"c425e484",1966:"9190a82c",1979:"3ba15e56",2008:"eaf5a185",2042:"137e0856",2078:"9bd34e93",2117:"99df6fd7",2119:"8dc56a3b",2136:"cf18d27f",2169:"16b19a4d",2194:"cd77ae02",2242:"d2f05e7b",2248:"b64053f7",2354:"6af8c2ea",2399:"1f5bef69",2433:"62773624",2507:"1e71ce54",2508:"8ac09295",2552:"54fedfee",2581:"73f32917",2609:"e3c6effc",2633:"426c6a8b",2635:"52e500d9",2664:"a4b13d00",2665:"59ecbd82",2677:"17751f2f",2704:"9db3903d",2710:"677ef81c",2712:"1d4fd567",2749:"bac76265",2754:"e156064d",2758:"1d952cbe",2884:"21726cd8",2909:"fabc1942",2914:"394325ac",2949:"fc813138",3029:"f03d8377",3066:"5970dc95",3091:"e6bc7ff9",3132:"9677a60a",3262:"46e9b069",3274:"a78f8bd4",3330:"c37cc5ff",3332:"d83fa2b7",3356:"2952a029",3452:"a2082f96",3484:"f792a1e0",3513:"23f2331f",3554:"4ccbc70d",3599:"d7da3f06",3620:"ba1bbee3",3643:"c1492d58",3665:"3902845f",3667:"d58fda25",3668:"2c261bbe",3669:"41fca140",3757:"792dbaf0",3842:"dcef5f99",3933:"f07505e8",3945:"92455322",3978:"b2f0f3ca",4004:"bb42c22a",4097:"476f6017",4105:"0b1d1a99",4126:"e90ed5e4",4143:"499deefa",4195:"4e25db6e",4338:"f1993e47",4355:"1de981fc",4359:"56de6ca3",4363:"0ce780c9",4379:"16da8264",4445:"60315f15",4507:"55820043",4537:"c7c73f62",4541:"4baf9fbc",4566:"0a7a2bee",4577:"e82df813",4620:"85e4bac4",4634:"fd8f2ebc",4666:"c52d88fc",4672:"83785d9d",4674:"a7a1a876",4860:"dbd9de91",4885:"187f9427",4909:"4468613e",4916:"eb5c454a",4972:"d0d52519",5005:"af765b0a",5013:"579b2499",5103:"de0e23a2",5157:"4f6c9b14",5281:"3d11be7e",5341:"d8f89a9e",5422:"6b8bc818",5483:"2dab063d",5526:"4a438686",5548:"7421f820",5651:"4f7cd882",5704:"829b1bb8",5752:"38df19bb",5989:"8b2a2c52",6104:"162d7c79",6110:"4deacb5a",6140:"92819f4f",6253:"15d1fb50",6255:"a12eb1f8",6277:"22f597f8",6294:"496ade5b",6312:"c07951cd",6325:"92f9be19",6357:"9f828a6e",6373:"4ce1f349",6495:"eaf3e767",6585:"e72e41f0",6598:"7d9e32d1",6673:"4c49fbbe",6687:"0af7f5a5",6689:"f1ec4254",6730:"a31bc465",6827:"bf88191b",6920:"2bc48bce",6945:"96d36007",6946:"b1e19c46",7022:"164cc371",7061:"6dd39672",7202:"e7c35cc9",7211:"43a1db3c",7288:"96dd02a0",7313:"3724451a",7368:"9cbee3a6",7388:"1e5284b3",7466:"0c21b184",7584:"dce5d342",7633:"0ec56596",7654:"8b677046",7683:"26c41f21",7714:"5fc8c782",7717:"91577106",7745:"946d7ac7",7799:"785207b5",7823:"9713f578",7830:"63aa0216",7837:"50aeb258",7858:"38d5fff3",7903:"7c27540e",7908:"af891d40",7918:"71aebea3",7920:"71c37020",7940:"617415b1",7961:"94328495",8034:"7bf67fbd",8047:"ce7a90ea",8067:"8e22b0e3",8115:"8165c202",8138:"b58cb3be",8139:"d8f8fc6c",8178:"b0a99af1",8191:"c3bcde65",8215:"aae5ed82",8236:"da96a02f",8270:"06411900",8355:"6cc92c25",8361:"cda72e1e",8444:"36a1a7b7",8493:"9f6444b5",8609:"b0e14774",8648:"b8c3d096",8702:"b4f3a8f0",8757:"d5b3e8a3",8791:"7d6db575",8831:"5442882d",8855:"0b2d0c1d",8860:"5c0ca221",8866:"7ec2dc84",8876:"abc30cce",8887:"0d737435",8894:"ba661129",8901:"3e914279",8950:"fdf0595f",8951:"75a1fda0",9062:"0b3c9b35",9071:"8012ad4c",9217:"c330134f",9226:"9fd84eaa",9315:"151559ba",9323:"314e3357",9478:"14b31231",9514:"5d553167",9548:"7ddd5b5a",9596:"59fafabb",9626:"2dadbb25",9764:"5757c115",9771:"0f6ca87f",9802:"e08e9183",9806:"54c2c043",9817:"5ba13cdf",9856:"231c1c2e",9905:"2cba576e",9964:"2762c242",9977:"f45b2d88",9993:"e037a0d9"}[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,f)=>Object.prototype.hasOwnProperty.call(e,f),d={},r.l=(e,f,c,b)=>{if(d[e])d[e].push(f);else{var a,t;if(void 0!==c)for(var o=document.getElementsByTagName("script"),n=0;n{a.onerror=a.onload=null,clearTimeout(u);var b=d[e];if(delete d[e],a.parentNode&&a.parentNode.removeChild(a),b&&b.forEach((e=>e(c))),f)return f(c)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),t&&document.head.appendChild(a)}},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",69253974:"2433",73617284:"6730",74985360:"43",f4fb6e9c:"1","408829bd":"6","1d6d4797":"12","935f2afb":"53","9f319605":"63","77c23c97":"150",f189ca9f:"192",c7a044bb:"217","9528ac88":"315","2d429218":"502","3829cf1d":"537",f52abf29:"576",d569989b:"609","386bfe51":"657","145746f5":"691","078895e8":"740","49dac903":"779","23498fd5":"810",f90fa732:"1062","899aadcc":"1083",cfd53ea4:"1090","3184af97":"1125","73c3bebc":"1211","25f2bd2a":"1213",f359a251:"1239",fabebe44:"1288","74df6a22":"1299",b61f6dc7:"1372","4d76887f":"1415",f750c690:"1419","5136ee31":"1446",f44679e7:"1451","8dd7cee0":"1486",b21dd8a7:"1494",c977dfe8:"1506",ffe9c3c9:"1529","33b0bcab":"1585","7fbac68a":"1598","5db34cd0":"1635",fa343ad1:"1678",f7191335:"1686",a5002e4a:"1703","0df78d26":"1723","987d08ef":"1748","9e6341e5":"1774",d9ef69a7:"1786","0e306820":"1804","48074a08":"1825","78e1e977":"1872","1ed3671a":"1953",df154d69:"1957",f47489cd:"1966","0cb62240":"1979","4f031749":"2008",dd32e389:"2042","84f79495":"2078","21877fa5":"2117","6d5c9a28":"2119",ecb495b7:"2136","1646726c":"2169","6151e7ce":"2194",f3027c84:"2242",da9f79cb:"2248","493c7fdf":"2354","8d3a1bf8":"2399","7c78c461":"2507","918b38b6":"2508","863c4753":"2552","967fa6d4":"2581",db0b42b0:"2609",e2e89062:"2633","0b632434":"2635","9662c81e":"2664",f4130007:"2665",ece9fdae:"2677",f3bde756:"2704","39c15ff8":"2710",c2c6a3a6:"2712",b906f375:"2749","78868b16":"2754","9e3f6a8a":"2758","5d69d9d4":"2884",f4200fe5:"2909","2be0d940":"2914","2ea50c63":"2949","6544ec02":"3029",af40287e:"3066",b0a48d97:"3091","85afe03a":"3132","8a8a7d05":"3262","41f7224c":"3274",e31fc461:"3330","3497b7c6":"3332",f14351c1:"3356","3d1bf5db":"3452","5c90fc9b":"3484","41b7b3e8":"3513",d5909206:"3554","21899dd2":"3599",f137ce68:"3620",cb9afd28:"3643",f1585bfb:"3665",b0cbc1d4:"3667",b225a2ce:"3668",dbbd9e76:"3669",bea375d6:"3757",ff6596ea:"3842",cda87995:"3933",f8518919:"3945",c8dd560b:"3978",ec3b6a32:"4004",eef3f1dd:"4097","702d5d94":"4105","5355b952":"4126","9f804621":"4143",c4f5d8e4:"4195","84ede15a":"4338","19ed4d4c":"4355",dc36d550:"4359",f2c21b54:"4363",c662f00a:"4379","4d9b9869":"4445",a7b37b86:"4507","1ae2b102":"4537","3e56470e":"4541","694e7470":"4566","9ebc4c9a":"4577","48d75399":"4620","54338ffb":"4634",f41c4e9d:"4666","43ee4f22":"4672",fea93377:"4674","346ef9e6":"4860","2462cc91":"4885",f0855ff9:"4909",c1bbdb2a:"4916","320c8a05":"5005",c41801b5:"5013",db039c7f:"5103",d27ae88d:"5157","31bd35e0":"5281","9913464d":"5341",b3719d54:"5422",f7acb151:"5483","0c68fb82":"5526",d6b0148d:"5548","9e2042f5":"5651",b9b4ec9e:"5704","73a7060c":"5752",fbf58567:"5989",c7c5ba1a:"6104",b9c2850c:"6110","32e8da05":"6140",a29dc56e:"6253","452ad91d":"6255",a62d9768:"6277",bbba852d:"6294",dbc4065c:"6312","3002ebf4":"6325","43cda9e8":"6357",ceaa29cb:"6373","13b7bafa":"6585",ca9fe671:"6598",af3013e9:"6673",bf789d83:"6687",f2521980:"6689","279fb1d6":"6827",ccc1222e:"6920","4642ab5c":"6946","543610b9":"7022",feea648c:"7061","4a8eb552":"7202",f44ed8f8:"7211","6f1a81b8":"7288",db3d6c4d:"7313",bb8b1738:"7368",bd701914:"7388",a5b3561d:"7466","98a431f4":"7584",b940de31:"7633",c07c2447:"7654",cc44e8fd:"7683","591eca19":"7714","43267d13":"7717","9129da9e":"7745","8b670b2b":"7799","9e76b49d":"7823","0a3f0c9b":"7837",d6a97e7e:"7858","03dc8648":"7903","33bbe353":"7908","1a4e3797":"7920",ad762f86:"7940",a2800a5b:"7961",fecdcc34:"8034","69b97ecd":"8067","8247eba8":"8115","694672cd":"8138","386099fc":"8139","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609","71ed82b9":"8648",a74a59a0:"8702","83d4859f":"8757",ab138bf8:"8791","3bd77df4":"8831",d3a753cf:"8855","766a10e1":"8860","98a30fd8":"8866","31c99aa1":"8876",a4ac0905:"8887",b48c599b:"8901","4cdd7dfa":"8950",e495ca4d:"8951",b38833d4:"9062","60738e36":"9071","64c7e1cc":"9217","2f3b630e":"9226","6d2ffbf3":"9315","131c7f55":"9323",c7a2145e:"9478","1be78505":"9514",f95cee6f:"9548","390ca211":"9596","32c9742a":"9626",dc776cbc:"9764","89a76fd2":"9771","1e15616a":"9802","51fbc2c9":"9806","14eb3368":"9817","06597bc8":"9856",b0cb055f:"9905","050c0163":"9964","3104d5d8":"9977","482bfb5c":"9993"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(f,c)=>{var d=r.o(e,f)?e[f]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var b=new Promise(((c,b)=>d=e[f]=[c,b]));c.push(d[2]=b);var a=r.p+r.u(f),t=new Error;r.l(a,(c=>{if(r.o(e,f)&&(0!==(d=e[f])&&(e[f]=void 0),d)){var b=c&&("load"===c.type?"missing":c.type),a=c&&c.target&&c.target.src;t.message="Loading chunk "+f+" failed.\n("+b+": "+a+")",t.name="ChunkLoadError",t.type=b,t.request=a,d[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,c)=>{var d,b,[a,t,o]=c,n=0;if(a.some((f=>0!==e[f]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(f&&f(c);n{"use strict";var e,f,c,d,b={},a={};function r(e){var f=a[e];if(void 0!==f)return f.exports;var c=a[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=a,e=[],r.O=(f,c,d,b)=>{if(!c){var a=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,d,b]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var a={};f=f||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~f.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((f=>a[f]=()=>e[f]));return a.default=()=>e,r.d(b,a),b},r.d=(e,f)=>{for(var c in f)r.o(f,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:f[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,c)=>(r.f[c](e,f),f)),[])),r.u=e=>"assets/js/"+({1:"f4fb6e9c",6:"408829bd",12:"1d6d4797",43:"74985360",53:"935f2afb",63:"9f319605",150:"77c23c97",192:"f189ca9f",217:"c7a044bb",315:"9528ac88",502:"2d429218",537:"3829cf1d",576:"f52abf29",609:"d569989b",657:"386bfe51",691:"145746f5",740:"078895e8",779:"49dac903",810:"23498fd5",1062:"f90fa732",1083:"899aadcc",1090:"cfd53ea4",1125:"3184af97",1211:"73c3bebc",1213:"25f2bd2a",1239:"f359a251",1288:"fabebe44",1299:"74df6a22",1372:"b61f6dc7",1415:"4d76887f",1419:"f750c690",1446:"5136ee31",1451:"f44679e7",1486:"8dd7cee0",1494:"b21dd8a7",1506:"c977dfe8",1529:"ffe9c3c9",1585:"33b0bcab",1598:"7fbac68a",1635:"5db34cd0",1678:"fa343ad1",1686:"f7191335",1703:"a5002e4a",1723:"0df78d26",1748:"987d08ef",1774:"9e6341e5",1786:"d9ef69a7",1804:"0e306820",1825:"48074a08",1872:"78e1e977",1953:"1ed3671a",1957:"df154d69",1966:"f47489cd",1979:"0cb62240",2008:"4f031749",2042:"dd32e389",2078:"84f79495",2117:"21877fa5",2119:"6d5c9a28",2136:"ecb495b7",2169:"1646726c",2194:"6151e7ce",2242:"f3027c84",2248:"da9f79cb",2354:"493c7fdf",2399:"8d3a1bf8",2433:"69253974",2507:"7c78c461",2508:"918b38b6",2552:"863c4753",2581:"967fa6d4",2609:"db0b42b0",2633:"e2e89062",2635:"0b632434",2664:"9662c81e",2665:"f4130007",2677:"ece9fdae",2704:"f3bde756",2710:"39c15ff8",2712:"c2c6a3a6",2749:"b906f375",2754:"78868b16",2758:"9e3f6a8a",2884:"5d69d9d4",2909:"f4200fe5",2914:"2be0d940",2949:"2ea50c63",3029:"6544ec02",3066:"af40287e",3091:"b0a48d97",3132:"85afe03a",3262:"8a8a7d05",3274:"41f7224c",3330:"e31fc461",3332:"3497b7c6",3356:"f14351c1",3452:"3d1bf5db",3484:"5c90fc9b",3513:"41b7b3e8",3554:"d5909206",3599:"21899dd2",3620:"f137ce68",3643:"cb9afd28",3665:"f1585bfb",3667:"b0cbc1d4",3668:"b225a2ce",3669:"dbbd9e76",3757:"bea375d6",3842:"ff6596ea",3933:"cda87995",3945:"f8518919",3978:"c8dd560b",4004:"ec3b6a32",4097:"eef3f1dd",4105:"702d5d94",4126:"5355b952",4143:"9f804621",4195:"c4f5d8e4",4338:"84ede15a",4355:"19ed4d4c",4359:"dc36d550",4363:"f2c21b54",4379:"c662f00a",4445:"4d9b9869",4507:"a7b37b86",4537:"1ae2b102",4541:"3e56470e",4566:"694e7470",4577:"9ebc4c9a",4620:"48d75399",4634:"54338ffb",4666:"f41c4e9d",4672:"43ee4f22",4674:"fea93377",4860:"346ef9e6",4885:"2462cc91",4909:"f0855ff9",4916:"c1bbdb2a",5005:"320c8a05",5013:"c41801b5",5103:"db039c7f",5157:"d27ae88d",5281:"31bd35e0",5341:"9913464d",5422:"b3719d54",5483:"f7acb151",5526:"0c68fb82",5548:"d6b0148d",5651:"9e2042f5",5704:"b9b4ec9e",5752:"73a7060c",5989:"fbf58567",6104:"c7c5ba1a",6110:"b9c2850c",6140:"32e8da05",6253:"a29dc56e",6255:"452ad91d",6277:"a62d9768",6294:"bbba852d",6312:"dbc4065c",6325:"3002ebf4",6357:"43cda9e8",6373:"ceaa29cb",6585:"13b7bafa",6598:"ca9fe671",6673:"af3013e9",6687:"bf789d83",6689:"f2521980",6730:"73617284",6827:"279fb1d6",6920:"ccc1222e",6946:"4642ab5c",7022:"543610b9",7061:"feea648c",7202:"4a8eb552",7211:"f44ed8f8",7288:"6f1a81b8",7313:"db3d6c4d",7368:"bb8b1738",7388:"bd701914",7466:"a5b3561d",7584:"98a431f4",7633:"b940de31",7654:"c07c2447",7683:"cc44e8fd",7714:"591eca19",7717:"43267d13",7745:"9129da9e",7799:"8b670b2b",7823:"9e76b49d",7830:"15985664",7837:"0a3f0c9b",7858:"d6a97e7e",7903:"03dc8648",7908:"33bbe353",7918:"17896441",7920:"1a4e3797",7940:"ad762f86",7961:"a2800a5b",8034:"fecdcc34",8067:"69b97ecd",8115:"8247eba8",8138:"694672cd",8139:"386099fc",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",8648:"71ed82b9",8702:"a74a59a0",8757:"83d4859f",8791:"ab138bf8",8831:"3bd77df4",8855:"d3a753cf",8860:"766a10e1",8866:"98a30fd8",8876:"31c99aa1",8887:"a4ac0905",8901:"b48c599b",8950:"4cdd7dfa",8951:"e495ca4d",9062:"b38833d4",9071:"60738e36",9217:"64c7e1cc",9226:"2f3b630e",9315:"6d2ffbf3",9323:"131c7f55",9478:"c7a2145e",9514:"1be78505",9548:"f95cee6f",9596:"390ca211",9626:"32c9742a",9764:"dc776cbc",9771:"89a76fd2",9802:"1e15616a",9806:"51fbc2c9",9817:"14eb3368",9856:"06597bc8",9905:"b0cb055f",9964:"050c0163",9977:"3104d5d8",9993:"482bfb5c"}[e]||e)+"."+{1:"7982c32a",6:"db131571",12:"739fb3e6",43:"ec615290",53:"55d00d9c",63:"177a619b",150:"4efcadd8",192:"890d0637",217:"d820e3b8",315:"ae1b1c2c",502:"38f6d938",537:"cd865501",576:"b6d8d8a7",609:"778916fd",657:"697635de",691:"ec9e755b",740:"39312c74",779:"355a312e",810:"3b8a29f6",1062:"5680eae3",1083:"83ff7dc0",1090:"925d00c8",1125:"4e55558d",1211:"8f5a0e7c",1213:"eba85fea",1239:"317a5f0b",1288:"0277d206",1299:"c961e5f6",1372:"f88587f7",1415:"9e1bf21b",1419:"c2242db3",1426:"ad86846c",1446:"537a7011",1451:"a00e99c3",1486:"0fb92bf0",1494:"efa4db16",1506:"179fd968",1529:"5d874bb3",1585:"aabb2412",1598:"4023b7a2",1635:"ed993afa",1678:"69169b5c",1686:"56d8ba25",1703:"88cd0fc9",1723:"963f4038",1748:"5354ab25",1774:"1d252aa1",1786:"f4772110",1804:"281549bf",1825:"50dfa91e",1872:"fa609304",1953:"2e3d0d61",1957:"c425e484",1966:"9190a82c",1979:"3ba15e56",2008:"eaf5a185",2042:"137e0856",2078:"9bd34e93",2117:"99df6fd7",2119:"8dc56a3b",2136:"cf18d27f",2169:"16b19a4d",2194:"cd77ae02",2242:"d2f05e7b",2248:"b64053f7",2354:"6af8c2ea",2399:"1f5bef69",2433:"62773624",2507:"1e71ce54",2508:"8ac09295",2552:"54fedfee",2581:"73f32917",2609:"e3c6effc",2633:"426c6a8b",2635:"52e500d9",2664:"a4b13d00",2665:"59ecbd82",2677:"17751f2f",2704:"9db3903d",2710:"677ef81c",2712:"1d4fd567",2749:"bac76265",2754:"e156064d",2758:"1d952cbe",2884:"21726cd8",2909:"fabc1942",2914:"394325ac",2949:"fc813138",3029:"f03d8377",3066:"5970dc95",3091:"e6bc7ff9",3132:"9677a60a",3262:"46e9b069",3274:"a78f8bd4",3330:"c37cc5ff",3332:"d83fa2b7",3356:"2952a029",3452:"a2082f96",3484:"f792a1e0",3513:"23f2331f",3554:"4ccbc70d",3599:"d7da3f06",3620:"ba1bbee3",3643:"c1492d58",3665:"3902845f",3667:"d58fda25",3668:"2c261bbe",3669:"41fca140",3757:"792dbaf0",3842:"dcef5f99",3933:"19405962",3945:"92455322",3978:"b2f0f3ca",4004:"bb42c22a",4097:"476f6017",4105:"0b1d1a99",4126:"e90ed5e4",4143:"499deefa",4195:"4e25db6e",4338:"f1993e47",4355:"1de981fc",4359:"56de6ca3",4363:"21375282",4379:"16da8264",4445:"60315f15",4507:"55820043",4537:"c7c73f62",4541:"4baf9fbc",4566:"0a7a2bee",4577:"e82df813",4620:"4501bc70",4634:"fd8f2ebc",4666:"c52d88fc",4672:"83785d9d",4674:"a7a1a876",4860:"dbd9de91",4885:"187f9427",4909:"4468613e",4916:"eb5c454a",4972:"d0d52519",5005:"af765b0a",5013:"579b2499",5103:"de0e23a2",5157:"4f6c9b14",5281:"3d11be7e",5341:"d8f89a9e",5422:"6b8bc818",5483:"2dab063d",5526:"4a438686",5548:"7421f820",5651:"4f7cd882",5704:"829b1bb8",5752:"38df19bb",5989:"8b2a2c52",6104:"162d7c79",6110:"4deacb5a",6140:"92819f4f",6253:"15d1fb50",6255:"a12eb1f8",6277:"22f597f8",6294:"496ade5b",6312:"c07951cd",6325:"92f9be19",6357:"9f828a6e",6373:"4ce1f349",6495:"eaf3e767",6585:"e72e41f0",6598:"7d9e32d1",6673:"4c49fbbe",6687:"0af7f5a5",6689:"f1ec4254",6730:"a31bc465",6827:"bf88191b",6920:"2bc48bce",6945:"96d36007",6946:"b1e19c46",7022:"164cc371",7061:"6dd39672",7202:"e7c35cc9",7211:"43a1db3c",7288:"96dd02a0",7313:"3724451a",7368:"9cbee3a6",7388:"1e5284b3",7466:"0c21b184",7584:"dce5d342",7633:"0ec56596",7654:"8b677046",7683:"26c41f21",7714:"5fc8c782",7717:"91577106",7745:"946d7ac7",7799:"785207b5",7823:"9713f578",7830:"63aa0216",7837:"50aeb258",7858:"38d5fff3",7903:"7c27540e",7908:"9ebf1df0",7918:"71aebea3",7920:"71c37020",7940:"617415b1",7961:"94328495",8034:"7bf67fbd",8047:"ce7a90ea",8067:"8e22b0e3",8115:"8165c202",8138:"b58cb3be",8139:"d8f8fc6c",8178:"b0a99af1",8191:"c3bcde65",8215:"aae5ed82",8236:"da96a02f",8270:"06411900",8355:"6cc92c25",8361:"cda72e1e",8444:"36a1a7b7",8493:"9f6444b5",8609:"b0e14774",8648:"b8c3d096",8702:"b4f3a8f0",8757:"d5b3e8a3",8791:"7d6db575",8831:"5442882d",8855:"0b2d0c1d",8860:"5c0ca221",8866:"7ec2dc84",8876:"abc30cce",8887:"0d737435",8894:"ba661129",8901:"3e914279",8950:"fdf0595f",8951:"75a1fda0",9062:"0b3c9b35",9071:"8012ad4c",9217:"c330134f",9226:"9fd84eaa",9315:"151559ba",9323:"314e3357",9478:"14b31231",9514:"5d553167",9548:"7ddd5b5a",9596:"59fafabb",9626:"2dadbb25",9764:"5757c115",9771:"0f6ca87f",9802:"e08e9183",9806:"54c2c043",9817:"5ba13cdf",9856:"231c1c2e",9905:"2cba576e",9964:"2762c242",9977:"f45b2d88",9993:"e037a0d9"}[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,f)=>Object.prototype.hasOwnProperty.call(e,f),d={},r.l=(e,f,c,b)=>{if(d[e])d[e].push(f);else{var a,t;if(void 0!==c)for(var o=document.getElementsByTagName("script"),n=0;n{a.onerror=a.onload=null,clearTimeout(u);var b=d[e];if(delete d[e],a.parentNode&&a.parentNode.removeChild(a),b&&b.forEach((e=>e(c))),f)return f(c)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=l.bind(null,a.onerror),a.onload=l.bind(null,a.onload),t&&document.head.appendChild(a)}},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",69253974:"2433",73617284:"6730",74985360:"43",f4fb6e9c:"1","408829bd":"6","1d6d4797":"12","935f2afb":"53","9f319605":"63","77c23c97":"150",f189ca9f:"192",c7a044bb:"217","9528ac88":"315","2d429218":"502","3829cf1d":"537",f52abf29:"576",d569989b:"609","386bfe51":"657","145746f5":"691","078895e8":"740","49dac903":"779","23498fd5":"810",f90fa732:"1062","899aadcc":"1083",cfd53ea4:"1090","3184af97":"1125","73c3bebc":"1211","25f2bd2a":"1213",f359a251:"1239",fabebe44:"1288","74df6a22":"1299",b61f6dc7:"1372","4d76887f":"1415",f750c690:"1419","5136ee31":"1446",f44679e7:"1451","8dd7cee0":"1486",b21dd8a7:"1494",c977dfe8:"1506",ffe9c3c9:"1529","33b0bcab":"1585","7fbac68a":"1598","5db34cd0":"1635",fa343ad1:"1678",f7191335:"1686",a5002e4a:"1703","0df78d26":"1723","987d08ef":"1748","9e6341e5":"1774",d9ef69a7:"1786","0e306820":"1804","48074a08":"1825","78e1e977":"1872","1ed3671a":"1953",df154d69:"1957",f47489cd:"1966","0cb62240":"1979","4f031749":"2008",dd32e389:"2042","84f79495":"2078","21877fa5":"2117","6d5c9a28":"2119",ecb495b7:"2136","1646726c":"2169","6151e7ce":"2194",f3027c84:"2242",da9f79cb:"2248","493c7fdf":"2354","8d3a1bf8":"2399","7c78c461":"2507","918b38b6":"2508","863c4753":"2552","967fa6d4":"2581",db0b42b0:"2609",e2e89062:"2633","0b632434":"2635","9662c81e":"2664",f4130007:"2665",ece9fdae:"2677",f3bde756:"2704","39c15ff8":"2710",c2c6a3a6:"2712",b906f375:"2749","78868b16":"2754","9e3f6a8a":"2758","5d69d9d4":"2884",f4200fe5:"2909","2be0d940":"2914","2ea50c63":"2949","6544ec02":"3029",af40287e:"3066",b0a48d97:"3091","85afe03a":"3132","8a8a7d05":"3262","41f7224c":"3274",e31fc461:"3330","3497b7c6":"3332",f14351c1:"3356","3d1bf5db":"3452","5c90fc9b":"3484","41b7b3e8":"3513",d5909206:"3554","21899dd2":"3599",f137ce68:"3620",cb9afd28:"3643",f1585bfb:"3665",b0cbc1d4:"3667",b225a2ce:"3668",dbbd9e76:"3669",bea375d6:"3757",ff6596ea:"3842",cda87995:"3933",f8518919:"3945",c8dd560b:"3978",ec3b6a32:"4004",eef3f1dd:"4097","702d5d94":"4105","5355b952":"4126","9f804621":"4143",c4f5d8e4:"4195","84ede15a":"4338","19ed4d4c":"4355",dc36d550:"4359",f2c21b54:"4363",c662f00a:"4379","4d9b9869":"4445",a7b37b86:"4507","1ae2b102":"4537","3e56470e":"4541","694e7470":"4566","9ebc4c9a":"4577","48d75399":"4620","54338ffb":"4634",f41c4e9d:"4666","43ee4f22":"4672",fea93377:"4674","346ef9e6":"4860","2462cc91":"4885",f0855ff9:"4909",c1bbdb2a:"4916","320c8a05":"5005",c41801b5:"5013",db039c7f:"5103",d27ae88d:"5157","31bd35e0":"5281","9913464d":"5341",b3719d54:"5422",f7acb151:"5483","0c68fb82":"5526",d6b0148d:"5548","9e2042f5":"5651",b9b4ec9e:"5704","73a7060c":"5752",fbf58567:"5989",c7c5ba1a:"6104",b9c2850c:"6110","32e8da05":"6140",a29dc56e:"6253","452ad91d":"6255",a62d9768:"6277",bbba852d:"6294",dbc4065c:"6312","3002ebf4":"6325","43cda9e8":"6357",ceaa29cb:"6373","13b7bafa":"6585",ca9fe671:"6598",af3013e9:"6673",bf789d83:"6687",f2521980:"6689","279fb1d6":"6827",ccc1222e:"6920","4642ab5c":"6946","543610b9":"7022",feea648c:"7061","4a8eb552":"7202",f44ed8f8:"7211","6f1a81b8":"7288",db3d6c4d:"7313",bb8b1738:"7368",bd701914:"7388",a5b3561d:"7466","98a431f4":"7584",b940de31:"7633",c07c2447:"7654",cc44e8fd:"7683","591eca19":"7714","43267d13":"7717","9129da9e":"7745","8b670b2b":"7799","9e76b49d":"7823","0a3f0c9b":"7837",d6a97e7e:"7858","03dc8648":"7903","33bbe353":"7908","1a4e3797":"7920",ad762f86:"7940",a2800a5b:"7961",fecdcc34:"8034","69b97ecd":"8067","8247eba8":"8115","694672cd":"8138","386099fc":"8139","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609","71ed82b9":"8648",a74a59a0:"8702","83d4859f":"8757",ab138bf8:"8791","3bd77df4":"8831",d3a753cf:"8855","766a10e1":"8860","98a30fd8":"8866","31c99aa1":"8876",a4ac0905:"8887",b48c599b:"8901","4cdd7dfa":"8950",e495ca4d:"8951",b38833d4:"9062","60738e36":"9071","64c7e1cc":"9217","2f3b630e":"9226","6d2ffbf3":"9315","131c7f55":"9323",c7a2145e:"9478","1be78505":"9514",f95cee6f:"9548","390ca211":"9596","32c9742a":"9626",dc776cbc:"9764","89a76fd2":"9771","1e15616a":"9802","51fbc2c9":"9806","14eb3368":"9817","06597bc8":"9856",b0cb055f:"9905","050c0163":"9964","3104d5d8":"9977","482bfb5c":"9993"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(f,c)=>{var d=r.o(e,f)?e[f]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var b=new Promise(((c,b)=>d=e[f]=[c,b]));c.push(d[2]=b);var a=r.p+r.u(f),t=new Error;r.l(a,(c=>{if(r.o(e,f)&&(0!==(d=e[f])&&(e[f]=void 0),d)){var b=c&&("load"===c.type?"missing":c.type),a=c&&c.target&&c.target.src;t.message="Loading chunk "+f+" failed.\n("+b+": "+a+")",t.name="ChunkLoadError",t.type=b,t.request=a,d[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,c)=>{var d,b,[a,t,o]=c,n=0;if(a.some((f=>0!==e[f]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(f&&f(c);n - + @@ -33,7 +33,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/index.html b/docs/ambassadors/index.html index 7b5be60fab..63ef9ba7ec 100644 --- a/docs/ambassadors/index.html +++ b/docs/ambassadors/index.html @@ -15,7 +15,7 @@ - + @@ -26,7 +26,7 @@ communication channels of core team members, and gain access to Polkadot events.

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

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

How to apply:

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

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

- + \ No newline at end of file diff --git a/docs/apps-index/index.html b/docs/apps-index/index.html index e84a7668fd..ca0b44c1a5 100644 --- a/docs/apps-index/index.html +++ b/docs/apps-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/bug-bounty/index.html b/docs/bug-bounty/index.html index 498b8b15d3..e3cfd1d9a6 100644 --- a/docs/bug-bounty/index.html +++ b/docs/bug-bounty/index.html @@ -15,7 +15,7 @@ - + @@ -39,7 +39,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-dapp/index.html b/docs/build-dapp/index.html index cc71e5958b..be3b95d865 100644 --- a/docs/build-dapp/index.html +++ b/docs/build-dapp/index.html @@ -15,7 +15,7 @@ - + @@ -33,7 +33,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/index.html b/docs/build-data/index.html index 8cbc006b88..c3319aabc0 100644 --- a/docs/build-data/index.html +++ b/docs/build-data/index.html @@ -15,7 +15,7 @@ - + @@ -46,7 +46,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/index.html b/docs/build-guide/index.html index 7a860bdd04..b0ec177861 100644 --- a/docs/build-guide/index.html +++ b/docs/build-guide/index.html @@ -15,7 +15,7 @@ - + @@ -127,7 +127,7 @@ (parachains, relay chains, etc.) and smart contracts. These often will interact with the RPC of a Substrate node.

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

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

- + \ No newline at end of file diff --git a/docs/build-hackathon/index.html b/docs/build-hackathon/index.html index 413bfc15c0..37ad27a1d1 100644 --- a/docs/build-hackathon/index.html +++ b/docs/build-hackathon/index.html @@ -15,7 +15,7 @@ - + @@ -42,7 +42,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/index.html b/docs/build-hrmp-channels/index.html index fcfcf9fd9e..091bdabfd3 100644 --- a/docs/build-hrmp-channels/index.html +++ b/docs/build-hrmp-channels/index.html @@ -15,7 +15,7 @@ - + @@ -58,7 +58,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/index.html b/docs/build-index/index.html index 74032ca0f2..dcfcdb0212 100644 --- a/docs/build-index/index.html +++ b/docs/build-index/index.html @@ -15,7 +15,7 @@ - + @@ -35,7 +35,7 @@ are building.

Grants

  • Grants - Information regarding grants and funding sources available in the Kusama 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/index.html b/docs/build-integrate-assets/index.html index 111ce0909b..07a89a65df 100644 --- a/docs/build-integrate-assets/index.html +++ b/docs/build-integrate-assets/index.html @@ -15,7 +15,7 @@ - + @@ -26,7 +26,7 @@ non-fungible assets. The fungible interface is similar to Ethereum's ERC-20 standard. However, the data structures and stateful operations are encoded directly into the chain's runtime, making operations fast and fee-efficient.

Beyond merely supporting assets, integrating an Asset Hub into your systems has several benefits for -infrastructure providers and users:

  • Support for on-chain assets.
  • Significantly lower transaction fees (about 1/10) than the Relay Chain.
  • Significantly lower deposits (1/10) than the Relay Chain. This includes the existential deposit +infrastructure providers and users:

    • Support for on-chain assets.
    • Significantly lower transaction fees (about 1/10) than the Relay Chain.
    • Significantly lower deposits (1/100) than the Relay Chain. This includes the existential deposit and deposits for proxy/multisig operations.
    • Ability to pay transaction fees in certain assets. As in, accounts would not need DOT to exist on-chain or pay fees.

    The Asset Hub will use DOT as its native currency. Users can transfer DOT from the Relay Chain into the Asset Hub and use it natively. The Relay Chain will also accept DOT transfers from the Asset Hub @@ -122,8 +122,8 @@ polkadotxcm (AssetsTrapped) which indicates that some assets have been trapped (and hence can be claimed).

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

- +XCM Part III: Execution and Error Management.

+ \ No newline at end of file diff --git a/docs/build-integration/index.html b/docs/build-integration/index.html index 38cea4953e..c16ae8fe5c 100644 --- a/docs/build-integration/index.html +++ b/docs/build-integration/index.html @@ -15,7 +15,7 @@ - + @@ -38,7 +38,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/index.html b/docs/build-light-clients/index.html index f1a8239a65..703282c1c4 100644 --- a/docs/build-light-clients/index.html +++ b/docs/build-light-clients/index.html @@ -15,7 +15,7 @@ - + @@ -50,7 +50,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/index.html b/docs/build-network-overview/index.html index 897efcca54..795fd52b97 100644 --- a/docs/build-network-overview/index.html +++ b/docs/build-network-overview/index.html @@ -15,7 +15,7 @@ - + @@ -36,7 +36,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/index.html b/docs/build-node-interaction/index.html index 74dbcdac61..47aa67e3bc 100644 --- a/docs/build-node-interaction/index.html +++ b/docs/build-node-interaction/index.html @@ -15,7 +15,7 @@ - + @@ -53,7 +53,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/index.html b/docs/build-node-management/index.html index a6be807699..dc45a95a81 100644 --- a/docs/build-node-management/index.html +++ b/docs/build-node-management/index.html @@ -15,7 +15,7 @@ - + @@ -63,7 +63,7 @@ has a monitor node metrics tutorial which uses this endpoint.

- + \ No newline at end of file diff --git a/docs/build-open-source/index.html b/docs/build-open-source/index.html index ea3c3e7f7b..14bc9a2fef 100644 --- a/docs/build-open-source/index.html +++ b/docs/build-open-source/index.html @@ -15,7 +15,7 @@ - + @@ -30,7 +30,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/index.html b/docs/build-oracle/index.html index 8d2366c21c..25c00a93e5 100644 --- a/docs/build-oracle/index.html +++ b/docs/build-oracle/index.html @@ -15,7 +15,7 @@ - + @@ -45,7 +45,7 @@ Kusama 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/index.html b/docs/build-pdk/index.html index bea46c568c..2f040589d1 100644 --- a/docs/build-pdk/index.html +++ b/docs/build-pdk/index.html @@ -15,7 +15,7 @@ - + @@ -182,7 +182,7 @@ transition into a Relay Chain.

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

Resources

- + \ No newline at end of file diff --git a/docs/build-protocol-info/index.html b/docs/build-protocol-info/index.html index 1ca3326a9a..c56191b15c 100644 --- a/docs/build-protocol-info/index.html +++ b/docs/build-protocol-info/index.html @@ -15,7 +15,7 @@ - + @@ -156,7 +156,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/index.html b/docs/build-smart-contracts/index.html index 21894faa95..387a6b44c7 100644 --- a/docs/build-smart-contracts/index.html +++ b/docs/build-smart-contracts/index.html @@ -15,7 +15,7 @@ - + @@ -142,7 +142,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/index.html b/docs/build-storage/index.html index fef78c3704..83d47349a3 100644 --- a/docs/build-storage/index.html +++ b/docs/build-storage/index.html @@ -15,7 +15,7 @@ - + @@ -25,7 +25,7 @@ Kusama ecosystem, it will be helpful if you familiarize yourself with the current Web3 approach towards decentralized storage.

DCS (Decentralized Cloud Storage)

The key attribute that characterizes centralized cloud storage is the location of data.

In decentralized cloud storage, the key attribute becomes the data itself instead of the data's location.

This can be viewed as the shift from the centralized location-centric storage approach to the -decentralized content-centric approach.

IPFS (Interplanetary File System)

IPFS is a peer-to-peer distributed file system that seeks to connect all +decentralized content-centric approach.

IPFS (Interplanetary File System)

IPFS is a peer-to-peer distributed file system that seeks to connect all computing devices with the same system of files, by utilizing features such as content-addressing, content-signing, and enhanced security methods through encryption. IPFS aims to address the current hurdles of the HTTP-based Internet.

Brief comparison of IPFS & HTTP:

IPFSHTTP
network: peer-to-peer model (decentralized)network: client-server model (centralized)
requests: use a cryptographic hash of that datarequests: use the address on which data is hosted
accessibility: data is distributed to multiple nodes and can be accessed at any time. Bandwidth is high: nearest peer can serve the dataaccessibility: data can only be accessed if the server is live and there are no interruptions in transmission. Bandwidth is limited: clients send requests to the same server

Crust Storage

Crust Network provides a Web3.0 decentralized storage network for the @@ -54,8 +54,8 @@ files on Crust Network.

Start by uploading a single file or folder:

upload

Choose a Gateway:

gateway

Sign the message:

sign

You should be able to view the file info, as follows:

file info

As well as the file status:

file statue

note

The whole files module is decentralized, so your file directory is only cached in browser. The file 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

- +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/index.html b/docs/build-tools-index/index.html index 262210443c..ac03d4556a 100644 --- a/docs/build-tools-index/index.html +++ b/docs/build-tools-index/index.html @@ -15,7 +15,7 @@ - + @@ -24,7 +24,7 @@ If you're actively maintaining a tool that might be useful to other Polkadot, Kusama or Substrate developers, feel free to add it in.

Wallets

Please see the Wallets page.

Block Explorers

  • Polkadot-JS Apps Explorer - Polkadot dashboard block explorer. Supports dozens of other networks, including Kusama, Westend, and other remote or local -endpoints. Access via IPFS
  • Polkascan - Blockchain explorer for Polkadot, Kusama, and other related +endpoints. Access via IPFS
  • Polkascan - Blockchain explorer for Polkadot, Kusama, and other related chains. Repo.
  • Subscan - Blockchain explorer for Substrate chains. Repo.
  • DotScanner - Polkadot & Kusama Blockchain explorer.
  • 3xpl.com - Fastest ad-free universal block explorer and JSON API with @@ -108,8 +108,8 @@ endpoints, kept in 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.
- +based nodes providing a GraphQL interface.
+ \ No newline at end of file diff --git a/docs/build-transaction-construction/index.html b/docs/build-transaction-construction/index.html index 8769c17ba3..15328b0582 100644 --- a/docs/build-transaction-construction/index.html +++ b/docs/build-transaction-construction/index.html @@ -15,7 +15,7 @@ - + @@ -55,7 +55,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/index.html b/docs/community-index/index.html index 0639f117a4..7c100cc356 100644 --- a/docs/community-index/index.html +++ b/docs/community-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/community/index.html b/docs/community/index.html index 18918e9109..204a86912e 100644 --- a/docs/community/index.html +++ b/docs/community/index.html @@ -15,7 +15,7 @@ - + @@ -61,7 +61,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/index.html b/docs/contributing/index.html index deb9686c64..ade7f37687 100644 --- a/docs/contributing/index.html +++ b/docs/contributing/index.html @@ -15,7 +15,7 @@ - + @@ -54,7 +54,7 @@ the official crowdin knowledge base as well.




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


    Make sure to save your translation.

    - + \ No newline at end of file diff --git a/docs/contributors/index.html b/docs/contributors/index.html index 7eb72a724c..f94f7330ff 100644 --- a/docs/contributors/index.html +++ b/docs/contributors/index.html @@ -15,7 +15,7 @@ - + @@ -91,7 +91,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/index.html b/docs/dashboards-index/index.html index af6f0be291..2b9d374f06 100644 --- a/docs/dashboards-index/index.html +++ b/docs/dashboards-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/decentralized-futures/index.html b/docs/decentralized-futures/index.html index 4f0b33f94e..7c5fccc747 100644 --- a/docs/decentralized-futures/index.html +++ b/docs/decentralized-futures/index.html @@ -15,7 +15,7 @@ - + @@ -45,7 +45,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/index.html b/docs/decentralized-voices/index.html index 5da1690ff3..e8bc4a936c 100644 --- a/docs/decentralized-voices/index.html +++ b/docs/decentralized-voices/index.html @@ -15,7 +15,7 @@ - + @@ -52,7 +52,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/index.html b/docs/dev-heroes/index.html index 457e6e7e52..6d5b50eadf 100644 --- a/docs/dev-heroes/index.html +++ b/docs/dev-heroes/index.html @@ -15,7 +15,7 @@ - + @@ -36,7 +36,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/index.html b/docs/explore-index/index.html index ba27dc9ade..94cb8b90b2 100644 --- a/docs/explore-index/index.html +++ b/docs/explore-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/faq/index.html b/docs/faq/index.html index ad6a6c4bf1..ff95747e12 100644 --- a/docs/faq/index.html +++ b/docs/faq/index.html @@ -15,7 +15,7 @@ - + @@ -56,7 +56,7 @@ validator payouts.

    What is the minimum stake necessary to be elected as an active validator?

    The minimum stake that is necessary to be elected as an active validator is dynamic and can change over time. It depends not only on how much stake is being put behind each validator, but also the size of the active set and how many validators are waiting in the pool.

    There are a few ways to estimate the minimum stake.

    One way can be to navigate to the -Polkadot Apps Targets tab. The value +Polkadot Apps Targets tab. The value at the top of the screen saying "Lowest" is the least staked validator. You need at least this much + 1 to enter the set.

    You can also use some tools some to perform estimations.

    - + \ No newline at end of file diff --git a/docs/glossary/index.html b/docs/glossary/index.html index 885c5428cd..2d49264dde 100644 --- a/docs/glossary/index.html +++ b/docs/glossary/index.html @@ -15,7 +15,7 @@ - + @@ -294,7 +294,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/index.html b/docs/governance-apps/index.html index c45a44fe1e..cec83b0d36 100644 --- a/docs/governance-apps/index.html +++ b/docs/governance-apps/index.html @@ -15,7 +15,7 @@ - + @@ -47,7 +47,7 @@ governance events and provides user interfaces to facilitate various governance workflow. It has supported tens of chains including polkadot, kusama, acala, centrifuge, hydradx, interlay, phala, etc. Please check all deployments here.

    - + \ No newline at end of file diff --git a/docs/grants/index.html b/docs/grants/index.html index 575464a255..e35c7111ac 100644 --- a/docs/grants/index.html +++ b/docs/grants/index.html @@ -15,7 +15,7 @@ - + @@ -39,7 +39,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/index.html b/docs/how-to-dyor/index.html index 8663a8b5a5..52fe18bcff 100644 --- a/docs/how-to-dyor/index.html +++ b/docs/how-to-dyor/index.html @@ -15,7 +15,7 @@ - + @@ -215,7 +215,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/index.html b/docs/kusama-adversarial-cheatsheet/index.html index c5c89785e9..faf245ce13 100644 --- a/docs/kusama-adversarial-cheatsheet/index.html +++ b/docs/kusama-adversarial-cheatsheet/index.html @@ -15,14 +15,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/index.html b/docs/kusama-bug-bounty/index.html index 793fca011f..0f52111591 100644 --- a/docs/kusama-bug-bounty/index.html +++ b/docs/kusama-bug-bounty/index.html @@ -15,7 +15,7 @@ - + @@ -40,7 +40,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/index.html b/docs/kusama-claims/index.html index 547d66139f..c8fb69e0ba 100644 --- a/docs/kusama-claims/index.html +++ b/docs/kusama-claims/index.html @@ -15,7 +15,7 @@ - + @@ -94,7 +94,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/index.html b/docs/kusama-coc/index.html index ef3689f7c5..29351cff32 100644 --- a/docs/kusama-coc/index.html +++ b/docs/kusama-coc/index.html @@ -15,7 +15,7 @@ - + @@ -38,7 +38,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/index.html b/docs/kusama-community/index.html index ac05f745ff..19b8f1996a 100644 --- a/docs/kusama-community/index.html +++ b/docs/kusama-community/index.html @@ -15,7 +15,7 @@ - + @@ -38,7 +38,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/index.html b/docs/kusama-getting-started/index.html index aa74b98e26..c1a997b481 100644 --- a/docs/kusama-getting-started/index.html +++ b/docs/kusama-getting-started/index.html @@ -15,7 +15,7 @@ - + @@ -51,7 +51,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/index.html b/docs/kusama-index/index.html index f57a7c3ee9..aaa8665f89 100644 --- a/docs/kusama-index/index.html +++ b/docs/kusama-index/index.html @@ -15,7 +15,7 @@ - + @@ -23,7 +23,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/index.html b/docs/kusama-parameters/index.html index 1ea8c436d6..72b127165c 100644 --- a/docs/kusama-parameters/index.html +++ b/docs/kusama-parameters/index.html @@ -15,7 +15,7 @@ - + @@ -34,7 +34,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/index.html b/docs/kusama-social-recovery/index.html index e8c9fb298a..9a75b74fd0 100644 --- a/docs/kusama-social-recovery/index.html +++ b/docs/kusama-social-recovery/index.html @@ -15,7 +15,7 @@ - + @@ -61,7 +61,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/index.html b/docs/kusama-timeline/index.html index a564ec4a79..6019296702 100644 --- a/docs/kusama-timeline/index.html +++ b/docs/kusama-timeline/index.html @@ -15,7 +15,7 @@ - + @@ -53,7 +53,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/index.html b/docs/learn-DOT/index.html index b8eb22022e..0713cd124c 100644 --- a/docs/learn-DOT/index.html +++ b/docs/learn-DOT/index.html @@ -15,7 +15,7 @@ - + @@ -81,7 +81,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/index.html b/docs/learn-account-abstraction/index.html index 741b8c6bc8..ed7e0d9730 100644 --- a/docs/learn-account-abstraction/index.html +++ b/docs/learn-account-abstraction/index.html @@ -15,7 +15,7 @@ - + @@ -85,7 +85,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/index.html b/docs/learn-account-advanced/index.html index 1d28d1fbe7..df7f217a6d 100644 --- a/docs/learn-account-advanced/index.html +++ b/docs/learn-account-advanced/index.html @@ -15,7 +15,7 @@ - + @@ -200,7 +200,7 @@ directly in the browser on the new one.

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

    1. Go to Polkadot-JS Apps
    2. Go to JavaScript console on the browser (Available in Developer Tools)
    3. Type in the command:
    JSON.stringify(localStorage)
    1. Copy and paste the returned string to a text editor and save the file.
    2. Check that the string you pasted begins and ends with a tick mark ('). If not, add one to the beginning and end.
    3. Save and send that file with the copied string to the new computer.
    4. On the new computer, go to Polkadot-JS Apps
    5. Open the Javascript console on the browser (Available in Developer Tools)
    6. Set a variable raw equal to the string from the text file
    raw = ... copy-pasted json from original computer ...
    1. Run the following code on the console:
    accounts = JSON.parse(raw);
    for (var key in accounts) {
    if (accounts.hasOwnProperty(key)) {
    val = JSON.stringify(accounts[key]).replace(/\\/g,'').slice(1,-1);
    console.log(key + " -> " + val);
    localStorage.setItem(key, val);
    }
    }
    1. Refresh Polkadot-JS App browser and check the Accounts and Addresses pages. All of your accounts and addresses should now be available.
    - + \ No newline at end of file diff --git a/docs/learn-account-multisig/index.html b/docs/learn-account-multisig/index.html index 7c55ab5112..0393e5dc49 100644 --- a/docs/learn-account-multisig/index.html +++ b/docs/learn-account-multisig/index.html @@ -15,7 +15,7 @@ - + @@ -40,7 +40,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/index.html b/docs/learn-accounts/index.html index a7e07e3c24..fad274b3b4 100644 --- a/docs/learn-accounts/index.html +++ b/docs/learn-accounts/index.html @@ -15,7 +15,7 @@ - + @@ -114,7 +114,7 @@ The same applies to proxies. The idea is that those actions require some network memory usage that is not given for free. In the example, we created a governance proxy, and the reserved funds for this are 0.0668 KSM.
    Polkadot-JS Guides

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

    - + \ No newline at end of file diff --git a/docs/learn-advanced-index/index.html b/docs/learn-advanced-index/index.html index 4e8218d62d..12c8a1e94b 100644 --- a/docs/learn-advanced-index/index.html +++ b/docs/learn-advanced-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-architecture-index/index.html b/docs/learn-architecture-index/index.html index 1f47e576b0..7470eb8cc9 100644 --- a/docs/learn-architecture-index/index.html +++ b/docs/learn-architecture-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-architecture/index.html b/docs/learn-architecture/index.html index 28a499836c..907d7d0633 100644 --- a/docs/learn-architecture/index.html +++ b/docs/learn-architecture/index.html @@ -15,7 +15,7 @@ - + @@ -82,7 +82,7 @@ verify their validity (and later, their availability).


    Whiteboard Series

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

    - + \ No newline at end of file diff --git a/docs/learn-archive/index.html b/docs/learn-archive/index.html index 6b333ac64a..7e7eb856c1 100644 --- a/docs/learn-archive/index.html +++ b/docs/learn-archive/index.html @@ -15,14 +15,14 @@ - + - + \ No newline at end of file diff --git a/docs/learn-assets-index/index.html b/docs/learn-assets-index/index.html index 79b3155a9f..6de7ceee8f 100644 --- a/docs/learn-assets-index/index.html +++ b/docs/learn-assets-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-assets/index.html b/docs/learn-assets/index.html index 36eb4a7d57..0e20396862 100644 --- a/docs/learn-assets/index.html +++ b/docs/learn-assets/index.html @@ -15,7 +15,7 @@ - + @@ -122,7 +122,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/index.html b/docs/learn-async-backing/index.html index 82c90bbd8f..56f8e04db4 100644 --- a/docs/learn-async-backing/index.html +++ b/docs/learn-async-backing/index.html @@ -15,7 +15,7 @@ - + @@ -148,7 +148,7 @@ Asynchronous Backing (Shallow)
  • Chapter 6.15. from PBA lecture material: Asynchronous Backing (Deep)
  • Polkadot Blog Post - Asynchronous Backing: Elevating Polkadot's Performance and Scale
  • - + \ No newline at end of file diff --git a/docs/learn-auction/index.html b/docs/learn-auction/index.html index f39abca288..fb500282a8 100644 --- a/docs/learn-auction/index.html +++ b/docs/learn-auction/index.html @@ -15,7 +15,7 @@ - + @@ -137,7 +137,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/index.html b/docs/learn-basics-index/index.html index 31f2aff4b0..7e7a3554a5 100644 --- a/docs/learn-basics-index/index.html +++ b/docs/learn-basics-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-bridges/index.html b/docs/learn-bridges/index.html index 4644eb8279..5b2bde70bb 100644 --- a/docs/learn-bridges/index.html +++ b/docs/learn-bridges/index.html @@ -15,7 +15,7 @@ - + @@ -84,7 +84,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/index.html b/docs/learn-collator/index.html index b3a161d132..99e01e4092 100644 --- a/docs/learn-collator/index.html +++ b/docs/learn-collator/index.html @@ -15,7 +15,7 @@ - + @@ -61,7 +61,7 @@ Cumulus repository. More information can be found under the Cumulus section on the build parachain page.

    Guides and Tools

    - + \ No newline at end of file diff --git a/docs/learn-comparisons-avalanche/index.html b/docs/learn-comparisons-avalanche/index.html index 16b27711b5..283127ab64 100644 --- a/docs/learn-comparisons-avalanche/index.html +++ b/docs/learn-comparisons-avalanche/index.html @@ -15,7 +15,7 @@ - + @@ -109,7 +109,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/index.html b/docs/learn-comparisons-cosmos/index.html index 9525931aaa..2227de05c4 100644 --- a/docs/learn-comparisons-cosmos/index.html +++ b/docs/learn-comparisons-cosmos/index.html @@ -15,7 +15,7 @@ - + @@ -126,7 +126,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/index.html b/docs/learn-comparisons-ethereum-2/index.html index 8a1fbd7ed3..4f53e836f4 100644 --- a/docs/learn-comparisons-ethereum-2/index.html +++ b/docs/learn-comparisons-ethereum-2/index.html @@ -15,7 +15,7 @@ - + @@ -146,7 +146,7 @@ enacted autonomously via forkless upgrades.
  • Validator selection mechanisms differ as Kusama can provide strong availability and validity guarantees with fewer validators per protocol.
  • - + \ No newline at end of file diff --git a/docs/learn-comparisons-kusama/index.html b/docs/learn-comparisons-kusama/index.html index bdf1365475..fc03d31479 100644 --- a/docs/learn-comparisons-kusama/index.html +++ b/docs/learn-comparisons-kusama/index.html @@ -15,7 +15,7 @@ - + @@ -72,7 +72,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/index.html b/docs/learn-comparisons-rollups/index.html index 8bdff451e3..75afbf65ed 100644 --- a/docs/learn-comparisons-rollups/index.html +++ b/docs/learn-comparisons-rollups/index.html @@ -15,7 +15,7 @@ - + @@ -90,7 +90,7 @@ transition data.

    Despite these drawbacks, Kusama 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/index.html b/docs/learn-comparisons/index.html index 2d523a809f..c95896bfaa 100644 --- a/docs/learn-comparisons/index.html +++ b/docs/learn-comparisons/index.html @@ -15,7 +15,7 @@ - + @@ -57,7 +57,7 @@ Chain, and as the number of validators in the active set on Kusama are increased, more parachains can be supported.

    - + \ No newline at end of file diff --git a/docs/learn-components-index/index.html b/docs/learn-components-index/index.html index a40d7ab1e3..f8af1ebe9b 100644 --- a/docs/learn-components-index/index.html +++ b/docs/learn-components-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-consensus/index.html b/docs/learn-consensus/index.html index c513cf5ac3..6c32e48ddb 100644 --- a/docs/learn-consensus/index.html +++ b/docs/learn-consensus/index.html @@ -15,7 +15,7 @@ - + @@ -150,7 +150,7 @@ with Bill Laboon.
  • Block Production and Finalization in Polkadot: Understanding the BABE and GRANDPA Protocols - An academic talk by Bill Laboon, given at MIT Cryptoeconomic Systems 2020, describing Polkadot's hybrid consensus model in-depth.
  • - + \ No newline at end of file diff --git a/docs/learn-crowdloans/index.html b/docs/learn-crowdloans/index.html index 3e31ed5f19..905e9afff1 100644 --- a/docs/learn-crowdloans/index.html +++ b/docs/learn-crowdloans/index.html @@ -15,7 +15,7 @@ - + @@ -90,7 +90,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/index.html b/docs/learn-cryptography/index.html index f93bea8f4b..29f5695a9c 100644 --- a/docs/learn-cryptography/index.html +++ b/docs/learn-cryptography/index.html @@ -15,7 +15,7 @@ - + @@ -171,7 +171,7 @@ make passive attacks much harder if such a backdoor exists.

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

    - + \ No newline at end of file diff --git a/docs/learn-future-implementations-index/index.html b/docs/learn-future-implementations-index/index.html index b4ac358e5b..f804eb245e 100644 --- a/docs/learn-future-implementations-index/index.html +++ b/docs/learn-future-implementations-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-guides-accounts-multisig/index.html b/docs/learn-guides-accounts-multisig/index.html index 932dbff8fa..776c94b321 100644 --- a/docs/learn-guides-accounts-multisig/index.html +++ b/docs/learn-guides-accounts-multisig/index.html @@ -15,7 +15,7 @@ - + @@ -86,7 +86,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/index.html b/docs/learn-guides-accounts-proxy-pure/index.html index 219019b91e..c05ff99f8c 100644 --- a/docs/learn-guides-accounts-proxy-pure/index.html +++ b/docs/learn-guides-accounts-proxy-pure/index.html @@ -15,7 +15,7 @@ - + @@ -77,7 +77,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/index.html b/docs/learn-guides-accounts-proxy/index.html index 16bf97fedf..0fda443391 100644 --- a/docs/learn-guides-accounts-proxy/index.html +++ b/docs/learn-guides-accounts-proxy/index.html @@ -15,7 +15,7 @@ - + @@ -72,7 +72,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/index.html b/docs/learn-guides-accounts/index.html index cc588908c5..ebaacfff3a 100644 --- a/docs/learn-guides-accounts/index.html +++ b/docs/learn-guides-accounts/index.html @@ -15,7 +15,7 @@ - + @@ -120,7 +120,7 @@ encrypting/decrypting your wallet. If you cannot load a JSON file, please use the latest version of the wallet software. If you cannot load it, ensure that the wallet software uses the newest version of the Polkadot API.

    - + \ No newline at end of file diff --git a/docs/learn-guides-assets-create/index.html b/docs/learn-guides-assets-create/index.html index 048c87e5ec..1980796dea 100644 --- a/docs/learn-guides-assets-create/index.html +++ b/docs/learn-guides-assets-create/index.html @@ -15,7 +15,7 @@ - + @@ -57,7 +57,7 @@ an ID that has already been taken. After all the details are entered, click on the next button.

    Add Asset Metadata

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

    Asset managing accounts

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

    Sign asset creating transaction

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

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

    Support

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

    - + \ No newline at end of file diff --git a/docs/learn-guides-bounties/index.html b/docs/learn-guides-bounties/index.html index d4480c4203..a8d3a79359 100644 --- a/docs/learn-guides-bounties/index.html +++ b/docs/learn-guides-bounties/index.html @@ -15,7 +15,7 @@ - + @@ -72,7 +72,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-identity/index.html b/docs/learn-guides-identity/index.html index 6cb06f53b6..78d8d6cacc 100644 --- a/docs/learn-guides-identity/index.html +++ b/docs/learn-guides-identity/index.html @@ -15,7 +15,7 @@ - + @@ -88,7 +88,7 @@ minimumDeposit.

    Submitting a proposal

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

    - + \ No newline at end of file diff --git a/docs/learn-guides-ledger/index.html b/docs/learn-guides-ledger/index.html index 4a03eaf5c0..7eb804311d 100644 --- a/docs/learn-guides-ledger/index.html +++ b/docs/learn-guides-ledger/index.html @@ -15,7 +15,7 @@ - + @@ -75,7 +75,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-polkadot-opengov/index.html b/docs/learn-guides-polkadot-opengov/index.html index 4ba7b4079a..cccd4c8a54 100644 --- a/docs/learn-guides-polkadot-opengov/index.html +++ b/docs/learn-guides-polkadot-opengov/index.html @@ -15,7 +15,7 @@ - + @@ -141,7 +141,7 @@ have been met. Failing to submit the decision deposit within a -day period will lead to a referendum timeout.

    - + \ No newline at end of file diff --git a/docs/learn-guides-staking-index/index.html b/docs/learn-guides-staking-index/index.html index f17d5cbb94..f38223d300 100644 --- a/docs/learn-guides-staking-index/index.html +++ b/docs/learn-guides-staking-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-guides-staking-pools/index.html b/docs/learn-guides-staking-pools/index.html index ff352b800c..ce91d0f271 100644 --- a/docs/learn-guides-staking-pools/index.html +++ b/docs/learn-guides-staking-pools/index.html @@ -15,7 +15,7 @@ - + @@ -59,7 +59,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/index.html b/docs/learn-guides-staking/index.html index e1ce96210f..62b7fbd32e 100644 --- a/docs/learn-guides-staking/index.html +++ b/docs/learn-guides-staking/index.html @@ -15,7 +15,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-transfers/index.html b/docs/learn-guides-transfers/index.html index 94e96098bf..91c79db492 100644 --- a/docs/learn-guides-transfers/index.html +++ b/docs/learn-guides-transfers/index.html @@ -15,7 +15,7 @@ - + @@ -117,7 +117,7 @@ chain state. This can be found under Developer > Chain state in PolkadotJS Apps.

    Existing Non-Native Assets

    Currently, Kusama 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/index.html b/docs/learn-guides-treasury/index.html index 1267ffdbc3..0a052492c1 100644 --- a/docs/learn-guides-treasury/index.html +++ b/docs/learn-guides-treasury/index.html @@ -15,7 +15,7 @@ - + @@ -67,7 +67,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/index.html b/docs/learn-guides-vault/index.html index e78d5a3220..0d9d1d8a83 100644 --- a/docs/learn-guides-vault/index.html +++ b/docs/learn-guides-vault/index.html @@ -15,7 +15,7 @@ - + @@ -79,7 +79,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/index.html b/docs/learn-hyperbridge/index.html index 714550e376..5451c930e3 100644 --- a/docs/learn-hyperbridge/index.html +++ b/docs/learn-hyperbridge/index.html @@ -15,7 +15,7 @@ - + @@ -85,7 +85,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/index.html b/docs/learn-identity/index.html index 49ee4354b4..84a617b368 100644 --- a/docs/learn-identity/index.html +++ b/docs/learn-identity/index.html @@ -15,7 +15,7 @@ - + @@ -68,7 +68,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/index.html b/docs/learn-implementations/index.html index 231f86cdda..aeee8fc380 100644 --- a/docs/learn-implementations/index.html +++ b/docs/learn-implementations/index.html @@ -15,7 +15,7 @@ - + @@ -53,7 +53,7 @@ collection of tools, interfaces, and libraries for Polkadot and Substrate.

    Other implementations that have received grants

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

    - + \ No newline at end of file diff --git a/docs/learn-index/index.html b/docs/learn-index/index.html index 020c005ec4..9451a33a03 100644 --- a/docs/learn-index/index.html +++ b/docs/learn-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-inflation/index.html b/docs/learn-inflation/index.html index d833054433..885b0acd69 100644 --- a/docs/learn-inflation/index.html +++ b/docs/learn-inflation/index.html @@ -15,7 +15,7 @@ - + @@ -73,7 +73,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-nft-pallets/index.html b/docs/learn-nft-pallets/index.html index eb5384ff54..7f762fb9e8 100644 --- a/docs/learn-nft-pallets/index.html +++ b/docs/learn-nft-pallets/index.html @@ -15,7 +15,7 @@ - + @@ -113,7 +113,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/index.html b/docs/learn-nft-projects/index.html index b84dd85e74..8cbfdf6c0a 100644 --- a/docs/learn-nft-projects/index.html +++ b/docs/learn-nft-projects/index.html @@ -15,7 +15,7 @@ - + @@ -97,7 +97,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/index.html b/docs/learn-nft/index.html index 50f824fac0..405f659de0 100644 --- a/docs/learn-nft/index.html +++ b/docs/learn-nft/index.html @@ -15,7 +15,7 @@ - + @@ -60,7 +60,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/index.html b/docs/learn-nomination-pools/index.html index f42f1dd76a..782e43a128 100644 --- a/docs/learn-nomination-pools/index.html +++ b/docs/learn-nomination-pools/index.html @@ -15,7 +15,7 @@ - + @@ -197,7 +197,7 @@ in the nomination pools and earn staking rewards. For additional information, see this blog post. Check the wiki doc on nomination pools for more information.

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

    Minimum Active Nomination

    Guides

    - + \ No newline at end of file diff --git a/docs/learn-parachains-faq/index.html b/docs/learn-parachains-faq/index.html index a0e9df33fb..d4085e5ff2 100644 --- a/docs/learn-parachains-faq/index.html +++ b/docs/learn-parachains-faq/index.html @@ -15,7 +15,7 @@ - + @@ -107,7 +107,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/index.html b/docs/learn-parachains-index/index.html index 14ca19e28f..f8020b5fa1 100644 --- a/docs/learn-parachains-index/index.html +++ b/docs/learn-parachains-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-parachains-protocol/index.html b/docs/learn-parachains-protocol/index.html index c997e13859..ae7ea6d7c1 100644 --- a/docs/learn-parachains-protocol/index.html +++ b/docs/learn-parachains-protocol/index.html @@ -15,7 +15,7 @@ - + @@ -273,7 +273,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/index.html b/docs/learn-parachains/index.html index f79f1fedd4..4dd8b89048 100644 --- a/docs/learn-parachains/index.html +++ b/docs/learn-parachains/index.html @@ -15,7 +15,7 @@ - + @@ -185,7 +185,7 @@ its own. The Relay Chain provides security to attached parachains, but also provides a guarantee of secure message-passing between them."
  • The Path of a Parachain Block - A technical walk-through of how parachains interact with the Relay Chain.
  • - + \ No newline at end of file diff --git a/docs/learn-parathreads/index.html b/docs/learn-parathreads/index.html index f6c9d6b026..eb70ef18f4 100644 --- a/docs/learn-parathreads/index.html +++ b/docs/learn-parathreads/index.html @@ -15,7 +15,7 @@ - + @@ -86,7 +86,7 @@ produce new blocks when they need to.

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

    Resources

    - + \ No newline at end of file diff --git a/docs/learn-participants-index/index.html b/docs/learn-participants-index/index.html index 1681484191..4de590bfe0 100644 --- a/docs/learn-participants-index/index.html +++ b/docs/learn-participants-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-phragmen/index.html b/docs/learn-phragmen/index.html index 8b660b279e..de5d63c1fc 100644 --- a/docs/learn-phragmen/index.html +++ b/docs/learn-phragmen/index.html @@ -15,7 +15,7 @@ - + @@ -266,7 +266,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/index.html b/docs/learn-polkadot-host/index.html index 5e31af92b3..d96240aa1e 100644 --- a/docs/learn-polkadot-host/index.html +++ b/docs/learn-polkadot-host/index.html @@ -15,7 +15,7 @@ - + @@ -41,7 +41,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/index.html b/docs/learn-polkadot-js-guides/index.html index d119b570db..f1a90537b5 100644 --- a/docs/learn-polkadot-js-guides/index.html +++ b/docs/learn-polkadot-js-guides/index.html @@ -15,7 +15,7 @@ - + @@ -25,7 +25,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/index.html b/docs/learn-polkadot-opengov-index/index.html index b324283b23..09cac6cbdc 100644 --- a/docs/learn-polkadot-opengov-index/index.html +++ b/docs/learn-polkadot-opengov-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-polkadot-opengov-origins/index.html b/docs/learn-polkadot-opengov-origins/index.html index 31a5a491da..4283420a2a 100644 --- a/docs/learn-polkadot-opengov-origins/index.html +++ b/docs/learn-polkadot-opengov-origins/index.html @@ -15,7 +15,7 @@ - + @@ -82,7 +82,7 @@

    Big Spender

    Origin able to spend up to 33333.33 KSM from the treasury at once.

    - + \ No newline at end of file diff --git a/docs/learn-polkadot-opengov-treasury/index.html b/docs/learn-polkadot-opengov-treasury/index.html index c813cc70aa..5357e0ba78 100644 --- a/docs/learn-polkadot-opengov-treasury/index.html +++ b/docs/learn-polkadot-opengov-treasury/index.html @@ -15,7 +15,7 @@ - + @@ -82,7 +82,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/index.html b/docs/learn-polkadot-opengov/index.html index 35018eeb4c..fde2034b75 100644 --- a/docs/learn-polkadot-opengov/index.html +++ b/docs/learn-polkadot-opengov/index.html @@ -15,7 +15,7 @@ - + @@ -291,7 +291,7 @@ Delegating Voting Power section on the Polkadot OpenGov Guides.

    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/index.html b/docs/learn-polkadot-technical-fellowship/index.html index 700e262a79..2ffa0b087d 100644 --- a/docs/learn-polkadot-technical-fellowship/index.html +++ b/docs/learn-polkadot-technical-fellowship/index.html @@ -15,7 +15,7 @@ - + @@ -75,7 +75,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 dasboard.

    - + \ No newline at end of file diff --git a/docs/learn-polkadotjs-index/index.html b/docs/learn-polkadotjs-index/index.html index cf9a5021d4..9e2ef852c1 100644 --- a/docs/learn-polkadotjs-index/index.html +++ b/docs/learn-polkadotjs-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-proxies-pure/index.html b/docs/learn-proxies-pure/index.html index cdbbd55950..9c12ae79d5 100644 --- a/docs/learn-proxies-pure/index.html +++ b/docs/learn-proxies-pure/index.html @@ -15,7 +15,7 @@ - + @@ -60,7 +60,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/index.html b/docs/learn-proxies/index.html index 0ca8b5a7e0..e854d17f5a 100644 --- a/docs/learn-proxies/index.html +++ b/docs/learn-proxies/index.html @@ -15,7 +15,7 @@ - + @@ -96,7 +96,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/index.html b/docs/learn-runtime-upgrades/index.html index 291a85bb0b..eee179d92b 100644 --- a/docs/learn-runtime-upgrades/index.html +++ b/docs/learn-runtime-upgrades/index.html @@ -15,7 +15,7 @@ - + @@ -97,7 +97,7 @@ will be enacted.
  • referenda (Rejected) indicates that index's referenda has been rejected and will not be enacted.
  • Once the enactment period is over, 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/index.html b/docs/learn-sassafras/index.html index 275eadbb89..531d7da34b 100644 --- a/docs/learn-sassafras/index.html +++ b/docs/learn-sassafras/index.html @@ -15,7 +15,7 @@ - + @@ -27,7 +27,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/index.html b/docs/learn-scams/index.html index b40b55dfcd..d8b8407f2d 100644 --- a/docs/learn-scams/index.html +++ b/docs/learn-scams/index.html @@ -15,7 +15,7 @@ - + @@ -84,7 +84,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/index.html b/docs/learn-spree/index.html index cfae23f2ab..27fba17225 100644 --- a/docs/learn-spree/index.html +++ b/docs/learn-spree/index.html @@ -15,7 +15,7 @@ - + @@ -74,7 +74,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/index.html b/docs/learn-staking-advanced/index.html index 1e09e5f961..50998ad0b6 100644 --- a/docs/learn-staking-advanced/index.html +++ b/docs/learn-staking-advanced/index.html @@ -15,7 +15,7 @@ - + @@ -309,7 +309,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/index.html b/docs/learn-staking-index/index.html index bd846e9016..4aa5098599 100644 --- a/docs/learn-staking-index/index.html +++ b/docs/learn-staking-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-staking/index.html b/docs/learn-staking/index.html index 6df71aba5d..c20e41a6e7 100644 --- a/docs/learn-staking/index.html +++ b/docs/learn-staking/index.html @@ -15,7 +15,7 @@ - + @@ -369,7 +369,7 @@ 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/index.html b/docs/learn-system-chains/index.html index bfe1203950..3fbde200a1 100644 --- a/docs/learn-system-chains/index.html +++ b/docs/learn-system-chains/index.html @@ -15,7 +15,7 @@ - + @@ -83,7 +83,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/index.html b/docs/learn-teleport/index.html index 1451f1be56..930918fffa 100644 --- a/docs/learn-teleport/index.html +++ b/docs/learn-teleport/index.html @@ -15,7 +15,7 @@ - + @@ -44,7 +44,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/index.html b/docs/learn-transaction-fees/index.html index 2880398954..2d4eee7848 100644 --- a/docs/learn-transaction-fees/index.html +++ b/docs/learn-transaction-fees/index.html @@ -15,7 +15,7 @@ - + @@ -95,7 +95,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/index.html b/docs/learn-transactions/index.html index 18976da79f..c5ea871d56 100644 --- a/docs/learn-transactions/index.html +++ b/docs/learn-transactions/index.html @@ -15,7 +15,7 @@ - + @@ -95,7 +95,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/index.html b/docs/learn-validator/index.html index cd201d2e3d..83430cd670 100644 --- a/docs/learn-validator/index.html +++ b/docs/learn-validator/index.html @@ -15,7 +15,7 @@ - + @@ -91,7 +91,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/index.html b/docs/learn-video-tutorials/index.html index 55d54551fc..199dcef211 100644 --- a/docs/learn-video-tutorials/index.html +++ b/docs/learn-video-tutorials/index.html @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + \ No newline at end of file diff --git a/docs/learn-wasm/index.html b/docs/learn-wasm/index.html index 4caf1b9082..44497ec67d 100644 --- a/docs/learn-wasm/index.html +++ b/docs/learn-wasm/index.html @@ -15,7 +15,7 @@ - + @@ -31,7 +31,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/index.html b/docs/learn-xcm-index/index.html index f7f4ccaadc..3f11da5ba3 100644 --- a/docs/learn-xcm-index/index.html +++ b/docs/learn-xcm-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-xcm-instructions/index.html b/docs/learn-xcm-instructions/index.html index 8262722504..bcc4a0c1e3 100644 --- a/docs/learn-xcm-instructions/index.html +++ b/docs/learn-xcm-instructions/index.html @@ -15,7 +15,7 @@ - + @@ -33,7 +33,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/index.html b/docs/learn-xcm-pallet/index.html index edab79d72e..a153ff6e53 100644 --- a/docs/learn-xcm-pallet/index.html +++ b/docs/learn-xcm-pallet/index.html @@ -15,7 +15,7 @@ - + @@ -83,7 +83,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/index.html b/docs/learn-xcm-transport/index.html index af80e470cf..5aa8fb06c9 100644 --- a/docs/learn-xcm-transport/index.html +++ b/docs/learn-xcm-transport/index.html @@ -15,7 +15,7 @@ - + @@ -65,7 +65,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/index.html b/docs/learn-xcm-usecases/index.html index b415fbff2d..275140e51e 100644 --- a/docs/learn-xcm-usecases/index.html +++ b/docs/learn-xcm-usecases/index.html @@ -15,7 +15,7 @@ - + @@ -42,7 +42,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/index.html b/docs/learn-xcm/index.html index 71beeffd26..561924ca43 100644 --- a/docs/learn-xcm/index.html +++ b/docs/learn-xcm/index.html @@ -15,7 +15,7 @@ - + @@ -88,7 +88,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/index.html b/docs/learn-xcvm/index.html index 987576bd73..ddc8831f1f 100644 --- a/docs/learn-xcvm/index.html +++ b/docs/learn-xcvm/index.html @@ -15,7 +15,7 @@ - + @@ -106,7 +106,7 @@ a MultiLocation.

    Simulating XCVM using the xcm-simulator

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

    - + \ No newline at end of file diff --git a/docs/learn/learn-controller/index.html b/docs/learn/learn-controller/index.html index 004ba51910..6f07a75cd8 100644 --- a/docs/learn/learn-controller/index.html +++ b/docs/learn/learn-controller/index.html @@ -15,7 +15,7 @@ - + @@ -37,7 +37,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/index.html b/docs/learn/learn-governance/index.html index b7f8fec072..ad28cc94b7 100644 --- a/docs/learn/learn-governance/index.html +++ b/docs/learn/learn-governance/index.html @@ -15,7 +15,7 @@ - + @@ -229,7 +229,7 @@ case for why the change should be made.

    Resources

    - + \ No newline at end of file diff --git a/docs/learn/learn-launch/index.html b/docs/learn/learn-launch/index.html index 5b33c160c5..97a423a4cf 100644 --- a/docs/learn/learn-launch/index.html +++ b/docs/learn/learn-launch/index.html @@ -15,7 +15,7 @@ - + @@ -42,7 +42,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/index.html b/docs/learn/learn-redenomination/index.html index 3c8635d87b..046bf555a0 100644 --- a/docs/learn/learn-redenomination/index.html +++ b/docs/learn/learn-redenomination/index.html @@ -15,7 +15,7 @@ - + @@ -80,7 +80,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/index.html b/docs/learn/learn-treasury/index.html index d26393ec16..27457bbaa1 100644 --- a/docs/learn/learn-treasury/index.html +++ b/docs/learn/learn-treasury/index.html @@ -15,7 +15,7 @@ - + @@ -160,7 +160,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/config-deep-dive/index.html b/docs/learn/xcm/config-deep-dive/index.html index 71f5ed28c3..5f513159aa 100644 --- a/docs/learn/xcm/config-deep-dive/index.html +++ b/docs/learn/xcm/config-deep-dive/index.html @@ -15,7 +15,7 @@ - + @@ -128,7 +128,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/index.html b/docs/learn/xcm/fundamentals-fees/index.html index 6550ff5bb0..49decc4455 100644 --- a/docs/learn/xcm/fundamentals-fees/index.html +++ b/docs/learn/xcm/fundamentals-fees/index.html @@ -15,7 +15,7 @@ - + @@ -52,7 +52,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/index.html b/docs/learn/xcm/fundamentals-multiasset/index.html index ae1953a539..881071b978 100644 --- a/docs/learn/xcm/fundamentals-multiasset/index.html +++ b/docs/learn/xcm/fundamentals-multiasset/index.html @@ -15,7 +15,7 @@ - + @@ -52,7 +52,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/index.html b/docs/learn/xcm/fundamentals-summary/index.html index fae5d6b834..953f264d36 100644 --- a/docs/learn/xcm/fundamentals-summary/index.html +++ b/docs/learn/xcm/fundamentals-summary/index.html @@ -15,14 +15,14 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals-xcvm/index.html b/docs/learn/xcm/fundamentals-xcvm/index.html index 46e67b4c75..ed90d1e8bd 100644 --- a/docs/learn/xcm/fundamentals-xcvm/index.html +++ b/docs/learn/xcm/fundamentals-xcvm/index.html @@ -15,13 +15,13 @@ - +
    - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals/index.html b/docs/learn/xcm/fundamentals/index.html index bd40cbb7ca..73125e2b34 100644 --- a/docs/learn/xcm/fundamentals/index.html +++ b/docs/learn/xcm/fundamentals/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals/multilocation-example/index.html b/docs/learn/xcm/fundamentals/multilocation-example/index.html index f1383b3678..8c8e5f252b 100644 --- a/docs/learn/xcm/fundamentals/multilocation-example/index.html +++ b/docs/learn/xcm/fundamentals/multilocation-example/index.html @@ -15,14 +15,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/index.html b/docs/learn/xcm/fundamentals/multilocation-junctions/index.html index 4d5357704b..90fc213b58 100644 --- a/docs/learn/xcm/fundamentals/multilocation-junctions/index.html +++ b/docs/learn/xcm/fundamentals/multilocation-junctions/index.html @@ -15,7 +15,7 @@ - + @@ -55,7 +55,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/index.html b/docs/learn/xcm/fundamentals/multilocation-summary/index.html index b9e8b72545..7b517d1bc4 100644 --- a/docs/learn/xcm/fundamentals/multilocation-summary/index.html +++ b/docs/learn/xcm/fundamentals/multilocation-summary/index.html @@ -15,7 +15,7 @@ - + @@ -50,7 +50,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/index.html b/docs/learn/xcm/fundamentals/multilocation/index.html index e379bb9a0f..02772abddb 100644 --- a/docs/learn/xcm/fundamentals/multilocation/index.html +++ b/docs/learn/xcm/fundamentals/multilocation/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/index.html b/docs/learn/xcm/index.html index 6789c68d26..76c2c9cc12 100644 --- a/docs/learn/xcm/index.html +++ b/docs/learn/xcm/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/introduction/index.html b/docs/learn/xcm/introduction/index.html index e31a2b341f..4858a8e67c 100644 --- a/docs/learn/xcm/introduction/index.html +++ b/docs/learn/xcm/introduction/index.html @@ -15,7 +15,7 @@ - + @@ -31,7 +31,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/index.html b/docs/learn/xcm/journey-assets/index.html index 13ddcc9b46..a969c53726 100644 --- a/docs/learn/xcm/journey-assets/index.html +++ b/docs/learn/xcm/journey-assets/index.html @@ -15,7 +15,7 @@ - + @@ -38,7 +38,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/index.html b/docs/learn/xcm/journey-channels/index.html index 30d5720d9f..d9bd9b0ca9 100644 --- a/docs/learn/xcm/journey-channels/index.html +++ b/docs/learn/xcm/journey-channels/index.html @@ -15,7 +15,7 @@ - + @@ -47,7 +47,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/index.html b/docs/learn/xcm/journey-expectations/index.html index e432643d4a..ac7fce8072 100644 --- a/docs/learn/xcm/journey-expectations/index.html +++ b/docs/learn/xcm/journey-expectations/index.html @@ -15,7 +15,7 @@ - + @@ -40,7 +40,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/index.html b/docs/learn/xcm/journey-fees/index.html index 4e5fa42746..26ab039762 100644 --- a/docs/learn/xcm/journey-fees/index.html +++ b/docs/learn/xcm/journey-fees/index.html @@ -15,7 +15,7 @@ - + @@ -58,7 +58,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/index.html b/docs/learn/xcm/journey-holding/index.html index 2ad2816548..4ca56fbe4e 100644 --- a/docs/learn/xcm/journey-holding/index.html +++ b/docs/learn/xcm/journey-holding/index.html @@ -15,7 +15,7 @@ - + @@ -43,7 +43,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/index.html b/docs/learn/xcm/journey-locks/index.html index 1e43e232a3..fc65bc5638 100644 --- a/docs/learn/xcm/journey-locks/index.html +++ b/docs/learn/xcm/journey-locks/index.html @@ -15,7 +15,7 @@ - + @@ -51,7 +51,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/index.html b/docs/learn/xcm/journey-origin/index.html index 22569a6422..99d90d5ad3 100644 --- a/docs/learn/xcm/journey-origin/index.html +++ b/docs/learn/xcm/journey-origin/index.html @@ -15,7 +15,7 @@ - + @@ -43,7 +43,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/index.html b/docs/learn/xcm/journey-queries/index.html index 02404064aa..e896678d43 100644 --- a/docs/learn/xcm/journey-queries/index.html +++ b/docs/learn/xcm/journey-queries/index.html @@ -15,7 +15,7 @@ - + @@ -47,7 +47,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/index.html b/docs/learn/xcm/journey-register/index.html index 46b6d542e3..3f5c4f067c 100644 --- a/docs/learn/xcm/journey-register/index.html +++ b/docs/learn/xcm/journey-register/index.html @@ -15,7 +15,7 @@ - + @@ -29,7 +29,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/index.html b/docs/learn/xcm/journey-summary/index.html index a42af93f55..3268e7c547 100644 --- a/docs/learn/xcm/journey-summary/index.html +++ b/docs/learn/xcm/journey-summary/index.html @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-transact/index.html b/docs/learn/xcm/journey-transact/index.html index de733d1921..b423080cb6 100644 --- a/docs/learn/xcm/journey-transact/index.html +++ b/docs/learn/xcm/journey-transact/index.html @@ -15,7 +15,7 @@ - + @@ -46,7 +46,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/index.html b/docs/learn/xcm/journey-version/index.html index f5e741f0ba..9333cd42cc 100644 --- a/docs/learn/xcm/journey-version/index.html +++ b/docs/learn/xcm/journey-version/index.html @@ -15,7 +15,7 @@ - + @@ -31,7 +31,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/index.html b/docs/learn/xcm/journey/index.html index 6603e67803..bf35716fbf 100644 --- a/docs/learn/xcm/journey/index.html +++ b/docs/learn/xcm/journey/index.html @@ -15,13 +15,13 @@ - +
    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey/transfers-reserve/index.html b/docs/learn/xcm/journey/transfers-reserve/index.html index f89a2113e4..aab2607f39 100644 --- a/docs/learn/xcm/journey/transfers-reserve/index.html +++ b/docs/learn/xcm/journey/transfers-reserve/index.html @@ -15,7 +15,7 @@ - + @@ -69,7 +69,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/index.html b/docs/learn/xcm/journey/transfers-summary/index.html index f26eead0b9..cc3e540460 100644 --- a/docs/learn/xcm/journey/transfers-summary/index.html +++ b/docs/learn/xcm/journey/transfers-summary/index.html @@ -15,7 +15,7 @@ - + @@ -38,7 +38,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/index.html b/docs/learn/xcm/journey/transfers-teleport/index.html index 31cffc2b81..0ecfb83f5f 100644 --- a/docs/learn/xcm/journey/transfers-teleport/index.html +++ b/docs/learn/xcm/journey/transfers-teleport/index.html @@ -15,7 +15,7 @@ - + @@ -57,7 +57,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/index.html b/docs/learn/xcm/journey/transfers/index.html index 9cd1c931db..66217e8e4f 100644 --- a/docs/learn/xcm/journey/transfers/index.html +++ b/docs/learn/xcm/journey/transfers/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/overview-architecture/index.html b/docs/learn/xcm/overview-architecture/index.html index ac6ce8b6e0..53325423ac 100644 --- a/docs/learn/xcm/overview-architecture/index.html +++ b/docs/learn/xcm/overview-architecture/index.html @@ -15,7 +15,7 @@ - + @@ -44,7 +44,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/index.html b/docs/learn/xcm/overview-format/index.html index ec05fc4008..195d087830 100644 --- a/docs/learn/xcm/overview-format/index.html +++ b/docs/learn/xcm/overview-format/index.html @@ -15,7 +15,7 @@ - + @@ -34,7 +34,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/index.html b/docs/learn/xcm/overview-intro/index.html index 1d7a2210d5..301ad4e47c 100644 --- a/docs/learn/xcm/overview-intro/index.html +++ b/docs/learn/xcm/overview-intro/index.html @@ -15,7 +15,7 @@ - + @@ -37,7 +37,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/index.html b/docs/learn/xcm/overview-summary/index.html index 2347b58c2a..44ba6c926c 100644 --- a/docs/learn/xcm/overview-summary/index.html +++ b/docs/learn/xcm/overview-summary/index.html @@ -15,7 +15,7 @@ - + @@ -28,7 +28,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/index.html b/docs/learn/xcm/overview-xcvm/index.html index 646a0006f3..f250fab9d5 100644 --- a/docs/learn/xcm/overview-xcvm/index.html +++ b/docs/learn/xcm/overview-xcvm/index.html @@ -15,7 +15,7 @@ - + @@ -37,7 +37,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/index.html b/docs/learn/xcm/overview/index.html index 0ebf13bc6b..bb6ff766ed 100644 --- a/docs/learn/xcm/overview/index.html +++ b/docs/learn/xcm/overview/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/quickstart-first-look/index.html b/docs/learn/xcm/quickstart-first-look/index.html index 3fb1b5176c..39dd090f91 100644 --- a/docs/learn/xcm/quickstart-first-look/index.html +++ b/docs/learn/xcm/quickstart-first-look/index.html @@ -15,7 +15,7 @@ - + @@ -47,7 +47,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/index.html b/docs/learn/xcm/quickstart-simulator/index.html index 798c7d706b..9f5720afcd 100644 --- a/docs/learn/xcm/quickstart-simulator/index.html +++ b/docs/learn/xcm/quickstart-simulator/index.html @@ -15,7 +15,7 @@ - + @@ -27,7 +27,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/index.html b/docs/learn/xcm/quickstart-summary/index.html index 1707ce97b5..ad87e2d5bf 100644 --- a/docs/learn/xcm/quickstart-summary/index.html +++ b/docs/learn/xcm/quickstart-summary/index.html @@ -15,7 +15,7 @@ - + @@ -25,7 +25,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/index.html b/docs/learn/xcm/quickstart/index.html index 01b0b28011..d84921c7ee 100644 --- a/docs/learn/xcm/quickstart/index.html +++ b/docs/learn/xcm/quickstart/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/reference-glossary/index.html b/docs/learn/xcm/reference-glossary/index.html index a7ee106709..6b48a1d815 100644 --- a/docs/learn/xcm/reference-glossary/index.html +++ b/docs/learn/xcm/reference-glossary/index.html @@ -15,7 +15,7 @@ - + @@ -40,7 +40,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/index.html b/docs/learn/xcm/reference-xcvm-registers/index.html index 61e2a9d822..fa4c2ea771 100644 --- a/docs/learn/xcm/reference-xcvm-registers/index.html +++ b/docs/learn/xcm/reference-xcvm-registers/index.html @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@
    - + \ No newline at end of file diff --git a/docs/learn/xcm/references/index.html b/docs/learn/xcm/references/index.html index 8f00413714..b246ed26ca 100644 --- a/docs/learn/xcm/references/index.html +++ b/docs/learn/xcm/references/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/testing/index.html b/docs/learn/xcm/testing/index.html index 78be954bc0..b3c83e274a 100644 --- a/docs/learn/xcm/testing/index.html +++ b/docs/learn/xcm/testing/index.html @@ -15,7 +15,7 @@ - + @@ -35,7 +35,7 @@ messaging infrastructure as live networks, as the transport mechanism is being mocked out. Also, consensus related events are not tested, like disputes, staking and iamonline events. To test for these events, parachains can use E2E tests.

    End-to-End testing

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

    - + \ No newline at end of file diff --git a/docs/ledger/index.html b/docs/ledger/index.html index b16e70b8ba..1eb9228816 100644 --- a/docs/ledger/index.html +++ b/docs/ledger/index.html @@ -15,7 +15,7 @@ - + @@ -77,7 +77,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/index.html b/docs/maintain-archive/index.html index 5df300f309..0fa7295f83 100644 --- a/docs/maintain-archive/index.html +++ b/docs/maintain-archive/index.html @@ -15,14 +15,14 @@ - + - + \ No newline at end of file diff --git a/docs/maintain-bootnode/index.html b/docs/maintain-bootnode/index.html index 51378184aa..ab6e26c32b 100644 --- a/docs/maintain-bootnode/index.html +++ b/docs/maintain-bootnode/index.html @@ -15,7 +15,7 @@ - + @@ -37,7 +37,7 @@ port 30311:

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

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

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

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

    }

    Testing Bootnode Connection

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

    tip

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

    p2p:

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

    p2p/ws:

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

    p2p/wss:

    polkadot --chain polkadot --base-path /tmp/node --name "Bootnode testnode" --reserved-only --reserved-nodes "/dns/dot-bootnode.stakeworld.io/tcp/30312/wss/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg" --no-hardware-benchmarks
    - + \ No newline at end of file diff --git a/docs/maintain-endpoints/index.html b/docs/maintain-endpoints/index.html index 46a53f6da8..01286b35df 100644 --- a/docs/maintain-endpoints/index.html +++ b/docs/maintain-endpoints/index.html @@ -15,7 +15,7 @@ - + @@ -36,7 +36,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/index.html b/docs/maintain-errors/index.html index 9a9f89934f..74e0b09498 100644 --- a/docs/maintain-errors/index.html +++ b/docs/maintain-errors/index.html @@ -15,7 +15,7 @@ - + @@ -46,7 +46,7 @@ will wait to be executed at the correct place in the nonce sequence OR it will get discarded due to some other error (ex. the validity period expires).*

    Error Table

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

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

    - + \ No newline at end of file diff --git a/docs/maintain-guides-avoid-slashing/index.html b/docs/maintain-guides-avoid-slashing/index.html index 8a39ed024c..fc0c529d84 100644 --- a/docs/maintain-guides-avoid-slashing/index.html +++ b/docs/maintain-guides-avoid-slashing/index.html @@ -15,7 +15,7 @@ - + @@ -64,7 +64,7 @@ obtain pristine binaries or source code and to ensure the security of their node:

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

    Examples

    NetworkEraEvent TypeDetailsAction Taken
    Polkadot774Small EquivocationThe validator migrated servers and cloned the keystore folder. The on-chain event can be viewed here.The validator did not submit a request for the slash to be canceled.
    Kusama3329Small EquivocationThe validator operated a test machine with cloned keys; the test machine was online at the same time as the primary, which resulted in a slash. Details can be found here.The validator requested a cancellation of the slash, but the council declined.
    Kusama3995Small EquivocationThe validator noticed several errors, after which the client crashed, and a slash was applied. The validator recorded all events and opened GitHub issues to allow for technical opinions to be shared. Details can be found here.The validator requested to cancel the slash. The council approved the request as they believed the error was not operator related.
    Kusama4543Medium UnresponsivenessA large amount of disputes flooded the network resulting in an application fault. The fault caused the client software to hang and as a result ~197 unique validators become unresponsive. Further details can be found here.The pending slash was cancelled and with runtime 9350 all lost nominations were restored. The application bug was addressed with client version 0.9.36
    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-chill/index.html b/docs/maintain-guides-how-to-chill/index.html index c9eed79e47..3f247a5926 100644 --- a/docs/maintain-guides-how-to-chill/index.html +++ b/docs/maintain-guides-how-to-chill/index.html @@ -15,7 +15,7 @@ - + @@ -75,7 +75,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/index.html b/docs/maintain-guides-how-to-monitor-your-node/index.html index 3787be2cf8..7e3d6d2496 100644 --- a/docs/maintain-guides-how-to-monitor-your-node/index.html +++ b/docs/maintain-guides-how-to-monitor-your-node/index.html @@ -15,7 +15,7 @@ - + @@ -79,7 +79,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/index.html b/docs/maintain-guides-how-to-stop-validating/index.html index 31424bf093..b942770852 100644 --- a/docs/maintain-guides-how-to-stop-validating/index.html +++ b/docs/maintain-guides-how-to-stop-validating/index.html @@ -15,7 +15,7 @@ - + @@ -36,7 +36,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/index.html b/docs/maintain-guides-how-to-systemd/index.html index 2e35359d59..05b6513a2c 100644 --- a/docs/maintain-guides-how-to-systemd/index.html +++ b/docs/maintain-guides-how-to-systemd/index.html @@ -15,7 +15,7 @@ - + @@ -28,7 +28,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/index.html b/docs/maintain-guides-how-to-upgrade/index.html index 588c3774de..f6867844c0 100644 --- a/docs/maintain-guides-how-to-upgrade/index.html +++ b/docs/maintain-guides-how-to-upgrade/index.html @@ -15,7 +15,7 @@ - + @@ -46,7 +46,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/index.html b/docs/maintain-guides-how-to-validate-kusama/index.html index a96951c2a0..b1c1f24c03 100644 --- a/docs/maintain-guides-how-to-validate-kusama/index.html +++ b/docs/maintain-guides-how-to-validate-kusama/index.html @@ -15,7 +15,7 @@ - + @@ -64,7 +64,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/index.html b/docs/maintain-guides-how-to-validate-polkadot/index.html index c64310dd02..996faf0616 100644 --- a/docs/maintain-guides-how-to-validate-polkadot/index.html +++ b/docs/maintain-guides-how-to-validate-polkadot/index.html @@ -15,7 +15,7 @@ - + @@ -266,7 +266,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/index.html b/docs/maintain-guides-secure-validator/index.html index d0caad92b1..ebd917a243 100644 --- a/docs/maintain-guides-secure-validator/index.html +++ b/docs/maintain-guides-secure-validator/index.html @@ -15,7 +15,7 @@ - + @@ -65,7 +65,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/index.html b/docs/maintain-guides-society-kusama/index.html index d932c87993..6d11683691 100644 --- a/docs/maintain-guides-society-kusama/index.html +++ b/docs/maintain-guides-society-kusama/index.html @@ -15,7 +15,7 @@ - + @@ -40,13 +40,13 @@ first. And since those rules are not enforced entirely on-chain, it is recommended to join the Kappa Sigma Mu Lounge to ask any questions if anything is unclear.

    1. Bid Phase

    To submit a bid, click the Submit Bid button on the -Society page.

    Anyone can submit a bid to join the society by reserving a deposit or finding an existing member to +Society page.

    Anyone can submit a bid to join the society by reserving a deposit or finding an existing member to create a bid on their behalf by vouching for them. At every rotation period, as many bids as the society pot can support will be selected. The selected bids will be moved to the candidate phase, whereas bids that were not selected will stay in the bidder pool until they are selected or a user chooses to unbid.

    Anyone who wants to join the society is required to deposit 1.6 KSM for reserve on Kusama and declare the bid amount (1 KSM in this case) that they will receive for joining the society.

    test_bid

    Once you have submitted the transaction, your bid will be shown on the -Society page under the bids section. You can +Society page under the bids section. You can cancel the bidding if you changed your mind about joining the society by calling unbid on the same page.

    You can find an existing member to place a bid on your behalf if you do not have KSM and you are willing to give them a tip. An existing member can submit a vouch transaction through the @@ -88,8 +88,8 @@ hexadecimal string. In order to see the rules in human-readable format, you can convert it. In the 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.

    - +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/index.html b/docs/maintain-guides-validator-community/index.html index 84f052aa19..a9060e1dbf 100644 --- a/docs/maintain-guides-validator-community/index.html +++ b/docs/maintain-guides-validator-community/index.html @@ -15,7 +15,7 @@ - + @@ -159,7 +159,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/index.html b/docs/maintain-guides-validator-payout/index.html index ebe401f0a7..989bca7f93 100644 --- a/docs/maintain-guides-validator-payout/index.html +++ b/docs/maintain-guides-validator-payout/index.html @@ -15,7 +15,7 @@ - + @@ -105,7 +105,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/index.html b/docs/maintain-index/index.html index 4e3aefbf7a..518c54adc2 100644 --- a/docs/maintain-index/index.html +++ b/docs/maintain-index/index.html @@ -15,7 +15,7 @@ - + @@ -25,7 +25,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/index.html b/docs/maintain-networks/index.html index b6a8cf6972..bae9ce94ca 100644 --- a/docs/maintain-networks/index.html +++ b/docs/maintain-networks/index.html @@ -15,7 +15,7 @@ - + @@ -50,7 +50,7 @@ the public Telemetry service.

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

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

    - + \ No newline at end of file diff --git a/docs/maintain-polkadot-parameters/index.html b/docs/maintain-polkadot-parameters/index.html index a1a6c7dcb0..f37a26f344 100644 --- a/docs/maintain-polkadot-parameters/index.html +++ b/docs/maintain-polkadot-parameters/index.html @@ -15,7 +15,7 @@ - + @@ -35,7 +35,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/index.html b/docs/maintain-rpc/index.html index 1242febb01..a13d96953d 100644 --- a/docs/maintain-rpc/index.html +++ b/docs/maintain-rpc/index.html @@ -15,7 +15,7 @@ - + @@ -50,7 +50,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/index.html b/docs/maintain-sync/index.html index 7cf9ed35b4..513df8083f 100644 --- a/docs/maintain-sync/index.html +++ b/docs/maintain-sync/index.html @@ -15,7 +15,7 @@ - + @@ -86,7 +86,7 @@ on localhost by default. If you would like to connect to your node's services (rpc, and prometheus) you need to ensure that you run you node with the --rpc-external, and --prometheus-external commands.

    docker run -p 9944:9944 -p 9615:9615 parity/polkadot:v0.9.13 --name "calling_home_from_a_docker_container" --rpc-external --prometheus-external
    - + \ No newline at end of file diff --git a/docs/maintain-wss/index.html b/docs/maintain-wss/index.html index 9b804bfc62..e0d87e3bd6 100644 --- a/docs/maintain-wss/index.html +++ b/docs/maintain-wss/index.html @@ -15,7 +15,7 @@ - + @@ -39,7 +39,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/index.html b/docs/maintain/maintain-guides-democracy/index.html index a611092c0d..f9af2f3545 100644 --- a/docs/maintain/maintain-guides-democracy/index.html +++ b/docs/maintain/maintain-guides-democracy/index.html @@ -15,7 +15,7 @@ - + @@ -156,7 +156,7 @@ a decimal integer. The bitfield stores both the conviction and aye/nay boolean, where the boolean is represented using the MSB of the byte. This would mean that the grouping of the 7 remaining bits is used to store the conviction.

    - + \ No newline at end of file diff --git a/docs/maintain/maintain-guides-how-to-join-council/index.html b/docs/maintain/maintain-guides-how-to-join-council/index.html index 17f7e20b9e..56168ad76a 100644 --- a/docs/maintain/maintain-guides-how-to-join-council/index.html +++ b/docs/maintain/maintain-guides-how-to-join-council/index.html @@ -15,7 +15,7 @@ - + @@ -40,7 +40,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/index.html b/docs/maintain/maintain-guides-how-to-vote-councillor/index.html index 577e5df76c..6541060b7a 100644 --- a/docs/maintain/maintain-guides-how-to-vote-councillor/index.html +++ b/docs/maintain/maintain-guides-how-to-vote-councillor/index.html @@ -15,7 +15,7 @@ - + @@ -43,7 +43,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/index.html b/docs/metadata/index.html index 861069dfc5..7a0f2966fc 100644 --- a/docs/metadata/index.html +++ b/docs/metadata/index.html @@ -15,7 +15,7 @@ - + @@ -25,7 +25,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/index.html b/docs/multisig-apps/index.html index 19b8676104..a54bc62944 100644 --- a/docs/multisig-apps/index.html +++ b/docs/multisig-apps/index.html @@ -15,7 +15,7 @@ - + @@ -50,7 +50,7 @@ multisig identities. Mimir currently supports integration with applications like Polkadot.js and is planning to expand to others.
  • User-Friendly Interface: Designed for ease of use, making complex multisig operations more accessible.
  • - + \ No newline at end of file diff --git a/docs/parachains-apps/index.html b/docs/parachains-apps/index.html index 51e2c6422a..dbe1ebd20a 100644 --- a/docs/parachains-apps/index.html +++ b/docs/parachains-apps/index.html @@ -15,7 +15,7 @@ - + @@ -94,7 +94,7 @@ tokens (LST) “vTokens”, as well as remote exchange, and swapping of vTokens from any chain. The DApp aims to simplify the cross-chain experience by providing a seamless interface for users to interact with vTokens across different chains natively.

    - + \ No newline at end of file diff --git a/docs/polkadot-direction/index.html b/docs/polkadot-direction/index.html index 0b309713fb..a91ae6ba82 100644 --- a/docs/polkadot-direction/index.html +++ b/docs/polkadot-direction/index.html @@ -15,7 +15,7 @@ - + @@ -136,7 +136,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/index.html b/docs/polkadot-v1/index.html index a82c32e8b0..61da6c0c91 100644 --- a/docs/polkadot-v1/index.html +++ b/docs/polkadot-v1/index.html @@ -15,7 +15,7 @@ - + @@ -105,7 +105,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/index.html b/docs/polkadot-vault/index.html index 5313f74086..dc2a8f510e 100644 --- a/docs/polkadot-vault/index.html +++ b/docs/polkadot-vault/index.html @@ -15,7 +15,7 @@ - + @@ -81,7 +81,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/index.html b/docs/polkadot-vision-index/index.html index 67289acdad..9c4072154a 100644 --- a/docs/polkadot-vision-index/index.html +++ b/docs/polkadot-vision-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/polkadotjs-ui/index.html b/docs/polkadotjs-ui/index.html index 6f1e2bb144..198ee5aea4 100644 --- a/docs/polkadotjs-ui/index.html +++ b/docs/polkadotjs-ui/index.html @@ -15,7 +15,7 @@ - + @@ -69,7 +69,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/index.html b/docs/polkadotjs/index.html index 2c9cb8cdfb..a69005c248 100644 --- a/docs/polkadotjs/index.html +++ b/docs/polkadotjs/index.html @@ -15,7 +15,7 @@ - + @@ -90,7 +90,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/index.html b/docs/programs-index/index.html index 6668793b4c..ebabc27ffd 100644 --- a/docs/programs-index/index.html +++ b/docs/programs-index/index.html @@ -15,13 +15,13 @@ - +
    - + \ No newline at end of file diff --git a/docs/research/index.html b/docs/research/index.html index e272d29c4b..bedbf575c2 100644 --- a/docs/research/index.html +++ b/docs/research/index.html @@ -15,7 +15,7 @@ - + @@ -50,7 +50,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/index.html b/docs/staking-apps/index.html index 54ef33f85d..34e21c205b 100644 --- a/docs/staking-apps/index.html +++ b/docs/staking-apps/index.html @@ -15,7 +15,7 @@ - + @@ -46,7 +46,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/index.html b/docs/staking-dashboard/index.html index 64ccbfaf63..f24b995bbb 100644 --- a/docs/staking-dashboard/index.html +++ b/docs/staking-dashboard/index.html @@ -15,7 +15,7 @@ - + @@ -158,7 +158,7 @@ feature request. We take your feedback seriously, do not hesitate to contact us.

    Network

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

    - + \ No newline at end of file diff --git a/docs/start-building/index.html b/docs/start-building/index.html index 7e537a6c50..0c72e9c016 100644 --- a/docs/start-building/index.html +++ b/docs/start-building/index.html @@ -15,7 +15,7 @@ - + @@ -48,7 +48,7 @@ this Medium article and the original Polkadot Forum post.

    - + \ No newline at end of file diff --git a/docs/stay-safe-index/index.html b/docs/stay-safe-index/index.html index b61e2bc747..5d930c256b 100644 --- a/docs/stay-safe-index/index.html +++ b/docs/stay-safe-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/thousand-contributors/index.html b/docs/thousand-contributors/index.html index 9f5610e452..709f7972aa 100644 --- a/docs/thousand-contributors/index.html +++ b/docs/thousand-contributors/index.html @@ -15,7 +15,7 @@ - + @@ -31,7 +31,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/index.html b/docs/thousand-validators/index.html index 72b4607eeb..32132f3a41 100644 --- a/docs/thousand-validators/index.html +++ b/docs/thousand-validators/index.html @@ -15,7 +15,7 @@ - + @@ -81,7 +81,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
    Main 1KV sitegithubMain site and 1KV backend.
    SubVT telegram bot for polkadot and kusamagithubTelegram bot with overviews and alerts for various polkadot and kusama related events, including 1KV events.
    SubVT ios and android appgithubSubVT app version for mobile phones.
    Validator earnings overviewgithubOverview of validators' earnings.
    Math Crypto's Insightsgithub1KV-oriented scoring overview of Kusama and Polkadot.
    One-T for polkadot and kusamagithubA performance report bot for the Polkadot and Kusama network with special focus on the 1KV programme.
    One-T parachains overviewgithubOne-T's parachain overview.
    Metaspan's 1KV overviewgithubOverview of 1KV programme, including the newly introduced endpoints, see here for available endpoints.
    Decentradot's 1KV overviewgithubOverview of the 1KV programme, including the newly introduced endpoints.
    Hirish 1KV overviewgithub?Overview of the 1KV Programme.
    - + \ No newline at end of file diff --git a/docs/transaction-attacks/index.html b/docs/transaction-attacks/index.html index a674a812da..cc9a7085ec 100644 --- a/docs/transaction-attacks/index.html +++ b/docs/transaction-attacks/index.html @@ -15,7 +15,7 @@ - + @@ -62,7 +62,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/index.html b/docs/wallets-and-extensions/index.html index 17698c888d..34af0a5058 100644 --- a/docs/wallets-and-extensions/index.html +++ b/docs/wallets-and-extensions/index.html @@ -15,7 +15,7 @@ - + @@ -89,7 +89,7 @@ your accounts on over 150+ Substrate and EVM networks. NFT Management, ledger Support, fiat On-ramp, portfolio tracking. Talisman received funding from Polkadot Treasury [1].

    - + \ No newline at end of file diff --git a/docs/wallets-index/index.html b/docs/wallets-index/index.html index bd70397485..c4dd26a701 100644 --- a/docs/wallets-index/index.html +++ b/docs/wallets-index/index.html @@ -15,13 +15,13 @@ - + - + \ No newline at end of file diff --git a/docs/web3-and-polkadot/index.html b/docs/web3-and-polkadot/index.html index d02488fb7a..af583cab39 100644 --- a/docs/web3-and-polkadot/index.html +++ b/docs/web3-and-polkadot/index.html @@ -15,7 +15,7 @@ - + @@ -149,7 +149,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 c255d9e766..fa3e0c6e0a 100644 --- a/index.html +++ b/index.html @@ -15,13 +15,13 @@ - +

    Kusama is an early release of Polkadot: a scalable, multichain network for radical innovation. Kusama serves as a proving ground that allows teams and developers to build and deploy a parachain, and experiment with Polkadot’s governance and NPoS functionality in a real environment.

    Join the chaos.

    Become a Nominator

    Help maintain the network by participating as a nominator. Nomination is the process of staking your tokens behind a validator to support and secure the network. As a result, nominators are rewarded from the block production rewards that their nominatations are entitled to.

    Become a Validator

    The minimum requirement for staking as a validator on Kusama is much lower than it is expected for Polkadot. There are also programs in place such as Thousand Validators to help community validators rise the ranks.


    Deploy Parachains

    Kusama Parachains are live. Chaos has been welcomed and continues with no promises. The path of Kusama deployment is paving the way to Polkadot's parachains as the technology becomes proven.

    Explore the Politics

    Learn about Kusama's on-chain governance. Campaign as a councillor or vote for new runtime proposals using Democracy.


    Learn about Kusama's Cousin, Polkadot

    Kusama is Polkadot’s canary network. Polkadot development is on track to deliver the most robust platform for security, scalability and innovation. With the help of Kusama, Polkadot will become a scalable, interoperable & secure network protocol for web 3.0.

    Help Improve this Wiki

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


    - + \ No newline at end of file diff --git a/search/index.html b/search/index.html index 8ef4e642a7..d29d5438a6 100644 --- a/search/index.html +++ b/search/index.html @@ -15,13 +15,13 @@ - +

    Search the documentation

    - + \ No newline at end of file