Page Not Found
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
diff --git a/404.html b/404.html index 2984e5c7e4f7..c4f76631ab3e 100644 --- a/404.html +++ b/404.html @@ -21,8 +21,8 @@ - - + +
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.
config
File",id:"modify-config-file",level:4},{value:"Rename Chain's Files",id:"rename-chains-files",level:4},{value:"Run Portal",id:"run-portal",level:4}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsx)(t.p,{children:"These guides apply to both Parity Signer and Polkadot Vault apps."})}),"\n",(0,n.jsx)(t.h2,{id:"sending-a-transfer-with-the-vault-app",children:"Sending a Transfer with the Vault App"}),"\n",(0,n.jsx)(t.admonition,{title:"Verifying Extrinsics",type:"danger",children:(0,n.jsxs)(t.p,{children:["Visit the\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-using-Ledger",children:(0,n.jsx)(t.strong,{children:"dedicated support page"})}),"\nand see ",(0,n.jsx)(t.a,{href:"https://youtu.be/bxMs-9fBtFk?t=360",children:(0,n.jsx)(t.strong,{children:"this video tutorial"})})," tutorial to learn about how to\nverify extrinsics before signing them. The video will also mention potential attacks that can happen\nto you while signing for transactions."]})}),"\n",(0,n.jsxs)(t.p,{children:["General instructions to send a transfer can be found on\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000170304-how-to-send-transfer-funds-out-of-your-dot-account-on-the-polkadot-js-ui",children:"this support page"}),".\nTo sign transactions with the Polkadot Vault app check\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182000-how-to-sign-a-transaction-in-parity-signer",children:"this support article"}),"\nor see ",(0,n.jsx)(t.a,{href:"https://youtu.be/gbvrHzr4EDY?t=281",children:"this video tutorial"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"import-vault-accounts-into-polkadot-js",children:"Import Vault Accounts into Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:["See\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000184118-polkadot-vault-how-to-add-your-account-on-polkadot-js-ui",children:"this support article"}),"\nto import a Polkadot Vault account into the\n",(0,n.jsx)(t.a,{href:"/docs/polkadotjs#polkadot-js-extension",children:"Polkadot-JS Browser Extension"})," or\n",(0,n.jsx)(t.a,{href:"https://chrome.google.com/webstore/detail/parity-signer-companion/damllfnhhcbmclmjilomenbhkappdjgb",children:"Parity Signer Companion"}),".\nAccounts added to those extensions will be injected into the Polkadot-JS UI."]}),"\n",(0,n.jsx)(t.h2,{id:"do-your-own-chain-spec-and-metadata-update",children:"Do Your Own Chain Spec and Metadata Update"}),"\n",(0,n.jsx)(t.admonition,{title:"This section is for developers and power users only",type:"danger",children:(0,n.jsx)(t.p,{children:"By requesting the chain specification and metadata you trust the specific endpoint you are using\n(unless you are using you own node)."})}),"\n",(0,n.jsxs)(t.p,{children:["The following guide bases on the ",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/parity-signer",children:"Parity Signer"})," Github\npage (to create the Chain Spec QR code and the metadata QR code fountain) and\n",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/metadata-portal",children:"Metadata Portal"})," Github page (to embed the Chain\nSpec and Metadata into a portal)."]}),"\n",(0,n.jsx)(t.h3,{id:"chain-specification",children:"Chain Specification"}),"\n",(0,n.jsx)(t.h4,{id:"chain-spec-qr",children:"Chain Spec QR"}),"\n",(0,n.jsxs)(t.p,{children:["To add more chains on the Vault app you can follow the instructions\n",(0,n.jsx)(t.a,{href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-specs",children:"here"}),".\nIn this example we will add the ",(0,n.jsx)(t.a,{href:"/docs/learn-assets",children:"Asset Hub"})," system parachain. Briefly,\nfork the ",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/parity-signer",children:"Parity Signer GitHub repository"}),", start the\nterminal within the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run add-specs -d -u wss://kusama-asset-hub-rpc.polkadot.io --encryption sr25519"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"wss://kusama-asset.hub-rpc.polkadot.io"})," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,n.jsx)(t.code,{children:"sign_me_add_specs_statemine_sr25510"})," under the\n",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder. See all endpoints listed for\n",(0,n.jsx)(t.a,{href:"https://github.com/polkadot-js/apps/blob/089fd77b14169749e35e073a93f7e7276963009c/packages/apps-config/src/endpoints/productionRelayPolkadot.ts",children:"Polkadot"}),"\nand\n",(0,n.jsx)(t.a,{href:"https://github.com/polkadot-js/apps/blob/089fd77b14169749e35e073a93f7e7276963009c/packages/apps-config/src/endpoints/productionRelayKusama.ts",children:"Kusama"}),"\non the Polkadot-JS UI."]}),"\n",(0,n.jsx)(t.h4,{id:"generating-signature",children:"Generating Signature"}),"\n",(0,n.jsx)(t.admonition,{title:"Use a hot account",type:"danger",children:(0,n.jsx)(t.p,{children:"Make sure that the account used to sign the chain specification is a hot account. Never use a cold\naccount from the Vault app or Ledger, as after typing the seed phrase into the terminal that account\nwill be considered hot."})}),"\n",(0,n.jsxs)(t.p,{children:["Start the terminal within the ",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:'cat sign_me_add_specs_statemine_sr25519 | subkey sign --suri "YOUR SEED PHRASE"'})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'})," is the seed phrase of the account that will be used to sign and\nauthenticate both the chain spec and later on the metadata. Running the code above will return a\nsignature similar to that below:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"0xc4ce72db959000b6166af96d3bda55a927fd837747bf1bf1ae8a69e57c9ef37c25a88707c47b105a9eb1fbcf9345680eff57eb978cf73919506f6c738834e78a"})}),"\n",(0,n.jsx)(t.h4,{id:"signing-chain-spec",children:"Signing Chain Spec"}),"\n",(0,n.jsxs)(t.p,{children:["Now, go back to the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run --release make --goal qr --crypto sr25519 --msg add-specs --payload sign_me_add_specs_statemine_sr25519 --verifier-hex PUBLIC KEY --signature-hex SIGNATURE"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"PUBLIC KEY"})," is the public key of the account with seed ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'}),", and ",(0,n.jsx)(t.code,{children:"SIGNATURE"}),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,n.jsx)(t.code,{children:"add_specs_statemine-sr25519"})," under the ",(0,n.jsx)(t.code,{children:"files/completed"})," folder."]}),"\n",(0,n.jsx)(t.h3,{id:"metadata-updates",children:"Metadata Updates"}),"\n",(0,n.jsx)(t.p,{children:"Similarly to what we did for the chain specification, we now generate and sign the Asset Hub\nmetadata."}),"\n",(0,n.jsx)(t.h4,{id:"metadata-qr-fountain",children:"Metadata QR Fountain"}),"\n",(0,n.jsxs)(t.p,{children:["To update the chain metadata for the Asset Hub specs on the Vault app you can follow the\ninstructions\n",(0,n.jsx)(t.a,{href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-metadata",children:"here"}),".\nBriefly, in the Parity Signer repository, start the terminal within the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder\nand type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run load-metadata -d -u wss://kusama-asset-hub-rpc.polkadot.io"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"wss://kusama-asset-hub-rpc.polkadot.io"})," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,n.jsx)(t.code,{children:"sign_me_load_metadata_statemineV9370"})," under the\n",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder. Note that for future metadata updates the file name will change as the\nversion at the time of writing was ",(0,n.jsx)(t.code,{children:"V9370"}),"."]}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["Note that the name of the file changes according to the network version. That is, ",(0,n.jsx)(t.code,{children:"????"})," in\n",(0,n.jsx)(t.code,{children:"sign_me_load_metadata_statemineV????"})," will be the latest version at fetch time."]})}),"\n",(0,n.jsx)(t.h4,{id:"generating-signature-1",children:"Generating Signature"}),"\n",(0,n.jsx)(t.admonition,{title:"Use a hot account",type:"danger",children:(0,n.jsx)(t.p,{children:"Make sure that the account used to sign the metadata is a hot account. Never use a cold account from\nthe Vault app or Ledger, as after typing the seed phrase into the terminal that account will be\nconsidered hot."})}),"\n",(0,n.jsxs)(t.p,{children:["Start the terminal within the ",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:'cat sign_me_load_metadata_statemineV9370 | subkey sign --suri "YOUR SEED PHRASE"'})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'})," is the seed phrase of the account you used to sign the chain\nspecification. Running the code above will return a signature similar to that below:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"0xde1ad7aeb252acb3cf42a522dcc8dc3f317a49be2ed636836dd6df8f7e47135f2c712480055822eba87e9ea5ac7d3bba96045992ae795856fdf4eea09a411f85"})}),"\n",(0,n.jsx)(t.admonition,{title:"Do not copy the code lines above",type:"info",children:(0,n.jsxs)(t.p,{children:["Note that the name of the file changes according to the network version. That is, ",(0,n.jsx)(t.code,{children:"????"})," in\n",(0,n.jsx)(t.code,{children:"sign_me_load_metadata_statemineV????"})," will be the latest version at fetch time. So, do not copy the\ncode line above, but change the version with the appropriate one saved under the ",(0,n.jsx)(t.code,{children:"files/in_progress"}),"\nfolder. The signature changes as well."]})}),"\n",(0,n.jsx)(t.h4,{id:"signing-metadata",children:"Signing Metadata"}),"\n",(0,n.jsxs)(t.p,{children:["Now, go back to the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run --release make --goal qr --crypto sr25519 --msg load-metadata --payload sign_me_load_metadata_statemineV9370 --verifier-hex PUBLIC KEY --signature-hex SIGNATURE"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"PUBLIC KEY"})," is the public key of the account with seed ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'}),", and ",(0,n.jsx)(t.code,{children:"SIGNATURE"}),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,n.jsx)(t.code,{children:"load_metadata_statemineV9370"})," under the ",(0,n.jsx)(t.code,{children:"files/completed"})," folder."]}),"\n",(0,n.jsx)(t.h3,{id:"add-chain--update-metadata",children:"Add Chain & Update Metadata"}),"\n",(0,n.jsxs)(t.p,{children:["You can open ",(0,n.jsx)(t.code,{children:"add_specs_statemine-sr25519"})," on your browser (just drag the file on an open tab). This\nis a .png file containing the QR code to add the Asset Hub chain specification into the Vault App.\nYou can do the same with the ",(0,n.jsx)(t.code,{children:"load_metadata_statemineV9370"}),". This is a .apng file containing the QR\ncode fountain to do the metadata update for the Asset Hub on Kusama."]}),"\n",(0,n.jsx)(t.h3,{id:"metadata-portal",children:"Metadata Portal"}),"\n",(0,n.jsxs)(t.h4,{id:"modify-config-file",children:["Modify ",(0,n.jsx)(t.code,{children:"config"})," File"]}),"\n",(0,n.jsxs)(t.p,{children:["Alternatively, you can add the chain specification QR code and the metadata QR code fountain in a\nmetadata portal. Briefly, fork the\n",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/metadata-portal",children:"Parity's Metadata Portal GitHub repository"}),". You can\nmodify the following fields of the ",(0,n.jsx)(t.code,{children:"config.toml"})," file:"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"name"}),": your name / institution"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"public_key"}),": the public key of the account you use to sign the chain spec and the metadata."]}),"\n",(0,n.jsx)(t.li,{children:"At the bottom of the file add the following information:"}),"\n"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:'[[chains]]\nname = "Statemine"\ntitle = "Kusama Asset Hub"\nrpc_endpoint = "wss://kusama-asset-hub-rpc.polkadot.io"\ncolor = "#f27230"\n\n[chains.github_release]\nowner = "paritytech"\nrepo = "statemint"\ngenesis_hash = "0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a"\n'})}),"\n",(0,n.jsx)(t.p,{children:"For each additional chain, you need to add the respective information. Information about the genesis\nhash can be found on the Polkadot-JS UI > connect to the relevant chain > Developer > Chain State."}),"\n",(0,n.jsx)(t.h4,{id:"rename-chains-files",children:"Rename Chain's Files"}),"\n",(0,n.jsx)(t.p,{children:"Rename the signed chain specification and metadata files as follow:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Chain specification: ",(0,n.jsx)(t.code,{children:"add_specs_statemine-sr25519"})," --\x3e ",(0,n.jsx)(t.code,{children:"statemine_specs.png"})]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Metadata updates: ",(0,n.jsx)(t.code,{children:"load_metadata_statemineV9370"}),"--\x3e ",(0,n.jsx)(t.code,{children:"statemine_metadata_9370.apng"})]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["Thus, for chain specification the file must be renamed to ",(0,n.jsx)(t.code,{children:"chainName_specs.png"})," while for metadata\nthe file must be renamed to ",(0,n.jsx)(t.code,{children:"chainName_metadata_version.apng"})," where ",(0,n.jsx)(t.code,{children:"chainName"})," is the name of the\nchain and ",(0,n.jsx)(t.code,{children:"version"})," is the version of the metadata."]}),"\n",(0,n.jsxs)(t.p,{children:["Add the renamed files to the ",(0,n.jsx)(t.code,{children:"/public/qr folder"})," within the Metadata Portal repository."]}),"\n",(0,n.jsx)(t.h4,{id:"run-portal",children:"Run Portal"}),"\n",(0,n.jsxs)(t.p,{children:["Open the terminal within the Metadata Portal repository and run ",(0,n.jsx)(t.code,{children:"make updater"}),". Then run\n",(0,n.jsx)(t.code,{children:"make collector"}),"; this will create the ",(0,n.jsx)(t.code,{children:"_latest.apng"})," files for each of the chains (removed by the\ncommand ",(0,n.jsx)(t.code,{children:"make cleaner"}),"). Finally, run ",(0,n.jsx)(t.code,{children:"yarn start"})," to load the metadata portal on your localhost."]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(96540),i=a(74848);const s=function(e){var t,a=e.message,s=(0,n.useState)(!0),o=s[0],d=s[1];return(0,i.jsx)(i.Fragment,{children:o&&(0,i.jsxs)("div",{className:"message-box",children:[(0,i.jsx)("button",{className:"close-button",onClick:function(){d(!1)},children:"\u2716 "}),(0,i.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},28453:(e,t,a)=>{a.d(t,{R:()=>o,x:()=>d});var n=a(96540);const i={},s=n.createContext(i);function o(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/dbbd9e76.b1add0d6.js b/assets/js/dbbd9e76.b1add0d6.js
deleted file mode 100644
index 016fb92ec57c..000000000000
--- a/assets/js/dbbd9e76.b1add0d6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2922],{22123:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>d,default:()=>p,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var n=a(74848),i=a(28453),s=a(67141);const o={id:"learn-guides-vault",title:"Polkadot-JS Guides about the Vault App",sidebar_label:"Polkadot Vault Guides",description:"Polkadot-JS Guides about Polkadot Vault.",keywords:["parity signer","signer","polkadot vault","polkadot-js"],slug:"../learn-guides-vault"},d=void 0,r={id:"learn/learn-guides-vault",title:"Polkadot-JS Guides about the Vault App",description:"Polkadot-JS Guides about Polkadot Vault.",source:"@site/../docs/learn/learn-guides-vault.md",sourceDirName:"learn",slug:"/learn-guides-vault",permalink:"/docs/learn-guides-vault",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-vault.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1726760224e3,frontMatter:{id:"learn-guides-vault",title:"Polkadot-JS Guides about the Vault App",sidebar_label:"Polkadot Vault Guides",description:"Polkadot-JS Guides about Polkadot Vault.",keywords:["parity signer","signer","polkadot vault","polkadot-js"],slug:"../learn-guides-vault"},sidebar:"docs",previous:{title:"Ledger Guides",permalink:"/docs/learn-guides-ledger"},next:{title:"Asset Hub Guides",permalink:"/docs/learn-guides-assets"}},l={},c=[{value:"Sending a Transfer with the Vault App",id:"sending-a-transfer-with-the-vault-app",level:2},{value:"Import Vault Accounts into Polkadot-JS",id:"import-vault-accounts-into-polkadot-js",level:2},{value:"Do Your Own Chain Spec and Metadata Update",id:"do-your-own-chain-spec-and-metadata-update",level:2},{value:"Chain Specification",id:"chain-specification",level:3},{value:"Chain Spec QR",id:"chain-spec-qr",level:4},{value:"Generating Signature",id:"generating-signature",level:4},{value:"Signing Chain Spec",id:"signing-chain-spec",level:4},{value:"Metadata Updates",id:"metadata-updates",level:3},{value:"Metadata QR Fountain",id:"metadata-qr-fountain",level:4},{value:"Generating Signature",id:"generating-signature-1",level:4},{value:"Signing Metadata",id:"signing-metadata",level:4},{value:"Add Chain & Update Metadata",id:"add-chain--update-metadata",level:3},{value:"Metadata Portal",id:"metadata-portal",level:3},{value:"Modify config
File",id:"modify-config-file",level:4},{value:"Rename Chain's Files",id:"rename-chains-files",level:4},{value:"Run Portal",id:"run-portal",level:4}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsx)(t.p,{children:"These guides apply to both Parity Signer and Polkadot Vault apps."})}),"\n",(0,n.jsx)(t.h2,{id:"sending-a-transfer-with-the-vault-app",children:"Sending a Transfer with the Vault App"}),"\n",(0,n.jsx)(t.admonition,{title:"Verifying Extrinsics",type:"danger",children:(0,n.jsxs)(t.p,{children:["Visit the\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-using-Ledger",children:(0,n.jsx)(t.strong,{children:"dedicated support page"})}),"\nand see ",(0,n.jsx)(t.a,{href:"https://youtu.be/bxMs-9fBtFk?t=360",children:(0,n.jsx)(t.strong,{children:"this video tutorial"})})," tutorial to learn about how to\nverify extrinsics before signing them. The video will also mention potential attacks that can happen\nto you while signing for transactions."]})}),"\n",(0,n.jsxs)(t.p,{children:["General instructions to send a transfer can be found on\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000170304-how-to-send-transfer-funds-out-of-your-dot-account-on-the-polkadot-js-ui",children:"this support page"}),".\nTo sign transactions with the Polkadot Vault app check\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182000-how-to-sign-a-transaction-in-parity-signer",children:"this support article"}),"\nor see ",(0,n.jsx)(t.a,{href:"https://youtu.be/gbvrHzr4EDY?t=281",children:"this video tutorial"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"import-vault-accounts-into-polkadot-js",children:"Import Vault Accounts into Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:["See\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000184118-polkadot-vault-how-to-add-your-account-on-polkadot-js-ui",children:"this support article"}),"\nto import a Polkadot Vault account into the\n",(0,n.jsx)(t.a,{href:"/docs/polkadotjs#polkadot-js-extension",children:"Polkadot-JS Browser Extension"})," or\n",(0,n.jsx)(t.a,{href:"https://chrome.google.com/webstore/detail/parity-signer-companion/damllfnhhcbmclmjilomenbhkappdjgb",children:"Parity Signer Companion"}),".\nAccounts added to those extensions will be injected into the Polkadot-JS UI."]}),"\n",(0,n.jsx)(t.h2,{id:"do-your-own-chain-spec-and-metadata-update",children:"Do Your Own Chain Spec and Metadata Update"}),"\n",(0,n.jsx)(t.admonition,{title:"This section is for developers and power users only",type:"danger",children:(0,n.jsx)(t.p,{children:"By requesting the chain specification and metadata you trust the specific endpoint you are using\n(unless you are using you own node)."})}),"\n",(0,n.jsxs)(t.p,{children:["The following guide bases on the ",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/parity-signer",children:"Parity Signer"})," Github\npage (to create the Chain Spec QR code and the metadata QR code fountain) and\n",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/metadata-portal",children:"Metadata Portal"})," Github page (to embed the Chain\nSpec and Metadata into a portal)."]}),"\n",(0,n.jsx)(t.h3,{id:"chain-specification",children:"Chain Specification"}),"\n",(0,n.jsx)(t.h4,{id:"chain-spec-qr",children:"Chain Spec QR"}),"\n",(0,n.jsxs)(t.p,{children:["To add more chains on the Vault app you can follow the instructions\n",(0,n.jsx)(t.a,{href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-specs",children:"here"}),".\nIn this example we will add the ",(0,n.jsx)(t.a,{href:"/docs/learn-assets",children:"Asset Hub"})," system parachain. Briefly,\nfork the ",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/parity-signer",children:"Parity Signer GitHub repository"}),", start the\nterminal within the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run add-specs -d -u wss://kusama-asset-hub-rpc.polkadot.io --encryption sr25519"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"wss://kusama-asset.hub-rpc.polkadot.io"})," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,n.jsx)(t.code,{children:"sign_me_add_specs_statemine_sr25510"})," under the\n",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder. See all endpoints listed for\n",(0,n.jsx)(t.a,{href:"https://github.com/polkadot-js/apps/blob/089fd77b14169749e35e073a93f7e7276963009c/packages/apps-config/src/endpoints/productionRelayPolkadot.ts",children:"Polkadot"}),"\nand\n",(0,n.jsx)(t.a,{href:"https://github.com/polkadot-js/apps/blob/089fd77b14169749e35e073a93f7e7276963009c/packages/apps-config/src/endpoints/productionRelayKusama.ts",children:"Kusama"}),"\non the Polkadot-JS UI."]}),"\n",(0,n.jsx)(t.h4,{id:"generating-signature",children:"Generating Signature"}),"\n",(0,n.jsx)(t.admonition,{title:"Use a hot account",type:"danger",children:(0,n.jsx)(t.p,{children:"Make sure that the account used to sign the chain specification is a hot account. Never use a cold\naccount from the Vault app or Ledger, as after typing the seed phrase into the terminal that account\nwill be considered hot."})}),"\n",(0,n.jsxs)(t.p,{children:["Start the terminal within the ",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:'cat sign_me_add_specs_statemine_sr25519 | subkey sign --suri "YOUR SEED PHRASE"'})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'})," is the seed phrase of the account that will be used to sign and\nauthenticate both the chain spec and later on the metadata. Running the code above will return a\nsignature similar to that below:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"0xc4ce72db959000b6166af96d3bda55a927fd837747bf1bf1ae8a69e57c9ef37c25a88707c47b105a9eb1fbcf9345680eff57eb978cf73919506f6c738834e78a"})}),"\n",(0,n.jsx)(t.h4,{id:"signing-chain-spec",children:"Signing Chain Spec"}),"\n",(0,n.jsxs)(t.p,{children:["Now, go back to the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run --release make --goal qr --crypto sr25519 --msg add-specs --payload sign_me_add_specs_statemine_sr25519 --verifier-hex PUBLIC KEY --signature-hex SIGNATURE"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"PUBLIC KEY"})," is the public key of the account with seed ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'}),", and ",(0,n.jsx)(t.code,{children:"SIGNATURE"}),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,n.jsx)(t.code,{children:"add_specs_statemine-sr25519"})," under the ",(0,n.jsx)(t.code,{children:"files/completed"})," folder."]}),"\n",(0,n.jsx)(t.h3,{id:"metadata-updates",children:"Metadata Updates"}),"\n",(0,n.jsx)(t.p,{children:"Similarly to what we did for the chain specification, we now generate and sign the Asset Hub\nmetadata."}),"\n",(0,n.jsx)(t.h4,{id:"metadata-qr-fountain",children:"Metadata QR Fountain"}),"\n",(0,n.jsxs)(t.p,{children:["To update the chain metadata for the Asset Hub specs on the Vault app you can follow the\ninstructions\n",(0,n.jsx)(t.a,{href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-metadata",children:"here"}),".\nBriefly, in the Parity Signer repository, start the terminal within the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder\nand type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run load-metadata -d -u wss://kusama-asset-hub-rpc.polkadot.io"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"wss://kusama-asset-hub-rpc.polkadot.io"})," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,n.jsx)(t.code,{children:"sign_me_load_metadata_statemineV9370"})," under the\n",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder. Note that for future metadata updates the file name will change as the\nversion at the time of writing was ",(0,n.jsx)(t.code,{children:"V9370"}),"."]}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["Note that the name of the file changes according to the network version. That is, ",(0,n.jsx)(t.code,{children:"????"})," in\n",(0,n.jsx)(t.code,{children:"sign_me_load_metadata_statemineV????"})," will be the latest version at fetch time."]})}),"\n",(0,n.jsx)(t.h4,{id:"generating-signature-1",children:"Generating Signature"}),"\n",(0,n.jsx)(t.admonition,{title:"Use a hot account",type:"danger",children:(0,n.jsx)(t.p,{children:"Make sure that the account used to sign the metadata is a hot account. Never use a cold account from\nthe Vault app or Ledger, as after typing the seed phrase into the terminal that account will be\nconsidered hot."})}),"\n",(0,n.jsxs)(t.p,{children:["Start the terminal within the ",(0,n.jsx)(t.code,{children:"files/in_progress"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:'cat sign_me_load_metadata_statemineV9370 | subkey sign --suri "YOUR SEED PHRASE"'})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'})," is the seed phrase of the account you used to sign the chain\nspecification. Running the code above will return a signature similar to that below:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"0xde1ad7aeb252acb3cf42a522dcc8dc3f317a49be2ed636836dd6df8f7e47135f2c712480055822eba87e9ea5ac7d3bba96045992ae795856fdf4eea09a411f85"})}),"\n",(0,n.jsx)(t.admonition,{title:"Do not copy the code lines above",type:"info",children:(0,n.jsxs)(t.p,{children:["Note that the name of the file changes according to the network version. That is, ",(0,n.jsx)(t.code,{children:"????"})," in\n",(0,n.jsx)(t.code,{children:"sign_me_load_metadata_statemineV????"})," will be the latest version at fetch time. So, do not copy the\ncode line above, but change the version with the appropriate one saved under the ",(0,n.jsx)(t.code,{children:"files/in_progress"}),"\nfolder. The signature changes as well."]})}),"\n",(0,n.jsx)(t.h4,{id:"signing-metadata",children:"Signing Metadata"}),"\n",(0,n.jsxs)(t.p,{children:["Now, go back to the ",(0,n.jsx)(t.code,{children:"/generate_message"})," folder and type the following:"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.code,{children:"cargo run --release make --goal qr --crypto sr25519 --msg load-metadata --payload sign_me_load_metadata_statemineV9370 --verifier-hex PUBLIC KEY --signature-hex SIGNATURE"})}),"\n",(0,n.jsxs)(t.p,{children:["where ",(0,n.jsx)(t.code,{children:"PUBLIC KEY"})," is the public key of the account with seed ",(0,n.jsx)(t.code,{children:'"YOUR SEED PHRASE"'}),", and ",(0,n.jsx)(t.code,{children:"SIGNATURE"}),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,n.jsx)(t.code,{children:"load_metadata_statemineV9370"})," under the ",(0,n.jsx)(t.code,{children:"files/completed"})," folder."]}),"\n",(0,n.jsx)(t.h3,{id:"add-chain--update-metadata",children:"Add Chain & Update Metadata"}),"\n",(0,n.jsxs)(t.p,{children:["You can open ",(0,n.jsx)(t.code,{children:"add_specs_statemine-sr25519"})," on your browser (just drag the file on an open tab). This\nis a .png file containing the QR code to add the Asset Hub chain specification into the Vault App.\nYou can do the same with the ",(0,n.jsx)(t.code,{children:"load_metadata_statemineV9370"}),". This is a .apng file containing the QR\ncode fountain to do the metadata update for the Asset Hub on Kusama."]}),"\n",(0,n.jsx)(t.h3,{id:"metadata-portal",children:"Metadata Portal"}),"\n",(0,n.jsxs)(t.h4,{id:"modify-config-file",children:["Modify ",(0,n.jsx)(t.code,{children:"config"})," File"]}),"\n",(0,n.jsxs)(t.p,{children:["Alternatively, you can add the chain specification QR code and the metadata QR code fountain in a\nmetadata portal. Briefly, fork the\n",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/metadata-portal",children:"Parity's Metadata Portal GitHub repository"}),". You can\nmodify the following fields of the ",(0,n.jsx)(t.code,{children:"config.toml"})," file:"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"name"}),": your name / institution"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"public_key"}),": the public key of the account you use to sign the chain spec and the metadata."]}),"\n",(0,n.jsx)(t.li,{children:"At the bottom of the file add the following information:"}),"\n"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:'[[chains]]\nname = "Statemine"\ntitle = "Kusama Asset Hub"\nrpc_endpoint = "wss://kusama-asset-hub-rpc.polkadot.io"\ncolor = "#f27230"\n\n[chains.github_release]\nowner = "paritytech"\nrepo = "statemint"\ngenesis_hash = "0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a"\n'})}),"\n",(0,n.jsx)(t.p,{children:"For each additional chain, you need to add the respective information. Information about the genesis\nhash can be found on the Polkadot-JS UI > connect to the relevant chain > Developer > Chain State."}),"\n",(0,n.jsx)(t.h4,{id:"rename-chains-files",children:"Rename Chain's Files"}),"\n",(0,n.jsx)(t.p,{children:"Rename the signed chain specification and metadata files as follow:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Chain specification: ",(0,n.jsx)(t.code,{children:"add_specs_statemine-sr25519"})," --\x3e ",(0,n.jsx)(t.code,{children:"statemine_specs.png"})]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsxs)(t.p,{children:["Metadata updates: ",(0,n.jsx)(t.code,{children:"load_metadata_statemineV9370"}),"--\x3e ",(0,n.jsx)(t.code,{children:"statemine_metadata_9370.apng"})]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["Thus, for chain specification the file must be renamed to ",(0,n.jsx)(t.code,{children:"chainName_specs.png"})," while for metadata\nthe file must be renamed to ",(0,n.jsx)(t.code,{children:"chainName_metadata_version.apng"})," where ",(0,n.jsx)(t.code,{children:"chainName"})," is the name of the\nchain and ",(0,n.jsx)(t.code,{children:"version"})," is the version of the metadata."]}),"\n",(0,n.jsxs)(t.p,{children:["Add the renamed files to the ",(0,n.jsx)(t.code,{children:"/public/qr folder"})," within the Metadata Portal repository."]}),"\n",(0,n.jsx)(t.h4,{id:"run-portal",children:"Run Portal"}),"\n",(0,n.jsxs)(t.p,{children:["Open the terminal within the Metadata Portal repository and run ",(0,n.jsx)(t.code,{children:"make updater"}),". Then run\n",(0,n.jsx)(t.code,{children:"make collector"}),"; this will create the ",(0,n.jsx)(t.code,{children:"_latest.apng"})," files for each of the chains (removed by the\ncommand ",(0,n.jsx)(t.code,{children:"make cleaner"}),"). Finally, run ",(0,n.jsx)(t.code,{children:"yarn start"})," to load the metadata portal on your localhost."]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(96540),i=a(74848);const s=function(e){var t,a=e.message,s=(0,n.useState)(!0),o=s[0],d=s[1];return(0,i.jsx)(i.Fragment,{children:o&&(0,i.jsxs)("div",{className:"message-box",children:[(0,i.jsx)("button",{className:"close-button",onClick:function(){d(!1)},children:"\u2716 "}),(0,i.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},28453:(e,t,a)=>{a.d(t,{R:()=>o,x:()=>d});var n=a(96540);const i={},s=n.createContext(i);function o(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/dd2fa029.51c441af.js b/assets/js/dd2fa029.51c441af.js
deleted file mode 100644
index f43ff673c8c6..000000000000
--- a/assets/js/dd2fa029.51c441af.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2047],{98546:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=r(74848),o=r(28453),a=r(67141),s=r(3514);const l={id:"learn-polkadotjs",title:"Polkadot-JS",sidebar_label:"Polkadot-JS",description:"Overview of Polkadot-JS.",keywords:["polkadot-js","polkadot js"],slug:"../learn-polkadotjs"},i=void 0,c={id:"learn/learn-polkadotjs",title:"Polkadot-JS",description:"Overview of Polkadot-JS.",source:"@site/../docs/learn/learn-polkadotjs.md",sourceDirName:"learn",slug:"/learn-polkadotjs",permalink:"/docs/learn-polkadotjs",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadotjs.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713e3,frontMatter:{id:"learn-polkadotjs",title:"Polkadot-JS",sidebar_label:"Polkadot-JS",description:"Overview of Polkadot-JS.",keywords:["polkadot-js","polkadot js"],slug:"../learn-polkadotjs"},sidebar:"docs",previous:{title:"Advanced",permalink:"/docs/learn-advanced-index"},next:{title:"Polkadot-JS Tooling",permalink:"/docs/polkadotjs"}},d={},u=[];function p(e){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsx)(s.A,{})]})}function m(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p()}},67141:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(96540),o=r(74848);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),s=a[0],l=a[1];return(0,o.jsx)(o.Fragment,{children:s&&(0,o.jsxs)("div",{className:"message-box",children:[(0,o.jsx)("button",{className:"close-button",onClick:function(){l(!1)},children:"\u2716 "}),(0,o.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},3514:(e,t,r)=>{r.d(t,{A:()=>v});r(96540);var n=r(34164),o=r(26972),a=r(28774),s=r(53465),l=r(16654),i=r(21312),c=r(51107);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};var u=r(74848);function p(e){var t=e.href,r=e.children;return(0,u.jsx)(a.A,{href:t,className:(0,n.A)("card padding--lg",d.cardContainer),children:r})}function m(e){var t=e.href,r=e.icon,o=e.title,a=e.description;return(0,u.jsxs)(p,{href:t,children:[(0,u.jsxs)(c.A,{as:"h2",className:(0,n.A)("text--truncate",d.cardTitle),title:o,children:[r," ",o]}),a&&(0,u.jsx)("p",{className:(0,n.A)("text--truncate",d.cardDescription),title:a,children:a})]})}function f(e){var t,r,n=e.item,a=(0,o.Nr)(n),l=(r=(0,s.W)().selectMessage,function(e){return r(e,(0,i.T)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:e}))});return a?(0,u.jsx)(m,{href:a,icon:"\ud83d\uddc3\ufe0f",title:n.label,description:null!=(t=n.description)?t:l(n.items.length)}):null}function h(e){var t,r,n=e.item,a=(0,l.A)(n.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",s=(0,o.cC)(null!=(t=n.docId)?t:void 0);return(0,u.jsx)(m,{href:n.href,icon:a,title:n.label,description:null!=(r=n.description)?r:null==s?void 0:s.description})}function k(e){var t=e.item;switch(t.type){case"link":return(0,u.jsx)(h,{item:t});case"category":return(0,u.jsx)(f,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function g(e){var t=e.className,r=(0,o.$S)();return(0,u.jsx)(v,{items:r.items,className:t})}function v(e){var t=e.items,r=e.className;if(!t)return(0,u.jsx)(g,Object.assign({},e));var a=(0,o.d1)(t);return(0,u.jsx)("section",{className:(0,n.A)("row",r),children:a.map((function(e,t){return(0,u.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,u.jsx)(k,{item:e})},t)}))})}},53465:(e,t,r)=>{r.d(t,{W:()=>c});var n=r(96540),o=r(44586),a=["zero","one","two","few","many","other"];function s(e){return a.filter((function(t){return e.includes(t)}))}var l={locale:"en",pluralForms:s(["one","other"]),select:function(e){return 1===e?"one":"other"}};function i(){var e=(0,o.A)().i18n.currentLocale;return(0,n.useMemo)((function(){try{return t=e,r=new Intl.PluralRules(t),{locale:t,pluralForms:s(r.resolvedOptions().pluralCategories),select:function(e){return r.select(e)}}}catch(n){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to the default (English) implementation.\nError: '+n.message+"\n"),l}var t,r}),[e])}function c(){var e=i();return{selectMessage:function(t,r){return function(e,t,r){var n=e.split("|");if(1===n.length)return n[0];n.length>r.pluralForms.length&&console.error("For locale="+r.locale+", a maximum of "+r.pluralForms.length+" plural forms are expected ("+r.pluralForms.join(",")+"), but the message contains "+n.length+": "+e);var o=r.select(t),a=r.pluralForms.indexOf(o);return n[Math.min(a,n.length-1)]}(r,t,e)}}}},28453:(e,t,r)=>{r.d(t,{R:()=>s,x:()=>l});var n=r(96540);const o={},a=n.createContext(o);function s(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/dd2fa029.e34bb4f5.js b/assets/js/dd2fa029.e34bb4f5.js
new file mode 100644
index 000000000000..65c7ea0451e1
--- /dev/null
+++ b/assets/js/dd2fa029.e34bb4f5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2047],{98546:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=r(74848),o=r(28453),a=r(67141),s=r(3514);const l={id:"learn-polkadotjs",title:"Polkadot-JS",sidebar_label:"Polkadot-JS",description:"Overview of Polkadot-JS.",keywords:["polkadot-js","polkadot js"],slug:"../learn-polkadotjs"},i=void 0,c={id:"learn/learn-polkadotjs",title:"Polkadot-JS",description:"Overview of Polkadot-JS.",source:"@site/../docs/learn/learn-polkadotjs.md",sourceDirName:"learn",slug:"/learn-polkadotjs",permalink:"/docs/learn-polkadotjs",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadotjs.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"learn-polkadotjs",title:"Polkadot-JS",sidebar_label:"Polkadot-JS",description:"Overview of Polkadot-JS.",keywords:["polkadot-js","polkadot js"],slug:"../learn-polkadotjs"},sidebar:"docs",previous:{title:"Advanced",permalink:"/docs/learn-advanced-index"},next:{title:"Polkadot-JS Tooling",permalink:"/docs/polkadotjs"}},d={},u=[];function p(e){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsx)(s.A,{})]})}function m(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p()}},67141:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(96540),o=r(74848);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),s=a[0],l=a[1];return(0,o.jsx)(o.Fragment,{children:s&&(0,o.jsxs)("div",{className:"message-box",children:[(0,o.jsx)("button",{className:"close-button",onClick:function(){l(!1)},children:"\u2716 "}),(0,o.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},3514:(e,t,r)=>{r.d(t,{A:()=>v});r(96540);var n=r(34164),o=r(26972),a=r(28774),s=r(53465),l=r(16654),i=r(21312),c=r(51107);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};var u=r(74848);function p(e){var t=e.href,r=e.children;return(0,u.jsx)(a.A,{href:t,className:(0,n.A)("card padding--lg",d.cardContainer),children:r})}function m(e){var t=e.href,r=e.icon,o=e.title,a=e.description;return(0,u.jsxs)(p,{href:t,children:[(0,u.jsxs)(c.A,{as:"h2",className:(0,n.A)("text--truncate",d.cardTitle),title:o,children:[r," ",o]}),a&&(0,u.jsx)("p",{className:(0,n.A)("text--truncate",d.cardDescription),title:a,children:a})]})}function f(e){var t,r,n=e.item,a=(0,o.Nr)(n),l=(r=(0,s.W)().selectMessage,function(e){return r(e,(0,i.T)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:e}))});return a?(0,u.jsx)(m,{href:a,icon:"\ud83d\uddc3\ufe0f",title:n.label,description:null!=(t=n.description)?t:l(n.items.length)}):null}function h(e){var t,r,n=e.item,a=(0,l.A)(n.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",s=(0,o.cC)(null!=(t=n.docId)?t:void 0);return(0,u.jsx)(m,{href:n.href,icon:a,title:n.label,description:null!=(r=n.description)?r:null==s?void 0:s.description})}function k(e){var t=e.item;switch(t.type){case"link":return(0,u.jsx)(h,{item:t});case"category":return(0,u.jsx)(f,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function g(e){var t=e.className,r=(0,o.$S)();return(0,u.jsx)(v,{items:r.items,className:t})}function v(e){var t=e.items,r=e.className;if(!t)return(0,u.jsx)(g,Object.assign({},e));var a=(0,o.d1)(t);return(0,u.jsx)("section",{className:(0,n.A)("row",r),children:a.map((function(e,t){return(0,u.jsx)("article",{className:"col col--6 margin-bottom--lg",children:(0,u.jsx)(k,{item:e})},t)}))})}},53465:(e,t,r)=>{r.d(t,{W:()=>c});var n=r(96540),o=r(44586),a=["zero","one","two","few","many","other"];function s(e){return a.filter((function(t){return e.includes(t)}))}var l={locale:"en",pluralForms:s(["one","other"]),select:function(e){return 1===e?"one":"other"}};function i(){var e=(0,o.A)().i18n.currentLocale;return(0,n.useMemo)((function(){try{return t=e,r=new Intl.PluralRules(t),{locale:t,pluralForms:s(r.resolvedOptions().pluralCategories),select:function(e){return r.select(e)}}}catch(n){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to the default (English) implementation.\nError: '+n.message+"\n"),l}var t,r}),[e])}function c(){var e=i();return{selectMessage:function(t,r){return function(e,t,r){var n=e.split("|");if(1===n.length)return n[0];n.length>r.pluralForms.length&&console.error("For locale="+r.locale+", a maximum of "+r.pluralForms.length+" plural forms are expected ("+r.pluralForms.join(",")+"), but the message contains "+n.length+": "+e);var o=r.select(t),a=r.pluralForms.indexOf(o);return n[Math.min(a,n.length-1)]}(r,t,e)}}}},28453:(e,t,r)=>{r.d(t,{R:()=>s,x:()=>l});var n=r(96540);const o={},a=n.createContext(o);function s(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e495ca4d.2839c84e.js b/assets/js/e495ca4d.2839c84e.js
new file mode 100644
index 000000000000..9a4e6e34eb4d
--- /dev/null
+++ b/assets/js/e495ca4d.2839c84e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[662],{6099:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=o(74848),a=o(28453),i=o(67141);const s={id:"maintain-guides-democracy",title:"Participate in Democracy",sidebar_label:"Participate in Democracy",description:"Steps on how to participate in democracy.",keywords:["democracy","council","action","proposal"],slug:"../maintain-guides-democracy"},r=void 0,c={id:"maintain/archive/maintain-guides-democracy",title:"Participate in Democracy",description:"Steps on how to participate in democracy.",source:"@site/../docs/maintain/archive/maintain-guides-democracy.md",sourceDirName:"maintain/archive",slug:"/maintain/maintain-guides-democracy",permalink:"/docs/maintain/maintain-guides-democracy",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-democracy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"maintain-guides-democracy",title:"Participate in Democracy",sidebar_label:"Participate in Democracy",description:"Steps on how to participate in democracy.",keywords:["democracy","council","action","proposal"],slug:"../maintain-guides-democracy"},sidebar:"docs",previous:{title:"Archive",permalink:"/docs/maintain-archive"},next:{title:"Join the Council",permalink:"/docs/maintain/maintain-guides-how-to-join-council"}},l={},d=[{value:"Important Parameters",id:"important-parameters",level:2},{value:"Proposing an Action",id:"proposing-an-action",level:2},{value:"Submitting a Preimage",id:"submitting-a-preimage",level:2},{value:"Endorsing a Proposal",id:"endorsing-a-proposal",level:2},{value:"Voting on a Proposal",id:"voting-on-a-proposal",level:2},{value:"Unlocking Locked Tokens",id:"unlocking-locked-tokens",level:2},{value:"With a Ledger hardware wallet or Unlocking Very Old Locks",id:"with-a-ledger-hardware-wallet-or-unlocking-very-old-locks",level:4},{value:"Delegate a Vote",id:"delegate-a-vote",level:2},{value:"Undelegate a Vote",id:"undelegate-a-vote",level:2},{value:"Voting with a Governance Proxy",id:"voting-with-a-governance-proxy",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{message:"The content on this page is archived. For up-to-date information about governance, see the\n[Polkadot OpenGov page](../learn-polkadot-opengov)."}),"\n",(0,n.jsxs)(t.p,{children:["The public referenda chamber is one of the three bodies of on-chain governance as it's instantiated\nin Polkadot and Kusama. The other two bodies are the\n",(0,n.jsx)(t.a,{href:"/docs/maintain/maintain-guides-how-to-join-council",children:"council"})," and the\n",(0,n.jsx)(t.a,{href:"/docs/learn/learn-governance#technical-committee",children:"technical committee"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["Public referenda can be proposed and voted on by any token holder in the system as long as they\nprovide a bond. After a proposal is made, others can agree with it by ",(0,n.jsx)(t.em,{children:"endorsing"})," it and putting up\ntokens equal to the original bond. During every launch period, the most endorsed proposal will be\nmoved to the public referenda table where it can be voted upon. Voters who are willing to lock up\ntheir tokens for a greater duration of time can do so and get their votes amplified. For more\ndetails on the governance system please see ",(0,n.jsx)(t.a,{href:"/docs/learn/learn-governance",children:"here"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"This guide will instruct token holders how to propose and vote on public referenda using the\nDemocracy module. Below are a few links to stay informed and directly engage with the community."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"Polkadot Direction"})," - a place to discuss\ngovernance and the future of Polkadot."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://matrix.to/#/#Kusama-Direction:parity.io",children:"Kusama Direction"})," - a place to discuss\ngovernance and the future of Kusama."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://polkadot.polkassembly.io",children:"Polkadot"})," and ",(0,n.jsx)(t.a,{href:"https://kusama.polkassembly.io",children:"Kusama"}),"\nPolkassembly - for current referenda, latest proposals, motions, treasury proposals, tips,\nbounties, and more."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://matrix.to/#/#dailydigest:web3.foundation",children:"Polkadot Daily Digest"})," - News about what is\nhappening in the Polkadot ecosystem, published every weekday except holidays."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"important-parameters",children:"Important Parameters"}),"\n",(0,n.jsx)(t.p,{children:"The important parameters to be aware of when voting using the Democracy module are as follows:"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Launch Period"})," - How often new public referenda are launched."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Voting Period"})," - How often votes for referenda are tallied."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Emergency Voting Period"})," - The minimum voting period for a fast-tracked emergency referendum."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Minimum Deposit"})," - The minimum amount to be used as a deposit for a public referendum proposal."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Enactment Period"})," - The minimum period for locking funds ",(0,n.jsx)(t.em,{children:"and"})," the period between a proposal\nbeing approved and enacted."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Cooloff Period"})," - The period in blocks where a proposal may not be re-submitted after being\nvetoed."]}),"\n",(0,n.jsx)(t.h2,{id:"proposing-an-action",children:"Proposing an Action"}),"\n",(0,n.jsx)(t.p,{children:'Proposing an action to be taken requires you to bond some tokens. In order to ensure you have enough\ntokens to make the minimum deposit, you can check the parameter in the chain state. Navigate to\nDeveloper > Chain State > Constants > selected constant query: democracy > minimumDeposit: u128 and\nthen click on the plus button. The bonded tokens will only be released once the proposal is tabled\n(that is, brought to a vote); there is no way for the user to "revoke" their proposal and get the\nbond back before it has become a referendum. Since it is essentially impossible to predict\ndefinitely when a proposal may become a referendum (if ever), this means that any tokens bonded will\nbe locked for an indeterminate amount of time.'}),"\n",(0,n.jsxs)(t.admonition,{title:"Proposals cannot be revoked by the proposer, even if they never turn into a referendum",type:"info",children:[(0,n.jsx)(t.p,{children:"It is important to realize that there is no guarantee that DOT you use for proposing or endorsing a\nproposal will be returned to that account in any given timeframe."}),(0,n.jsx)(t.p,{children:'::: On Polkadot Apps, you can navigate to the Governance -> Democracy tab to make a new proposal. In\norder to submit a proposal, you will need to submit what\'s called the preimage hash. The preimage\nhash is simply the hash of the proposal to be enacted. The easiest way to get the preimage hash is\nby clicking on the "Submit preimage" button and configuring the action that you are proposing.'}),(0,n.jsxs)(t.p,{children:["The example below demonstrates the creation of a proposal on Kusama (",(0,n.jsx)(t.strong,{children:"the same procedure applies to\nPolkadot"}),'). If you wanted to propose that a remark "Expect Chaos!" is added, the preimage hash\nwould be ',(0,n.jsx)(t.code,{children:"0x8ac3f722caf7677254e25ca4ad77d533ca893c7d2ad4009e258d749f2004ef94"}),". You can copy this\npreimage hash and save it for the next step. There is no need to click Submit Preimage at this\npoint, though you could. We'll go over that in the next section."]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"submit preimage",src:o(90005).A+"",width:"1182",height:"526"})}),(0,n.jsxs)(t.p,{children:['Now you will click on the "Submit proposal" button and enter the preimage hash in the input titled\n"preimage hash" and ',(0,n.jsx)(t.em,{children:"at least"}),' the minimum deposit into the "locked balance" field. Click on the\n"Submit proposal" button and confirm the transaction. You should now see your proposal appear in the\n"proposals" column on the page.']}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"submit proposal",src:o(33677).A+"",width:"1184",height:"456"})}),(0,n.jsx)(t.p,{children:"Now your proposal is visible to anyone who accesses the chain and others can endorse it or submit a\npreimage. However, it's hard to tell what exactly this proposal does since it shows the hash of the\naction. Other holders will not be able to make a judgement on whether they endorse it or not until\nsomeone submits the actual preimage for this proposal. In the next step, you will submit the\npreimage."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"proposal hash",src:o(98955).A+"",width:"1424",height:"276"})}),(0,n.jsx)(t.h2,{id:"submitting-a-preimage",children:"Submitting a Preimage"}),(0,n.jsx)(t.p,{children:"The act of making a proposal is split from submitting the preimage for the proposal since the\nstorage cost of submitting a large preimage could be pretty expensive. Allowing for the preimage\nsubmission to come as a separate transaction means that another account could submit the preimage\nfor you if you don't have the funds to do so. It also means that you don't have to pay so many funds\nright away as you can prove the preimage hash out-of-band."}),(0,n.jsx)(t.p,{children:"However, at some point before the proposal passes you will need to submit the preimage or else the\nproposal cannot be enacted. The guide will now show you how to do this."}),(0,n.jsx)(t.p,{children:'Click on the blue "Submit preimage" button and configure it to be the same as what you did before to\nacquire the preimage hash. This time, instead of copying the hash to another tab, you will follow\nthrough and click "Submit preimage" and confirm the transaction.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"submit preimage",src:o(90005).A+"",width:"1182",height:"526"})}),(0,n.jsx)(t.p,{children:"Once the transaction is included you should see the UI update with the information for your already\nsubmitted proposal."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"proposals",src:o(65589).A+"",width:"1424",height:"276"})}),(0,n.jsx)(t.h2,{id:"endorsing-a-proposal",children:"Endorsing a Proposal"}),(0,n.jsx)(t.p,{children:"Endorsing a proposal means that you are agreeing with the proposal and backing it with an equal\namount of deposit as was originally locked. The bonded tokens will be released once the proposal is\ntabled (that is, brought to a vote), just like the original proposer's bond. By endorsing a proposal\nyou will move it higher up the rank of proposals. The most endorsed proposal \u2014 in value, not\nthe number of supporters \u2014 will be brought to a referendum every launch period."}),(0,n.jsx)(t.p,{children:"It is important to note that there is no way to stop or cancel endorsing a proposal once it has been\ndone. Therefore, the DOT that was endorsed will be reserved until the proposal is tabled as a\nreferendum. This is an indeterminate amount of time, since there is no guarantee that a proposal\nwill become a referendum for a given period, as other proposals may be proposed and tabled before\nit."}),(0,n.jsxs)(t.p,{children:["Note that it is possible for a single account to endorse a proposal multiple times. This is by\ndesign; it is the value, not the number of endorsements ",(0,n.jsx)(t.em,{children:"per se"}),", that counts in terms of weighting.\nIf there were a limit of one endorsement per account, it would be trivial for a user with, for\nexample, 1000 DOT to create ten accounts with 100 DOT instead of a single account with 1000 DOT.\nThus, no restrictions are made on the number of times a single account can endorse a proposal."]}),(0,n.jsx)(t.p,{children:'To endorse a proposal, navigate to the proposal you want to endorse and click on the "Endorse"\nbutton.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"endorsement button",src:o(67919).A+"",width:"1440",height:"128"})}),(0,n.jsx)(t.p,{children:'You will be prompted with the full details of the proposal (if the preimage has been submitted!) and\ncan then broadcast the transaction by clicking the blue "Endorse" button.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"endorsement confirmed",src:o(31452).A+"",width:"1184",height:"356"})}),(0,n.jsx)(t.p,{children:"Once successful, you will see your endorsement appear in the dropdown in the proposal details."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"endorsement result",src:o(24633).A+"",width:"1440",height:"336"})}),(0,n.jsx)(t.h2,{id:"voting-on-a-proposal",children:"Voting on a Proposal"}),(0,n.jsxs)(t.p,{children:["At the end of each launch period, the most endorsed proposal will move to a referendum. During this\ntime you can cast a vote for or against the proposal. You may also lock up your tokens for a greater\nlength of time to weigh your vote more strongly. During the time your tokens are\n",(0,n.jsx)(t.a,{href:"/docs/learn-account-balances#locks",children:"locked"}),", you are unable to transfer them, however they\ncan still be used for further votes. Locks are layered on top of each other, so an eight-week lock\ndoes not become a 15-week lock if you vote again a week later, rather another eight-week lock is\nplaced to extend the lock just one extra week."]}),(0,n.jsxs)(t.p,{children:["To vote on a referendum, navigate to the\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/democracy/",children:'"Democracy" tab of Polkadot Apps'}),'. Any active referendum\nwill show in the "referenda" column. Click the blue button "Vote" to cast a vote for the referendum.']}),(0,n.jsx)(t.p,{children:'If you would like to cast your vote for the proposal select the "Aye, I approve" option. If you\nwould like to cast your vote against the proposal in the referendum you will select "Nay, I do not\napprove" option.'}),(0,n.jsx)(t.p,{children:"The endorsement option is to select your conviction for this vote. The longer you are willing to\nlock your tokens, the stronger your vote will be weighted. The timeline for the conviction starts\nafter the voting period ends; tokens used for voting will always be locked until the end of the\nvoting period, no matter what conviction you vote with. Unwillingness to lock your tokens means that\nyour vote only counts for 10% of the tokens that you hold, while the maximum lock-up of 896 days\nmeans you can make your vote count for 600% of the tokens that you hold. It is possible to vote with\ntokens already locked by staking."}),(0,n.jsx)(t.p,{children:'When you are comfortable with the decision you have made, click the blue "Vote" button to submit\nyour transaction and wait for it to be included in a block.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"voting",src:o(97943).A+"",width:"940",height:"712"})}),(0,n.jsx)(t.h2,{id:"unlocking-locked-tokens",children:"Unlocking Locked Tokens"}),(0,n.jsxs)(t.p,{children:["Like ",(0,n.jsx)(t.a,{href:"/docs/learn-DOT#lazy-vesting",children:"vesting"}),", the tokens that are locked in democracy are\nunlocked lazily. This means that you, the user, must explicitly call an unlock extrinsic to make\nyour funds available again after the lock expires. Unbonding is another term you hear a lot in\nPolkadot, it means withdrawing your DOT that was used in staking. To know more about it, please see\n",(0,n.jsx)(t.a,{href:"/docs/learn-nominator",children:"here"}),"."]}),(0,n.jsxs)(t.p,{children:['You can do this from the "Accounts" page in\n',(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:"Polkadot-JS Apps"}),', unless you use Ledger (see below).\nFirst, check that your account has a "democracy" lock by opening the details on your balance. In the\nexample below the account has 150 KSM locked in democracy.']}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy balance details",src:o(77651).A+"",width:"342",height:"214"})}),(0,n.jsx)(t.p,{children:'Now you can click the menu button (the three dots) and find the option that says "Clear expired\ndemocracy locks". After selecting this option you may confirm the transaction and your locks will be\ncleared when successful.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy clear locks",src:o(8710).A+"",width:"366",height:"933"})}),(0,n.jsx)(t.h4,{id:"with-a-ledger-hardware-wallet-or-unlocking-very-old-locks",children:"With a Ledger hardware wallet or Unlocking Very Old Locks"}),(0,n.jsx)(t.p,{children:"If you do not see an option to clear expired democracy votes, it may be that the lock is very old.\nOr, if you are using the Ledger hardware wallet, you will not be able to issue the batch Unlock\naction from the UI."}),(0,n.jsx)(t.p,{children:"Instead, you must clear the lock by directly issuing the correct extrinsics."}),(0,n.jsxs)(t.p,{children:["Navigate to the ",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/extrinsics",children:"Extrinsics page"})," and submit the\nfollowing extrinsic: ",(0,n.jsx)(t.code,{children:"democracy.removeVote(index)"}),' using the account that you voted with. For the\nindex number (ReferendumIndex), enter the number of the referendum for which you voted ("12" in the\nimage below).']}),(0,n.jsx)(t.p,{children:"The number of the referendum for which you voted is visible in an explorer such as Subscan."}),(0,n.jsx)(t.p,{children:'You need to press the "Submit Transaction" button to submit the extrinsic.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy clear_lock_extrinsic_1",src:o(62127).A+"",width:"871",height:"234"})}),(0,n.jsx)(t.p,{children:"Now submit the following extrinsic: `democracy.unlock(target), where the target is your account\naddress."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy clear_lock_extrinsic_2",src:o(43220).A+"",width:"869",height:"237"})}),(0,n.jsxs)(t.p,{children:["If you return to the ",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:"Accounts page"}),", you should see that\nthe democracy lock has been released."]}),(0,n.jsxs)(t.p,{children:["Note that this applies only to locked DOT that were used for voting on referenda. In order to unlock\nDOT locked by voting for members of the Polkadot Council, you need to go to the\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/council",children:"Council"}),' page, click "Vote", and then click on "Unvote\nAll".']}),(0,n.jsx)(t.h2,{id:"delegate-a-vote",children:"Delegate a Vote"}),(0,n.jsx)(t.p,{children:"If you are too busy to keep up and vote on upcoming referenda, there is an option to delegate your\nvote to another account whose opinion you trust. When you delegate to another account, that account\ngets the added voting power of your tokens along with the conviction that you set. The conviction\nfor delegation works just like the conviction for regular voting, except your tokens may be locked\nlonger than they would normally since locking resets when you undelegate your vote."}),(0,n.jsx)(t.p,{children:"The account that is being delegated to does not make any special action once the delegation is in\nplace. They can continue to vote on referenda how they see fit. The difference is now when the\nDemocracy system tallies votes, the delegated tokens now are added to whatever vote the delegatee\nhas made."}),(0,n.jsxs)(t.p,{children:['You can delegate your vote to another account and even attach a "Conviction" to the delegation.\nNavigate to the ',(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:'"Accounts" tab on Polkadot-JS UI'}),' and\nclick on the three vertical dots and select "Delegate democracy votes" option for the account of\nyour choice. Then you would be presented with a pop-up window which lets you enter the account\ndetails of the delegated account, delegated amount and conviction. You can enter the relevant\ndetails and click on the delegate button and then sign and submit the transaction.']}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"delegate",src:o(34930).A+"",width:"1880",height:"724"})}),(0,n.jsx)(t.p,{children:"Your delegation will count toward whatever account you delegated for votes on until you explicitly\nundelegate your vote."}),(0,n.jsxs)(t.admonition,{title:"Query the chain state for an account's delegation preferences",type:"tip",children:[(0,n.jsxs)(t.p,{children:["It is possible to query the delegation preferences of any actively delegating account on the network\nthrough ",(0,n.jsx)(t.code,{children:"democracy.votingOf"})," extrinsic."]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"query delegation",src:o(33685).A+"",width:"2002",height:"992"})})]})]}),"\n",(0,n.jsx)(t.h2,{id:"undelegate-a-vote",children:"Undelegate a Vote"}),"\n",(0,n.jsxs)(t.admonition,{type:"caution",children:[(0,n.jsx)(t.p,{children:"If there is an existing lock due to a previous delegation change or undelegation, any new change or\nundelegation will restart the lock period for the larger DOT amount and the longest conviction\nperiod between the existing and the new lock."}),(0,n.jsx)(t.p,{children:"This will only matter to accounts with conviction, as the accounts with no conviction don't have any\nlock period."}),(0,n.jsx)(t.p,{children:"Examples:"}),(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Delegate 500 DOT with 1x conviction, then change delegation to 1000 DOT with 1x conviction, the\nlock period will reset for 1000 DOT with 1x conviction."}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Delegate 500 DOT with 3x conviction, then change the delegation to 1000 DOT with 1x conviction,\nthe lock period will reset for 1000 DOT with 3x conviction."}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Delegate 500 DOT with 1x conviction, then change the delegation to 200 DOT with 1x conviction,\nthe lock period will reset for 500 DOT with 1x conviction."}),"\n"]}),"\n"]}),(0,n.jsxs)(t.p,{children:["To understand this in further detail checkout\n",(0,n.jsx)(t.a,{href:"https://substrate.stackexchange.com/questions/5067/delegating-and-undelegating-during-the-lock-period-extends-it-for-the-initial-am",children:"this stackexchange post."})]})]}),"\n",(0,n.jsxs)(t.p,{children:['You may decide at some point in the future to remove your delegation to a target account. In this\ncase, your tokens will be locked for the maximum amount of time in accordance with the conviction\nyou set at the beginning of the delegation. For example, if you chose "2x" delegation for four weeks\nof lock-up time, your tokens will be locked for 4 weeks after sending the ',(0,n.jsx)(t.code,{children:"undelegate"})," transaction.\nOnce your vote has been undelegated, you are in control of making votes with it once again. You can\nstart to vote directly, or choose a different account to act as your delegate."]}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"undelegate"})," transaction must be sent from the account that you wish to clear of its delegation.\nFor example, if Alice has delegated her tokens to Bob, Alice would need to be the one to call the\n",(0,n.jsx)(t.code,{children:"undelegate"})," transaction to clear her delegation."]}),"\n",(0,n.jsxs)(t.p,{children:["The easiest way to do this is from the\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:'"Accounts" tab on Polkadot-JS UI'})," where you can manage the\ndelegation of your account."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"manage delegation",src:o(95136).A+"",width:"1990",height:"224"})}),"\n",(0,n.jsx)(t.p,{children:"When you click on \"manage delegation\", you would be presented with a pre-populated pop-up window\nwith that account's delegation preferences. Here, you have an option to undelegate or save the\nmodifications made to the account's delegation preferences."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"undelegate",src:o(89910).A+"",width:"1884",height:"732"})}),"\n",(0,n.jsx)(t.h2,{id:"voting-with-a-governance-proxy",children:"Voting with a Governance Proxy"}),"\n",(0,n.jsx)(t.p,{children:'Making a vote on behalf of a stash requires a "proxy" transaction from the Proxy pallet. When you\nchoose this transaction from the "Extrinsics" tab, it will let you select "vote" from the Democracy\npallet, and you will specify the index of the referendum that is being voted, the judgement (i.e.\n"Aye" for approval or "Nay" for rejection), and the conviction, just like a normal vote.'}),"\n",(0,n.jsxs)(t.p,{children:["For more material on adding and removing Governance proxies, as well as other types, please see the\n",(0,n.jsx)(t.a,{href:"/docs/learn-proxies",children:"Proxy page"}),"."]})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,t,o)=>{o.d(t,{A:()=>i});var n=o(96540),a=o(74848);const i=function(e){var t,o=e.message,i=(0,n.useState)(!0),s=i[0],r=i[1];return(0,a.jsx)(a.Fragment,{children:s&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},34930:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/delegate-vote-a8b4d534e0e004f8d0d4a32a45f3a77a.png"},31452:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/endorse-7e22987ceebef0c1ce17f475510eacc9.png"},67919:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/endorse1-6f9ed6c3eb99cad52bd07e250307b397.png"},24633:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/endorsed-list-460b771aedaf6e91f9caaaf728d76dfd.png"},95136:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/manage-delegation-19501197d96e688a08f257a1443f18cd.png"},98955:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/proposal-hash-1ae67063393c7e77001e538b9d4a67af.png"},65589:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/proposals-9b3cc3a8bd2ff1c01c0dbc7c90950d3f.png"},33685:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/query-delegation-fece7720f6282de8928688d61ee38477.png"},90005:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/submit_preimage-b0165c4aa5615a416bc1698ff21cba2e.png"},33677:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/submit_proposal-24cc24bb4fdb502da80a28082f779da8.png"},89910:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/undelegate-save-002a17067954a098e2942aa1a7583698.png"},97943:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/voting-4abb1178436833648da30b63d860aa10.png"},77651:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_balance_details-56b5c71fe66fc4a0d66ba4820a3cc6a9.png"},62127:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_1-c42556da5e59023abb388eac1a12aee2.png"},43220:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_2-f6a313a6755d15eb6ab26d33edb80a72.png"},8710:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_clear_locks-028d6202e19ad4410e07a5da8bb69277.png"},28453:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>r});var n=o(96540);const a={},i=n.createContext(a);function s(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e495ca4d.abba1ed3.js b/assets/js/e495ca4d.abba1ed3.js
deleted file mode 100644
index 681bab806de2..000000000000
--- a/assets/js/e495ca4d.abba1ed3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[662],{6099:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=o(74848),a=o(28453),i=o(67141);const s={id:"maintain-guides-democracy",title:"Participate in Democracy",sidebar_label:"Participate in Democracy",description:"Steps on how to participate in democracy.",keywords:["democracy","council","action","proposal"],slug:"../maintain-guides-democracy"},r=void 0,c={id:"maintain/archive/maintain-guides-democracy",title:"Participate in Democracy",description:"Steps on how to participate in democracy.",source:"@site/../docs/maintain/archive/maintain-guides-democracy.md",sourceDirName:"maintain/archive",slug:"/maintain/maintain-guides-democracy",permalink:"/docs/maintain/maintain-guides-democracy",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-democracy.md",tags:[],version:"current",lastUpdatedBy:"Radha",lastUpdatedAt:1729674368e3,frontMatter:{id:"maintain-guides-democracy",title:"Participate in Democracy",sidebar_label:"Participate in Democracy",description:"Steps on how to participate in democracy.",keywords:["democracy","council","action","proposal"],slug:"../maintain-guides-democracy"},sidebar:"docs",previous:{title:"Archive",permalink:"/docs/maintain-archive"},next:{title:"Join the Council",permalink:"/docs/maintain/maintain-guides-how-to-join-council"}},l={},d=[{value:"Important Parameters",id:"important-parameters",level:2},{value:"Proposing an Action",id:"proposing-an-action",level:2},{value:"Submitting a Preimage",id:"submitting-a-preimage",level:2},{value:"Endorsing a Proposal",id:"endorsing-a-proposal",level:2},{value:"Voting on a Proposal",id:"voting-on-a-proposal",level:2},{value:"Unlocking Locked Tokens",id:"unlocking-locked-tokens",level:2},{value:"With a Ledger hardware wallet or Unlocking Very Old Locks",id:"with-a-ledger-hardware-wallet-or-unlocking-very-old-locks",level:4},{value:"Delegate a Vote",id:"delegate-a-vote",level:2},{value:"Undelegate a Vote",id:"undelegate-a-vote",level:2},{value:"Voting with a Governance Proxy",id:"voting-with-a-governance-proxy",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{message:"The content on this page is archived. For up-to-date information about governance, see the\n[Polkadot OpenGov page](../../learn/learn-polkadot-opengov)."}),"\n",(0,n.jsxs)(t.p,{children:["The public referenda chamber is one of the three bodies of on-chain governance as it's instantiated\nin Polkadot and Kusama. The other two bodies are the\n",(0,n.jsx)(t.a,{href:"/docs/maintain/maintain-guides-how-to-join-council",children:"council"})," and the\n",(0,n.jsx)(t.a,{href:"/docs/learn/learn-governance#technical-committee",children:"technical committee"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["Public referenda can be proposed and voted on by any token holder in the system as long as they\nprovide a bond. After a proposal is made, others can agree with it by ",(0,n.jsx)(t.em,{children:"endorsing"})," it and putting up\ntokens equal to the original bond. During every launch period, the most endorsed proposal will be\nmoved to the public referenda table where it can be voted upon. Voters who are willing to lock up\ntheir tokens for a greater duration of time can do so and get their votes amplified. For more\ndetails on the governance system please see ",(0,n.jsx)(t.a,{href:"/docs/learn/learn-governance",children:"here"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"This guide will instruct token holders how to propose and vote on public referenda using the\nDemocracy module. Below are a few links to stay informed and directly engage with the community."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"Polkadot Direction"})," - a place to discuss\ngovernance and the future of Polkadot."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://matrix.to/#/#Kusama-Direction:parity.io",children:"Kusama Direction"})," - a place to discuss\ngovernance and the future of Kusama."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://polkadot.polkassembly.io",children:"Polkadot"})," and ",(0,n.jsx)(t.a,{href:"https://kusama.polkassembly.io",children:"Kusama"}),"\nPolkassembly - for current referenda, latest proposals, motions, treasury proposals, tips,\nbounties, and more."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"https://matrix.to/#/#dailydigest:web3.foundation",children:"Polkadot Daily Digest"})," - News about what is\nhappening in the Polkadot ecosystem, published every weekday except holidays."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"important-parameters",children:"Important Parameters"}),"\n",(0,n.jsx)(t.p,{children:"The important parameters to be aware of when voting using the Democracy module are as follows:"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Launch Period"})," - How often new public referenda are launched."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Voting Period"})," - How often votes for referenda are tallied."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Emergency Voting Period"})," - The minimum voting period for a fast-tracked emergency referendum."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Minimum Deposit"})," - The minimum amount to be used as a deposit for a public referendum proposal."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Enactment Period"})," - The minimum period for locking funds ",(0,n.jsx)(t.em,{children:"and"})," the period between a proposal\nbeing approved and enacted."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Cooloff Period"})," - The period in blocks where a proposal may not be re-submitted after being\nvetoed."]}),"\n",(0,n.jsx)(t.h2,{id:"proposing-an-action",children:"Proposing an Action"}),"\n",(0,n.jsx)(t.p,{children:'Proposing an action to be taken requires you to bond some tokens. In order to ensure you have enough\ntokens to make the minimum deposit, you can check the parameter in the chain state. Navigate to\nDeveloper > Chain State > Constants > selected constant query: democracy > minimumDeposit: u128 and\nthen click on the plus button. The bonded tokens will only be released once the proposal is tabled\n(that is, brought to a vote); there is no way for the user to "revoke" their proposal and get the\nbond back before it has become a referendum. Since it is essentially impossible to predict\ndefinitely when a proposal may become a referendum (if ever), this means that any tokens bonded will\nbe locked for an indeterminate amount of time.'}),"\n",(0,n.jsxs)(t.admonition,{title:"Proposals cannot be revoked by the proposer, even if they never turn into a referendum",type:"info",children:[(0,n.jsx)(t.p,{children:"It is important to realize that there is no guarantee that DOT you use for proposing or endorsing a\nproposal will be returned to that account in any given timeframe."}),(0,n.jsx)(t.p,{children:'::: On Polkadot Apps, you can navigate to the Governance -> Democracy tab to make a new proposal. In\norder to submit a proposal, you will need to submit what\'s called the preimage hash. The preimage\nhash is simply the hash of the proposal to be enacted. The easiest way to get the preimage hash is\nby clicking on the "Submit preimage" button and configuring the action that you are proposing.'}),(0,n.jsxs)(t.p,{children:["The example below demonstrates the creation of a proposal on Kusama (",(0,n.jsx)(t.strong,{children:"the same procedure applies to\nPolkadot"}),'). If you wanted to propose that a remark "Expect Chaos!" is added, the preimage hash\nwould be ',(0,n.jsx)(t.code,{children:"0x8ac3f722caf7677254e25ca4ad77d533ca893c7d2ad4009e258d749f2004ef94"}),". You can copy this\npreimage hash and save it for the next step. There is no need to click Submit Preimage at this\npoint, though you could. We'll go over that in the next section."]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"submit preimage",src:o(90005).A+"",width:"1182",height:"526"})}),(0,n.jsxs)(t.p,{children:['Now you will click on the "Submit proposal" button and enter the preimage hash in the input titled\n"preimage hash" and ',(0,n.jsx)(t.em,{children:"at least"}),' the minimum deposit into the "locked balance" field. Click on the\n"Submit proposal" button and confirm the transaction. You should now see your proposal appear in the\n"proposals" column on the page.']}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"submit proposal",src:o(33677).A+"",width:"1184",height:"456"})}),(0,n.jsx)(t.p,{children:"Now your proposal is visible to anyone who accesses the chain and others can endorse it or submit a\npreimage. However, it's hard to tell what exactly this proposal does since it shows the hash of the\naction. Other holders will not be able to make a judgement on whether they endorse it or not until\nsomeone submits the actual preimage for this proposal. In the next step, you will submit the\npreimage."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"proposal hash",src:o(98955).A+"",width:"1424",height:"276"})}),(0,n.jsx)(t.h2,{id:"submitting-a-preimage",children:"Submitting a Preimage"}),(0,n.jsx)(t.p,{children:"The act of making a proposal is split from submitting the preimage for the proposal since the\nstorage cost of submitting a large preimage could be pretty expensive. Allowing for the preimage\nsubmission to come as a separate transaction means that another account could submit the preimage\nfor you if you don't have the funds to do so. It also means that you don't have to pay so many funds\nright away as you can prove the preimage hash out-of-band."}),(0,n.jsx)(t.p,{children:"However, at some point before the proposal passes you will need to submit the preimage or else the\nproposal cannot be enacted. The guide will now show you how to do this."}),(0,n.jsx)(t.p,{children:'Click on the blue "Submit preimage" button and configure it to be the same as what you did before to\nacquire the preimage hash. This time, instead of copying the hash to another tab, you will follow\nthrough and click "Submit preimage" and confirm the transaction.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"submit preimage",src:o(90005).A+"",width:"1182",height:"526"})}),(0,n.jsx)(t.p,{children:"Once the transaction is included you should see the UI update with the information for your already\nsubmitted proposal."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"proposals",src:o(65589).A+"",width:"1424",height:"276"})}),(0,n.jsx)(t.h2,{id:"endorsing-a-proposal",children:"Endorsing a Proposal"}),(0,n.jsx)(t.p,{children:"Endorsing a proposal means that you are agreeing with the proposal and backing it with an equal\namount of deposit as was originally locked. The bonded tokens will be released once the proposal is\ntabled (that is, brought to a vote), just like the original proposer's bond. By endorsing a proposal\nyou will move it higher up the rank of proposals. The most endorsed proposal \u2014 in value, not\nthe number of supporters \u2014 will be brought to a referendum every launch period."}),(0,n.jsx)(t.p,{children:"It is important to note that there is no way to stop or cancel endorsing a proposal once it has been\ndone. Therefore, the DOT that was endorsed will be reserved until the proposal is tabled as a\nreferendum. This is an indeterminate amount of time, since there is no guarantee that a proposal\nwill become a referendum for a given period, as other proposals may be proposed and tabled before\nit."}),(0,n.jsxs)(t.p,{children:["Note that it is possible for a single account to endorse a proposal multiple times. This is by\ndesign; it is the value, not the number of endorsements ",(0,n.jsx)(t.em,{children:"per se"}),", that counts in terms of weighting.\nIf there were a limit of one endorsement per account, it would be trivial for a user with, for\nexample, 1000 DOT to create ten accounts with 100 DOT instead of a single account with 1000 DOT.\nThus, no restrictions are made on the number of times a single account can endorse a proposal."]}),(0,n.jsx)(t.p,{children:'To endorse a proposal, navigate to the proposal you want to endorse and click on the "Endorse"\nbutton.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"endorsement button",src:o(67919).A+"",width:"1440",height:"128"})}),(0,n.jsx)(t.p,{children:'You will be prompted with the full details of the proposal (if the preimage has been submitted!) and\ncan then broadcast the transaction by clicking the blue "Endorse" button.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"endorsement confirmed",src:o(31452).A+"",width:"1184",height:"356"})}),(0,n.jsx)(t.p,{children:"Once successful, you will see your endorsement appear in the dropdown in the proposal details."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"endorsement result",src:o(24633).A+"",width:"1440",height:"336"})}),(0,n.jsx)(t.h2,{id:"voting-on-a-proposal",children:"Voting on a Proposal"}),(0,n.jsxs)(t.p,{children:["At the end of each launch period, the most endorsed proposal will move to a referendum. During this\ntime you can cast a vote for or against the proposal. You may also lock up your tokens for a greater\nlength of time to weigh your vote more strongly. During the time your tokens are\n",(0,n.jsx)(t.a,{href:"/docs/learn-account-balances#locks",children:"locked"}),", you are unable to transfer them, however they\ncan still be used for further votes. Locks are layered on top of each other, so an eight-week lock\ndoes not become a 15-week lock if you vote again a week later, rather another eight-week lock is\nplaced to extend the lock just one extra week."]}),(0,n.jsxs)(t.p,{children:["To vote on a referendum, navigate to the\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/democracy/",children:'"Democracy" tab of Polkadot Apps'}),'. Any active referendum\nwill show in the "referenda" column. Click the blue button "Vote" to cast a vote for the referendum.']}),(0,n.jsx)(t.p,{children:'If you would like to cast your vote for the proposal select the "Aye, I approve" option. If you\nwould like to cast your vote against the proposal in the referendum you will select "Nay, I do not\napprove" option.'}),(0,n.jsx)(t.p,{children:"The endorsement option is to select your conviction for this vote. The longer you are willing to\nlock your tokens, the stronger your vote will be weighted. The timeline for the conviction starts\nafter the voting period ends; tokens used for voting will always be locked until the end of the\nvoting period, no matter what conviction you vote with. Unwillingness to lock your tokens means that\nyour vote only counts for 10% of the tokens that you hold, while the maximum lock-up of 896 days\nmeans you can make your vote count for 600% of the tokens that you hold. It is possible to vote with\ntokens already locked by staking."}),(0,n.jsx)(t.p,{children:'When you are comfortable with the decision you have made, click the blue "Vote" button to submit\nyour transaction and wait for it to be included in a block.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"voting",src:o(97943).A+"",width:"940",height:"712"})}),(0,n.jsx)(t.h2,{id:"unlocking-locked-tokens",children:"Unlocking Locked Tokens"}),(0,n.jsxs)(t.p,{children:["Like ",(0,n.jsx)(t.a,{href:"/docs/learn-DOT#lazy-vesting",children:"vesting"}),", the tokens that are locked in democracy are\nunlocked lazily. This means that you, the user, must explicitly call an unlock extrinsic to make\nyour funds available again after the lock expires. Unbonding is another term you hear a lot in\nPolkadot, it means withdrawing your DOT that was used in staking. To know more about it, please see\n",(0,n.jsx)(t.a,{href:"/docs/learn-nominator",children:"here"}),"."]}),(0,n.jsxs)(t.p,{children:['You can do this from the "Accounts" page in\n',(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:"Polkadot-JS Apps"}),', unless you use Ledger (see below).\nFirst, check that your account has a "democracy" lock by opening the details on your balance. In the\nexample below the account has 150 KSM locked in democracy.']}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy balance details",src:o(77651).A+"",width:"342",height:"214"})}),(0,n.jsx)(t.p,{children:'Now you can click the menu button (the three dots) and find the option that says "Clear expired\ndemocracy locks". After selecting this option you may confirm the transaction and your locks will be\ncleared when successful.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy clear locks",src:o(8710).A+"",width:"366",height:"933"})}),(0,n.jsx)(t.h4,{id:"with-a-ledger-hardware-wallet-or-unlocking-very-old-locks",children:"With a Ledger hardware wallet or Unlocking Very Old Locks"}),(0,n.jsx)(t.p,{children:"If you do not see an option to clear expired democracy votes, it may be that the lock is very old.\nOr, if you are using the Ledger hardware wallet, you will not be able to issue the batch Unlock\naction from the UI."}),(0,n.jsx)(t.p,{children:"Instead, you must clear the lock by directly issuing the correct extrinsics."}),(0,n.jsxs)(t.p,{children:["Navigate to the ",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/extrinsics",children:"Extrinsics page"})," and submit the\nfollowing extrinsic: ",(0,n.jsx)(t.code,{children:"democracy.removeVote(index)"}),' using the account that you voted with. For the\nindex number (ReferendumIndex), enter the number of the referendum for which you voted ("12" in the\nimage below).']}),(0,n.jsx)(t.p,{children:"The number of the referendum for which you voted is visible in an explorer such as Subscan."}),(0,n.jsx)(t.p,{children:'You need to press the "Submit Transaction" button to submit the extrinsic.'}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy clear_lock_extrinsic_1",src:o(62127).A+"",width:"871",height:"234"})}),(0,n.jsx)(t.p,{children:"Now submit the following extrinsic: `democracy.unlock(target), where the target is your account\naddress."}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"democracy clear_lock_extrinsic_2",src:o(43220).A+"",width:"869",height:"237"})}),(0,n.jsxs)(t.p,{children:["If you return to the ",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:"Accounts page"}),", you should see that\nthe democracy lock has been released."]}),(0,n.jsxs)(t.p,{children:["Note that this applies only to locked DOT that were used for voting on referenda. In order to unlock\nDOT locked by voting for members of the Polkadot Council, you need to go to the\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/council",children:"Council"}),' page, click "Vote", and then click on "Unvote\nAll".']}),(0,n.jsx)(t.h2,{id:"delegate-a-vote",children:"Delegate a Vote"}),(0,n.jsx)(t.p,{children:"If you are too busy to keep up and vote on upcoming referenda, there is an option to delegate your\nvote to another account whose opinion you trust. When you delegate to another account, that account\ngets the added voting power of your tokens along with the conviction that you set. The conviction\nfor delegation works just like the conviction for regular voting, except your tokens may be locked\nlonger than they would normally since locking resets when you undelegate your vote."}),(0,n.jsx)(t.p,{children:"The account that is being delegated to does not make any special action once the delegation is in\nplace. They can continue to vote on referenda how they see fit. The difference is now when the\nDemocracy system tallies votes, the delegated tokens now are added to whatever vote the delegatee\nhas made."}),(0,n.jsxs)(t.p,{children:['You can delegate your vote to another account and even attach a "Conviction" to the delegation.\nNavigate to the ',(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:'"Accounts" tab on Polkadot-JS UI'}),' and\nclick on the three vertical dots and select "Delegate democracy votes" option for the account of\nyour choice. Then you would be presented with a pop-up window which lets you enter the account\ndetails of the delegated account, delegated amount and conviction. You can enter the relevant\ndetails and click on the delegate button and then sign and submit the transaction.']}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"delegate",src:o(34930).A+"",width:"1880",height:"724"})}),(0,n.jsx)(t.p,{children:"Your delegation will count toward whatever account you delegated for votes on until you explicitly\nundelegate your vote."}),(0,n.jsxs)(t.admonition,{title:"Query the chain state for an account's delegation preferences",type:"tip",children:[(0,n.jsxs)(t.p,{children:["It is possible to query the delegation preferences of any actively delegating account on the network\nthrough ",(0,n.jsx)(t.code,{children:"democracy.votingOf"})," extrinsic."]}),(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"query delegation",src:o(33685).A+"",width:"2002",height:"992"})})]})]}),"\n",(0,n.jsx)(t.h2,{id:"undelegate-a-vote",children:"Undelegate a Vote"}),"\n",(0,n.jsxs)(t.admonition,{type:"caution",children:[(0,n.jsx)(t.p,{children:"If there is an existing lock due to a previous delegation change or undelegation, any new change or\nundelegation will restart the lock period for the larger DOT amount and the longest conviction\nperiod between the existing and the new lock."}),(0,n.jsx)(t.p,{children:"This will only matter to accounts with conviction, as the accounts with no conviction don't have any\nlock period."}),(0,n.jsx)(t.p,{children:"Examples:"}),(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Delegate 500 DOT with 1x conviction, then change delegation to 1000 DOT with 1x conviction, the\nlock period will reset for 1000 DOT with 1x conviction."}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Delegate 500 DOT with 3x conviction, then change the delegation to 1000 DOT with 1x conviction,\nthe lock period will reset for 1000 DOT with 3x conviction."}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["\n",(0,n.jsx)(t.p,{children:"Delegate 500 DOT with 1x conviction, then change the delegation to 200 DOT with 1x conviction,\nthe lock period will reset for 500 DOT with 1x conviction."}),"\n"]}),"\n"]}),(0,n.jsxs)(t.p,{children:["To understand this in further detail checkout\n",(0,n.jsx)(t.a,{href:"https://substrate.stackexchange.com/questions/5067/delegating-and-undelegating-during-the-lock-period-extends-it-for-the-initial-am",children:"this stackexchange post."})]})]}),"\n",(0,n.jsxs)(t.p,{children:['You may decide at some point in the future to remove your delegation to a target account. In this\ncase, your tokens will be locked for the maximum amount of time in accordance with the conviction\nyou set at the beginning of the delegation. For example, if you chose "2x" delegation for four weeks\nof lock-up time, your tokens will be locked for 4 weeks after sending the ',(0,n.jsx)(t.code,{children:"undelegate"})," transaction.\nOnce your vote has been undelegated, you are in control of making votes with it once again. You can\nstart to vote directly, or choose a different account to act as your delegate."]}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"undelegate"})," transaction must be sent from the account that you wish to clear of its delegation.\nFor example, if Alice has delegated her tokens to Bob, Alice would need to be the one to call the\n",(0,n.jsx)(t.code,{children:"undelegate"})," transaction to clear her delegation."]}),"\n",(0,n.jsxs)(t.p,{children:["The easiest way to do this is from the\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/accounts",children:'"Accounts" tab on Polkadot-JS UI'})," where you can manage the\ndelegation of your account."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"manage delegation",src:o(95136).A+"",width:"1990",height:"224"})}),"\n",(0,n.jsx)(t.p,{children:"When you click on \"manage delegation\", you would be presented with a pre-populated pop-up window\nwith that account's delegation preferences. Here, you have an option to undelegate or save the\nmodifications made to the account's delegation preferences."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"undelegate",src:o(89910).A+"",width:"1884",height:"732"})}),"\n",(0,n.jsx)(t.h2,{id:"voting-with-a-governance-proxy",children:"Voting with a Governance Proxy"}),"\n",(0,n.jsx)(t.p,{children:'Making a vote on behalf of a stash requires a "proxy" transaction from the Proxy pallet. When you\nchoose this transaction from the "Extrinsics" tab, it will let you select "vote" from the Democracy\npallet, and you will specify the index of the referendum that is being voted, the judgement (i.e.\n"Aye" for approval or "Nay" for rejection), and the conviction, just like a normal vote.'}),"\n",(0,n.jsxs)(t.p,{children:["For more material on adding and removing Governance proxies, as well as other types, please see the\n",(0,n.jsx)(t.a,{href:"/docs/learn-proxies",children:"Proxy page"}),"."]})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,t,o)=>{o.d(t,{A:()=>i});var n=o(96540),a=o(74848);const i=function(e){var t,o=e.message,i=(0,n.useState)(!0),s=i[0],r=i[1];return(0,a.jsx)(a.Fragment,{children:s&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},34930:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/delegate-vote-a8b4d534e0e004f8d0d4a32a45f3a77a.png"},31452:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/endorse-7e22987ceebef0c1ce17f475510eacc9.png"},67919:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/endorse1-6f9ed6c3eb99cad52bd07e250307b397.png"},24633:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/endorsed-list-460b771aedaf6e91f9caaaf728d76dfd.png"},95136:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/manage-delegation-19501197d96e688a08f257a1443f18cd.png"},98955:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/proposal-hash-1ae67063393c7e77001e538b9d4a67af.png"},65589:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/proposals-9b3cc3a8bd2ff1c01c0dbc7c90950d3f.png"},33685:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/query-delegation-fece7720f6282de8928688d61ee38477.png"},90005:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/submit_preimage-b0165c4aa5615a416bc1698ff21cba2e.png"},33677:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/submit_proposal-24cc24bb4fdb502da80a28082f779da8.png"},89910:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/undelegate-save-002a17067954a098e2942aa1a7583698.png"},97943:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/voting-4abb1178436833648da30b63d860aa10.png"},77651:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_balance_details-56b5c71fe66fc4a0d66ba4820a3cc6a9.png"},62127:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_1-c42556da5e59023abb388eac1a12aee2.png"},43220:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_2-f6a313a6755d15eb6ab26d33edb80a72.png"},8710:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/democracy_clear_locks-028d6202e19ad4410e07a5da8bb69277.png"},28453:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>r});var n=o(96540);const a={},i=n.createContext(a);function s(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/ed3409b3.aa23e07b.js b/assets/js/ed3409b3.aa23e07b.js
new file mode 100644
index 000000000000..056ed10fe003
--- /dev/null
+++ b/assets/js/ed3409b3.aa23e07b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4117],{1448:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var o=n(74848),s=n(28453),a=n(67141);const i={id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounty Guides",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},r=void 0,d={id:"learn/learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",description:"Polkadot-JS Guides for Bounties",source:"@site/../docs/learn/learn-guides-bounties.md",sourceDirName:"learn",slug:"/learn-guides-bounties",permalink:"/docs/learn-guides-bounties",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-bounties.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounty Guides",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},sidebar:"docs",previous:{title:"Treasury Guides",permalink:"/docs/learn-guides-treasury"},next:{title:"Identity Guides",permalink:"/docs/learn-guides-identity"}},l={},u=[{value:"Submit a Bounty Proposal",id:"submit-a-bounty-proposal",level:2},{value:"Assign a Curator to a Bounty",id:"assign-a-curator-to-a-bounty",level:2},{value:"Create and Award Child Bounties",id:"create-and-award-child-bounties",level:2},{value:"Claim a Child Bounty Reward",id:"claim-a-child-bounty-reward",level:2},{value:"Close Child Bounties",id:"close-child-bounties",level:2},{value:"Refill Parent Bounties",id:"refill-parent-bounties",level:2}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,o.jsxs)(t.p,{children:["See ",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov-treasury#bounties",children:"this page"})," to learn about Bounties."]}),"\n",(0,o.jsx)(t.admonition,{title:"Notify the Polkadot Direction Channel",type:"info",children:(0,o.jsxs)(t.p,{children:["Remember always to notify the\n",(0,o.jsx)(t.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"Polkadot Direction Element Channel"})," about\n",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov#referenda",children:"OpenGov referenda"})," so that the community can start reviewing\nthem and voting on them."]})}),"\n",(0,o.jsx)(t.h2,{id:"submit-a-bounty-proposal",children:"Submit a Bounty Proposal"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_Submit_a_Bounty_Proposal_on_Polkadotjs_Apps__Ps_zfmNXRbm6PuZaj28JBQ",children:"this written tutorial"}),"\nto learn more about how to submit a bounty proposal."]})}),"\n",(0,o.jsx)(t.p,{children:"See the video tutorial below to learn how you can create a bounty and submit it for approval through\nan OpenGov referendum."}),"\n",(0,o.jsxs)("div",{className:"row",children:[(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://youtu.be/Qv_nJVcvQr8?t=52",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/Qv_nJVcvQr8/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://youtu.be/Qv_nJVcvQr8?t=52",children:"Introduction to Bounties"})})]}),(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/8Cft1-8RWmk/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk",children:"Submit a Bounty"})})]})]}),"\n",(0,o.jsxs)(t.p,{children:['When you add a bounty, this will show as "proposed" in the main\n',(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),'. Once the community approves your bounty\nproposal as an OpenGov referendum, the bounty will show as "funded" at the end of the\n',(0,o.jsx)(t.a,{href:"/docs/glossary#spend-period",children:"spending period"})," on the main\n",(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),". You can then proceed with assigning\ncurators to the bounty."]}),"\n",(0,o.jsxs)(t.p,{children:["To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will need to find an off-chain\nmedium to explain the proposal, for example a bounty proposal document on\n",(0,o.jsx)(t.a,{href:"https://polkadot.polkassembly.io/opengov",children:"Polkassembly"})," or\n",(0,o.jsx)(t.a,{href:"https://polkadot.subsquare.io/",children:"Subsquare"}),".\n",(0,o.jsx)(t.a,{href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing",children:"This template"}),"\ncan be used to submit all the information needed by OpenGov voters to make an informed decision."]}),"\n",(0,o.jsxs)(t.p,{children:["Submitting a bounty proposal will require a\n",(0,o.jsx)(t.a,{href:"/docs/chain-state-values#bounty-deposit",children:"deposit"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"assign-a-curator-to-a-bounty",children:"Assign a Curator to a Bounty"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_Assign_a_Curator_to_a_Bounty_on_Polkadotjs_Apps__JgK3eSfXQdm_PSvtz8TelQ",children:"this written tutorial"}),"\nto learn more about how to assign a curator to a bounty."]})}),"\n",(0,o.jsxs)(t.p,{children:['Once your bounty is shown as "funded" on the main\n',(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),", you can propose a bounty curator. The\nreferendum must be submitted on the same track used for proposing the bounty or a track with a\nhigher spending limit\n(",(0,o.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk/blob/22e90b1c11509f1f13083f1ac6c5f028f54432e7/substrate/frame/bounties/src/lib.rs#L412",children:"see the code snippet"}),").\nFor example, if the bounty was submitted to the Medium Spender Track, the curator must be proposed\nusing the same track or the Big Spender or Treasurer tracks. See the video tutorial below to learn\nhow you can add a curator to a bounty and submit it for approval through an OpenGov referendum."]}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/TM7vk3oP9IA/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA",children:"Assign Curator to a Bounty"})})]})}),"\n",(0,o.jsxs)(t.p,{children:["Once your OpenGov referendum has been approved by the community and served the required\n",(0,o.jsx)(t.a,{href:"/docs/glossary#spend-period",children:"spending period"}),', the bounty will still show as "funded" on\nthe main ',(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"})," and await the curator's\nacceptance. The curator must formally accept the curator role by signing a ",(0,o.jsx)(t.code,{children:"bounties.acceptCurator"}),"\nextrinsic. More information about when to do this can be found on the main\n",(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),'. Only after the curators claim their\ncandidacy the bounty will show as "active" on the main Bounty page.']}),"\n",(0,o.jsxs)(t.admonition,{title:"Curator assignment call must be executed after bounty is funded",type:"info",children:[(0,o.jsx)(t.p,{children:"Curator assignment must take place after the bounty has been funded, and approved bounties are\nfunded after a spend period has been completed. A curator assignment referendum cannot be executed\nduring the same spend period when the bounty is funded."}),(0,o.jsxs)(t.p,{children:["If your bounty has been awarded but is not funded yet, you need to make sure that the curator\nassignment referendum gets enacted in the subsequent spending period (you can set a delay in\n",(0,o.jsx)(t.a,{href:"/docs/learn-guides-polkadot-opengov#submitting-a-proposal",children:"Polkadot-JS"})," when you submit the proposal\nduring the current spend period)."]})]}),"\n",(0,o.jsx)(t.h2,{id:"create-and-award-child-bounties",children:"Create and Award Child Bounties"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_Create_and_Award_a_Child_Bounty__Q-YFGkYAR3WxMnvYGHiU3Q",children:"this written tutorial"}),"\nto learn more about how to create and award child bounties."]})}),"\n",(0,o.jsx)(t.admonition,{title:"Remember to add contextual information about child bounties",type:"info",children:(0,o.jsxs)(t.p,{children:["When you add child bounties, please add contextual information on the governance forums\n",(0,o.jsx)(t.a,{href:"https://polkassembly.io/",children:"Polkassembly"})," or ",(0,o.jsx)(t.a,{href:"https://polkadot.subsquare.io/",children:"Subsquare"}),"."]})}),"\n",(0,o.jsx)(t.p,{children:"See the video tutorial below to learn how to create a child bounty, assign a curator, and award a\nchild bounty."}),"\n",(0,o.jsx)(t.p,{children:"The video will show how to create and award a child bounty using a batch call. We will also include\nproposing and approving curator candidacy for the child bounty. The calls can be executed\nseparately, depending on the process curators consider appropriate for their bounty."}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/mLpvx0OQoyM/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM",children:"Create and Award Child Bounties"})})]})}),"\n",(0,o.jsx)(t.p,{children:"Once a child bounty is awarded, awardees can claim the child bounty."}),"\n",(0,o.jsx)(t.h2,{id:"claim-a-child-bounty-reward",children:"Claim a Child Bounty Reward"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_claim_a_Child_Bounty_reward_on_Polkadotjs__t3V7NDUjQlus40EUjc-5Kw",children:"this written tutorial"}),"\nto learn more about how to claim a child bounty reward."]})}),"\n",(0,o.jsxs)(t.p,{children:["The status of child bounties can be viewed on the\n",(0,o.jsx)(t.a,{href:"https://polkadot.polkassembly.io/bounties",children:"Polkassembly Bounty page"}),' under the specific parent\nbounty. A child bounty status can be "Added", "Awarded", or "Claimed". For example, the parent\nbounty 17 refers to the Community Events Bounty, which has 183 child bounties.']}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"polkassembly-child-bounties",src:n(98445).A+"",width:"2408",height:"1053"})}),"\n",(0,o.jsx)(t.p,{children:"After the child bounty has been rewarded, follow the guidelines in the video tutorial below to learn\nhow to claim a child bounty reward. Note that the extrinsic to claim the child bounty reward is\npermissionless, and anyone can initiate the claim on behalf of the beneficiary."}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/db82aHgy23c/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c",children:"Claim Child Bounty Reward"})})]})}),"\n",(0,o.jsx)(t.h2,{id:"close-child-bounties",children:"Close Child Bounties"}),"\n",(0,o.jsxs)(t.p,{children:["Child bounties can be closed without awarding them. To close a child bounty, you must submit a\n",(0,o.jsx)(t.code,{children:"childBounties.closeChild.Bounty"})," extrinsic, specifying the parent bounty and child bounty IDs. Only\nthe parent bounty curator can sign this transaction, resulting in the child bounty\u2019s curator deposit\nbeing returned."]}),"\n",(0,o.jsx)(t.p,{children:"See the video tutorial below to learn how to close a child bounty."}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=2109s",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/Qv_nJVcvQr8/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=2109s",children:"Close a Child Bounty"})})]})}),"\n",(0,o.jsxs)(t.p,{children:["If the child bounty curator acts maliciously, the parent bounty curator can submit a\n",(0,o.jsx)(t.code,{children:"childBounties.unassignCurator"})," that slashes the curator's deposit."]}),"\n",(0,o.jsx)(t.h2,{id:"refill-parent-bounties",children:"Refill Parent Bounties"}),"\n",(0,o.jsxs)(t.p,{children:["To refill a parent bounty,\n",(0,o.jsx)(t.a,{href:"/docs/learn-guides-polkadot-opengov#submitting-a-preimage",children:"an OpenGov referendum must be submitted"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The preimage must contain a ",(0,o.jsx)(t.code,{children:"treasury.spendLocal"})," extrinsic specifying the amount of tokens to be\nsent from the treasury to the receiver's address, in this case the\n",(0,o.jsx)(t.a,{href:"/docs/learn-account-advanced#system-accounts",children:"system account"})," of the\n",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov-treasury#bounties",children:"parent bounty"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["To get the bounty system account of a parent bounty, go to\n",(0,o.jsx)(t.a,{href:"https://polkadot.subsquare.io/treasury/bounties",children:"Subsquare"}),", search for the bounty name, and the\naddress will be shown under Metadata."]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},67141:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(96540),s=n(74848);const a=function(e){var t,n=e.message,a=(0,o.useState)(!0),i=a[0],r=a[1];return(0,s.jsx)(s.Fragment,{children:i&&(0,s.jsxs)("div",{className:"message-box",children:[(0,s.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,s.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},98445:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/polkassembly-child-bounties-fde994e770f3e109a07752068aa417b1.png"},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var o=n(96540);const s={},a=o.createContext(s);function i(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/ed3409b3.c0861717.js b/assets/js/ed3409b3.c0861717.js
deleted file mode 100644
index d96baee9536d..000000000000
--- a/assets/js/ed3409b3.c0861717.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4117],{1448:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var o=n(74848),s=n(28453),a=n(67141);const i={id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounty Guides",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},r=void 0,d={id:"learn/learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",description:"Polkadot-JS Guides for Bounties",source:"@site/../docs/learn/learn-guides-bounties.md",sourceDirName:"learn",slug:"/learn-guides-bounties",permalink:"/docs/learn-guides-bounties",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-bounties.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1727078287e3,frontMatter:{id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounty Guides",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},sidebar:"docs",previous:{title:"Treasury Guides",permalink:"/docs/learn-guides-treasury"},next:{title:"Identity Guides",permalink:"/docs/learn-guides-identity"}},l={},u=[{value:"Submit a Bounty Proposal",id:"submit-a-bounty-proposal",level:2},{value:"Assign a Curator to a Bounty",id:"assign-a-curator-to-a-bounty",level:2},{value:"Create and Award Child Bounties",id:"create-and-award-child-bounties",level:2},{value:"Claim a Child Bounty Reward",id:"claim-a-child-bounty-reward",level:2},{value:"Close Child Bounties",id:"close-child-bounties",level:2},{value:"Refill Parent Bounties",id:"refill-parent-bounties",level:2}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",img:"img",p:"p",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,o.jsxs)(t.p,{children:["See ",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov-treasury#bounties",children:"this page"})," to learn about Bounties."]}),"\n",(0,o.jsx)(t.admonition,{title:"Notify the Polkadot Direction Channel",type:"info",children:(0,o.jsxs)(t.p,{children:["Remember always to notify the\n",(0,o.jsx)(t.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"Polkadot Direction Element Channel"})," about\n",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov#referenda",children:"OpenGov referenda"})," so that the community can start reviewing\nthem and voting on them."]})}),"\n",(0,o.jsx)(t.h2,{id:"submit-a-bounty-proposal",children:"Submit a Bounty Proposal"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_Submit_a_Bounty_Proposal_on_Polkadotjs_Apps__Ps_zfmNXRbm6PuZaj28JBQ",children:"this written tutorial"}),"\nto learn more about how to submit a bounty proposal."]})}),"\n",(0,o.jsx)(t.p,{children:"See the video tutorial below to learn how you can create a bounty and submit it for approval through\nan OpenGov referendum."}),"\n",(0,o.jsxs)("div",{className:"row",children:[(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://youtu.be/Qv_nJVcvQr8?t=52",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/Qv_nJVcvQr8/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://youtu.be/Qv_nJVcvQr8?t=52",children:"Introduction to Bounties"})})]}),(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/8Cft1-8RWmk/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk",children:"Submit a Bounty"})})]})]}),"\n",(0,o.jsxs)(t.p,{children:['When you add a bounty, this will show as "proposed" in the main\n',(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),'. Once the community approves your bounty\nproposal as an OpenGov referendum, the bounty will show as "funded" at the end of the\n',(0,o.jsx)(t.a,{href:"/docs/glossary#spend-period",children:"spending period"})," on the main\n",(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),". You can then proceed with assigning\ncurators to the bounty."]}),"\n",(0,o.jsxs)(t.p,{children:["To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will need to find an off-chain\nmedium to explain the proposal, for example a bounty proposal document on\n",(0,o.jsx)(t.a,{href:"https://polkadot.polkassembly.io/opengov",children:"Polkassembly"})," or\n",(0,o.jsx)(t.a,{href:"https://polkadot.subsquare.io/",children:"Subsquare"}),".\n",(0,o.jsx)(t.a,{href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing",children:"This template"}),"\ncan be used to submit all the information needed by OpenGov voters to make an informed decision."]}),"\n",(0,o.jsxs)(t.p,{children:["Submitting a bounty proposal will require a\n",(0,o.jsx)(t.a,{href:"/docs/chain-state-values#bounty-deposit",children:"deposit"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"assign-a-curator-to-a-bounty",children:"Assign a Curator to a Bounty"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_Assign_a_Curator_to_a_Bounty_on_Polkadotjs_Apps__JgK3eSfXQdm_PSvtz8TelQ",children:"this written tutorial"}),"\nto learn more about how to assign a curator to a bounty."]})}),"\n",(0,o.jsxs)(t.p,{children:['Once your bounty is shown as "funded" on the main\n',(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),", you can propose a bounty curator. The\nreferendum must be submitted on the same track used for proposing the bounty or a track with a\nhigher spending limit\n(",(0,o.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk/blob/22e90b1c11509f1f13083f1ac6c5f028f54432e7/substrate/frame/bounties/src/lib.rs#L412",children:"see the code snippet"}),").\nFor example, if the bounty was submitted to the Medium Spender Track, the curator must be proposed\nusing the same track or the Big Spender or Treasurer tracks. See the video tutorial below to learn\nhow you can add a curator to a bounty and submit it for approval through an OpenGov referendum."]}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/TM7vk3oP9IA/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA",children:"Assign Curator to a Bounty"})})]})}),"\n",(0,o.jsxs)(t.p,{children:["Once your OpenGov referendum has been approved by the community and served the required\n",(0,o.jsx)(t.a,{href:"/docs/glossary#spend-period",children:"spending period"}),', the bounty will still show as "funded" on\nthe main ',(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"})," and await the curator's\nacceptance. The curator must formally accept the curator role by signing a ",(0,o.jsx)(t.code,{children:"bounties.acceptCurator"}),"\nextrinsic. More information about when to do this can be found on the main\n",(0,o.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/bounties",children:"Bounties page"}),'. Only after the curators claim their\ncandidacy the bounty will show as "active" on the main Bounty page.']}),"\n",(0,o.jsxs)(t.admonition,{title:"Curator assignment call must be executed after bounty is funded",type:"info",children:[(0,o.jsx)(t.p,{children:"Curator assignment must take place after the bounty has been funded, and approved bounties are\nfunded after a spend period has been completed. A curator assignment referendum cannot be executed\nduring the same spend period when the bounty is funded."}),(0,o.jsxs)(t.p,{children:["If your bounty has been awarded but is not funded yet, you need to make sure that the curator\nassignment referendum gets enacted in the subsequent spending period (you can set a delay in\n",(0,o.jsx)(t.a,{href:"/docs/learn-guides-polkadot-opengov#submitting-a-proposal",children:"Polkadot-JS"})," when you submit the proposal\nduring the current spend period)."]})]}),"\n",(0,o.jsx)(t.h2,{id:"create-and-award-child-bounties",children:"Create and Award Child Bounties"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_Create_and_Award_a_Child_Bounty__Q-YFGkYAR3WxMnvYGHiU3Q",children:"this written tutorial"}),"\nto learn more about how to create and award child bounties."]})}),"\n",(0,o.jsx)(t.admonition,{title:"Remember to add contextual information about child bounties",type:"info",children:(0,o.jsxs)(t.p,{children:["When you add child bounties, please add contextual information on the governance forums\n",(0,o.jsx)(t.a,{href:"https://polkassembly.io/",children:"Polkassembly"})," or ",(0,o.jsx)(t.a,{href:"https://polkadot.subsquare.io/",children:"Subsquare"}),"."]})}),"\n",(0,o.jsx)(t.p,{children:"See the video tutorial below to learn how to create a child bounty, assign a curator, and award a\nchild bounty."}),"\n",(0,o.jsx)(t.p,{children:"The video will show how to create and award a child bounty using a batch call. We will also include\nproposing and approving curator candidacy for the child bounty. The calls can be executed\nseparately, depending on the process curators consider appropriate for their bounty."}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/mLpvx0OQoyM/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM",children:"Create and Award Child Bounties"})})]})}),"\n",(0,o.jsx)(t.p,{children:"Once a child bounty is awarded, awardees can claim the child bounty."}),"\n",(0,o.jsx)(t.h2,{id:"claim-a-child-bounty-reward",children:"Claim a Child Bounty Reward"}),"\n",(0,o.jsx)(t.admonition,{title:"Step-by-step written tutorial",type:"info",children:(0,o.jsxs)(t.p,{children:["See\n",(0,o.jsx)(t.a,{href:"https://scribehow.com/shared/How_to_claim_a_Child_Bounty_reward_on_Polkadotjs__t3V7NDUjQlus40EUjc-5Kw",children:"this written tutorial"}),"\nto learn more about how to claim a child bounty reward."]})}),"\n",(0,o.jsxs)(t.p,{children:["The status of child bounties can be viewed on the\n",(0,o.jsx)(t.a,{href:"https://polkadot.polkassembly.io/bounties",children:"Polkassembly Bounty page"}),' under the specific parent\nbounty. A child bounty status can be "Added", "Awarded", or "Claimed". For example, the parent\nbounty 17 refers to the Community Events Bounty, which has 183 child bounties.']}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"polkassembly-child-bounties",src:n(98445).A+"",width:"2408",height:"1053"})}),"\n",(0,o.jsx)(t.p,{children:"After the child bounty has been rewarded, follow the guidelines in the video tutorial below to learn\nhow to claim a child bounty reward. Note that the extrinsic to claim the child bounty reward is\npermissionless, and anyone can initiate the claim on behalf of the beneficiary."}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/db82aHgy23c/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c",children:"Claim Child Bounty Reward"})})]})}),"\n",(0,o.jsx)(t.h2,{id:"close-child-bounties",children:"Close Child Bounties"}),"\n",(0,o.jsxs)(t.p,{children:["Child bounties can be closed without awarding them. To close a child bounty, you must submit a\n",(0,o.jsx)(t.code,{children:"childBounties.closeChild.Bounty"})," extrinsic, specifying the parent bounty and child bounty IDs. Only\nthe parent bounty curator can sign this transaction, resulting in the child bounty\u2019s curator deposit\nbeing returned."]}),"\n",(0,o.jsx)(t.p,{children:"See the video tutorial below to learn how to close a child bounty."}),"\n",(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col text--center",children:[(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=2109s",children:(0,o.jsx)("img",{src:"https://img.youtube.com/vi/Qv_nJVcvQr8/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,o.jsx)("p",{children:(0,o.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=2109s",children:"Close a Child Bounty"})})]})}),"\n",(0,o.jsxs)(t.p,{children:["If the child bounty curator acts maliciously, the parent bounty curator can submit a\n",(0,o.jsx)(t.code,{children:"childBounties.unassignCurator"})," that slashes the curator's deposit."]}),"\n",(0,o.jsx)(t.h2,{id:"refill-parent-bounties",children:"Refill Parent Bounties"}),"\n",(0,o.jsxs)(t.p,{children:["To refill a parent bounty,\n",(0,o.jsx)(t.a,{href:"/docs/learn-guides-polkadot-opengov#submitting-a-preimage",children:"an OpenGov referendum must be submitted"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["The preimage must contain a ",(0,o.jsx)(t.code,{children:"treasury.spendLocal"})," extrinsic specifying the amount of tokens to be\nsent from the treasury to the receiver's address, in this case the\n",(0,o.jsx)(t.a,{href:"/docs/learn-account-advanced#system-accounts",children:"system account"})," of the\n",(0,o.jsx)(t.a,{href:"/docs/learn-polkadot-opengov-treasury#bounties",children:"parent bounty"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["To get the bounty system account of a parent bounty, go to\n",(0,o.jsx)(t.a,{href:"https://polkadot.subsquare.io/treasury/bounties",children:"Subsquare"}),", search for the bounty name, and the\naddress will be shown under Metadata."]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},67141:(e,t,n)=>{n.d(t,{A:()=>a});var o=n(96540),s=n(74848);const a=function(e){var t,n=e.message,a=(0,o.useState)(!0),i=a[0],r=a[1];return(0,s.jsx)(s.Fragment,{children:i&&(0,s.jsxs)("div",{className:"message-box",children:[(0,s.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,s.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},98445:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/polkassembly-child-bounties-fde994e770f3e109a07752068aa417b1.png"},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var o=n(96540);const s={},a=o.createContext(s);function i(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/eef3f1dd.3dc1a712.js b/assets/js/eef3f1dd.3dc1a712.js
deleted file mode 100644
index 3760fed6a692..000000000000
--- a/assets/js/eef3f1dd.3dc1a712.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7827],{3674:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var i=n(74848),a=n(28453),t=n(67141);const r={id:"learn-guides-treasury",title:"Polkadot-JS Guides about the Treasury",sidebar_label:"Treasury Guides",description:"Polkadot-JS Guides about the Polkadot Treasury.",keywords:["opengov","polkadot opengov","referenda","treasury","tipps","polkadot-js"],slug:"../learn-guides-treasury"},o=void 0,l={id:"learn/learn-guides-treasury",title:"Polkadot-JS Guides about the Treasury",description:"Polkadot-JS Guides about the Polkadot Treasury.",source:"@site/../docs/learn/learn-guides-treasury.md",sourceDirName:"learn",slug:"/learn-guides-treasury",permalink:"/docs/learn-guides-treasury",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-treasury.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1726760224e3,frontMatter:{id:"learn-guides-treasury",title:"Polkadot-JS Guides about the Treasury",sidebar_label:"Treasury Guides",description:"Polkadot-JS Guides about the Polkadot Treasury.",keywords:["opengov","polkadot opengov","referenda","treasury","tipps","polkadot-js"],slug:"../learn-guides-treasury"},sidebar:"docs",previous:{title:"OpenGov Guides",permalink:"/docs/learn-guides-polkadot-opengov"},next:{title:"Bounty Guides",permalink:"/docs/learn-guides-bounties"}},d={},c=[{value:"Creating a Treasury Proposal",id:"creating-a-treasury-proposal",level:2},{value:"Announcing the Proposal",id:"announcing-the-proposal",level:3},{value:"Creating a Treasury Proposal - Spend Local",id:"creating-a-treasury-proposal---spend-local",level:2},{value:"Submit Treasury Proposal Preimage",id:"submit-treasury-proposal-preimage",level:3},{value:"Submit a Treasury Track Referendum",id:"submit-a-treasury-track-referendum",level:3},{value:"Place a Decision Deposit for the Treasury Track Referendum",id:"place-a-decision-deposit-for-the-treasury-track-referendum",level:3},{value:"Creating a Multistage Payout Proposal with validFrom
",id:"creating-a-multistage-payout-proposal-with-validfrom",level:2},{value:"Using batch
for Multi-Spend Proposals",id:"using-batch-for-multi-spend-proposals",level:3},{value:"Using validFrom
for a Milestone-Based Proposal",id:"using-validfrom-for-a-milestone-based-proposal",level:3},{value:"Creating a USDT Treasury Proposal - Spend (with AssetHub)",id:"creating-a-usdt-treasury-proposal---spend-with-assethub",level:2},{value:"Creating a Preimage",id:"creating-a-preimage",level:3},{value:"Specifying Asset Kind",id:"specifying-asset-kind",level:3},{value:"Specifying the Amount",id:"specifying-the-amount",level:3},{value:"Specifying the Beneficiary",id:"specifying-the-beneficiary",level:3},{value:"Specifying validFrom
(optional)",id:"specifying-validfrom-optional",level:3},{value:"Manually Claiming Payouts",id:"manually-claiming-payouts",level:3},{value:"Proposing a "Void" for a Staged Proposal",id:"proposing-a-void-for-a-staged-proposal",level:3},{value:"Submit Treasury Proposal via Polkassembly",id:"submit-treasury-proposal-via-polkassembly",level:2},{value:"Requesting Tips from the Treasury",id:"requesting-tips-from-the-treasury",level:2}];function h(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,i.jsxs)(s.p,{children:["See ",(0,i.jsx)(s.a,{href:"/docs/learn-polkadot-opengov-treasury",children:"this page"})," to learn about the Polkadot Treasury."]}),"\n",(0,i.jsx)(s.h2,{id:"creating-a-treasury-proposal",children:"Creating a Treasury Proposal"}),"\n",(0,i.jsx)(s.p,{children:"Your proposal should address a problem, outline a goal, give a detailed account of how you will\nreach that goal, and include any ongoing maintenance needs. As much as possible, you should itemize\nthe tasks to be completed so fees can be evaluated and milestones can be followed. You can check the\nguidelines below:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Guidelines for a successful proposal on\n",(0,i.jsx)(s.a,{href:"https://docs.google.com/document/d/1IZykdp2cyQavcRyZd_dgNj5DcgxgZR6kAqGdcNARu1w",children:"Polkadot"})," and\n",(0,i.jsx)(s.a,{href:"https://docs.google.com/document/d/1CzEnurqwqLBOGrJI9CQORiGW9m6QyPOSshhzJdR57Pk",children:"Kusama"})]}),"\n",(0,i.jsx)(s.li,{children:(0,i.jsx)(s.a,{href:"https://docs.google.com/document/d/1O_84mXYFERCavmnJyxbIPKFkG0bVBySRjCVy-d-VKcc",children:"Treasury proposal template for Polkadot"})}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"announcing-the-proposal",children:"Announcing the Proposal"}),"\n",(0,i.jsxs)(s.p,{children:["To minimize storage on-chain, proposals don't contain contextual information. When a user submits a\nproposal, they will need to find an off-chain way to explain the proposal via\n",(0,i.jsx)(s.a,{href:"/docs/community",children:"community channels"}),"."]}),"\n",(0,i.jsx)(s.p,{children:"Spreading the word about the proposal's explanation to the community is ultimately up to the\nproposer."}),"\n",(0,i.jsx)(s.admonition,{title:"Use Accounts with Verified On-Chain Identity for Treasury Proposals",type:"tip",children:(0,i.jsxs)(s.p,{children:["To ensure legitimacy, it is required that the account linked to the Treasury proposal has an\n",(0,i.jsx)(s.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181981-how-to-set-and-clear-an-identity",children:"identity set"}),"\nand is\n",(0,i.jsx)(s.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181990-how-to-request-and-cancel-identity-judgement",children:"verified by an on-chain registrar"}),"."]})}),"\n",(0,i.jsx)(s.h2,{id:"creating-a-treasury-proposal---spend-local",children:"Creating a Treasury Proposal - Spend Local"}),"\n",(0,i.jsxs)(s.admonition,{title:'"Spend" vs. "Spend Local"',type:"info",children:[(0,i.jsxs)(s.p,{children:["You may notice that the Treasury pallet contains two extrinsics - ",(0,i.jsx)(s.code,{children:"treasury.spend"})," and\n",(0,i.jsx)(s.code,{children:"treasury.spendLocal"}),". ",(0,i.jsx)(s.code,{children:"treasury.spendLocal"})," (formally called ",(0,i.jsx)(s.code,{children:"treasury.spend"}),") refers to a spend of\nDOT that is locally available, i.e., DOT from the relay chain's treasury account. ",(0,i.jsx)(s.code,{children:"spend"})," actually\nallows the caller to specify an asset other than DOT, or even assets in other locations, e.g.\n",(0,i.jsx)(s.a,{href:"/docs/glossary#asset-hub",children:"Asset Hub"}),"."]}),(0,i.jsxs)(s.p,{children:["Unlike ",(0,i.jsx)(s.code,{children:"treasury.spendLocal"}),", ",(0,i.jsx)(s.code,{children:"treasury.spend"})," is ",(0,i.jsx)(s.strong,{children:"not"})," bound by a spend period, and must be\nclaimed manually via the ",(0,i.jsx)(s.code,{children:"treasury.payout"})," extrinsic. ",(0,i.jsx)(s.code,{children:"treasuy.spendLocal"})," behavior remains\nunchanged."]})]}),"\n",(0,i.jsx)(s.h3,{id:"submit-treasury-proposal-preimage",children:"Submit Treasury Proposal Preimage"}),"\n",(0,i.jsxs)(s.p,{children:["The example below shows how to create a ",(0,i.jsx)(s.a,{href:"/docs/glossary#preimage",children:"preimage"})," for a\ntransaction that requests 100 DOT from Treasury."]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/preimages",children:"Polkadot-JS UI > Governance > Preimages"}),"\nand then click on Add Preimage."]}),"\n",(0,i.jsx)(s.li,{children:"Select the account which will be used to submit the preimage."}),"\n",(0,i.jsxs)(s.li,{children:["Choose ",(0,i.jsx)(s.code,{children:"treasury"}),' pallet in the "propose" dropdown and the ',(0,i.jsx)(s.code,{children:"spendLocal(amount, beneficiary)"}),"call"]}),"\n",(0,i.jsx)(s.li,{children:"Enter the DOT amount."}),"\n",(0,i.jsx)(s.li,{children:"Enter the AccountID of the beneficiary (which has a verified on-chain identity)."}),"\n",(0,i.jsx)(s.li,{children:"Submit preimage"}),"\n",(0,i.jsx)(s.li,{children:"Sign and submit the transaction by paying the specified transaction fees."}),"\n"]}),"\n",(0,i.jsx)(s.admonition,{title:"Preimage Submission Deposit",type:"info",children:(0,i.jsx)(s.p,{children:"A deposit is required for the preimage to be stored on chain. The preimage deposit is proportional\nto the amount of information stored within the preimage. The deposit amount required for a preimage\nwith a treasury spend transaction is around 41 DOT (1.4 KSM on Kusama). Ensure you have enough\naccount balance to pay for the submission deposit and the transaction fees."})}),"\n",(0,i.jsx)(s.p,{children:"Here is the preimage requesting for 100 DOT."}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Treasury Preimage",src:n(79087).A+"",width:"2148",height:"1191"})}),"\n",(0,i.jsx)(s.admonition,{title:"Balance entered is in Plancks",type:"info",children:(0,i.jsxs)(s.p,{children:["Polkadot JS UI is for developers and the UI takes input of the balance in\n",(0,i.jsx)(s.a,{href:"/docs/learn-DOT#the-planck-unit",children:"plancks"}),". DOT has 10 decimals, which is 10000000000 plancks per DOT."]})}),"\n",(0,i.jsx)(s.p,{children:"After successful submission of the preimage, it is displayed on Polkadot-JS UI > Governance >\nPreimages page. Every preimage is associated with a unique preimage hash (highlighted in a box in\nthe image below). Take a note of this preimage hash, which is required to submit a referendum."}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Treasury Preimage Hash",src:n(39555).A+"",width:"2879",height:"453"})}),"\n",(0,i.jsx)(s.h3,{id:"submit-a-treasury-track-referendum",children:"Submit a Treasury Track Referendum"}),"\n",(0,i.jsx)(s.p,{children:"The example below shows how to submit a Treasury track referendum."}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/referenda",children:"Polkadot-JS UI > Governance > Referenda"}),"\nand then click on Submit proposal."]}),"\n",(0,i.jsx)(s.li,{children:"Select the account which will be used to submit the proposal."}),"\n",(0,i.jsx)(s.li,{children:"Choose the appropriate submission track (The example below selected Small Spender track)."}),"\n",(0,i.jsx)(s.li,{children:"Enter the preimage hash of the treasury spend transaction.(If the preimage exists on-chain, the\npreimage length box is automatically populated)"}),"\n",(0,i.jsx)(s.li,{children:"Click on Submit proposal."}),"\n",(0,i.jsx)(s.li,{children:"Sign and submit the transaction."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Submit Treasury Proposal",src:n(44751).A+"",width:"2141",height:"1238"})}),"\n",(0,i.jsxs)(s.p,{children:["Once your submission is executed, your referendum will appear under your chosen track on the\nPolkadot-JS UI ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/referenda",children:"referenda page"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"place-a-decision-deposit-for-the-treasury-track-referendum",children:"Place a Decision Deposit for the Treasury Track Referendum"}),"\n",(0,i.jsxs)(s.p,{children:["For the referendum to move from preparing phase to the deciding phase, a decision deposit needs to\nbe placed. The decision deposit values for each individual\n",(0,i.jsx)(s.a,{href:"./learn-polkadot-opengov-treasury#treasury-tracks",children:"Treasury Tracks"})," are listed in a section above\nin this document."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Submit Treasury Proposal Decision Deposit",src:n(52540).A+"",width:"2133",height:"168"})}),"\n",(0,i.jsxs)(s.p,{children:["The preimage and decision deposits\n",(0,i.jsx)(s.a,{href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits",children:"can be claimed once the referendum ends"}),"."]}),"\n",(0,i.jsxs)(s.h2,{id:"creating-a-multistage-payout-proposal-with-validfrom",children:["Creating a Multistage Payout Proposal with ",(0,i.jsx)(s.code,{children:"validFrom"})]}),"\n",(0,i.jsx)(s.p,{children:"Staged proposals are similar to a tranche or milestone-based funding model; instead of all spends\nbeing paid simultaneously, each portion is redeemable at a certain block height. This is done by\nspecifying each milestone, set at its respective amount and block height at which it becomes\nredeemable."}),"\n",(0,i.jsx)(s.p,{children:'For example, take the following "staged" proposal, which has three milestones, each at 100 DOT, and\nis redeemable at the following block heights. Usually, block heights correspond to a date in the\nfuture:'}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"100 DOT paid out at block height 1000"}),"\n",(0,i.jsx)(s.li,{children:"200 DOT paid out at block height 2000"}),"\n",(0,i.jsx)(s.li,{children:"500 DOT paid out at block height 4000"}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["Governance can also propose to ",(0,i.jsx)(s.strong,{children:"void"})," a staged proposal before it has completed all of its\npayouts."]}),"\n",(0,i.jsx)(s.admonition,{title:"Calculating dates from block heights",type:"info",children:(0,i.jsx)(s.p,{children:"Although not the most accurate form of measurement, block heights can be used to correspond to\ncertain dates in the future."})}),"\n",(0,i.jsxs)(s.h3,{id:"using-batch-for-multi-spend-proposals",children:["Using ",(0,i.jsx)(s.code,{children:"batch"})," for Multi-Spend Proposals"]}),"\n",(0,i.jsxs)(s.p,{children:["Using the Utility pallet, one can batch multiple ",(0,i.jsx)(s.code,{children:"treasury.spend"})," calls together. Each of these\ncalls can have its own ",(0,i.jsx)(s.code,{children:"validFrom"})," block height, which allows for scenarios such as the above to be\npossible."]}),"\n",(0,i.jsx)(s.admonition,{title:"Multistage payout proposal example",type:"tip",children:(0,i.jsxs)(s.p,{children:["For reference on how to create a multistage payout proposal, please check\n",(0,i.jsx)(s.a,{href:"https://kusama.subsquare.io/referenda/382?tab=call",children:"Referendum 382"})," on Kusama."]})}),"\n",(0,i.jsxs)(s.h3,{id:"using-validfrom-for-a-milestone-based-proposal",children:["Using ",(0,i.jsx)(s.code,{children:"validFrom"})," for a Milestone-Based Proposal"]}),"\n",(0,i.jsxs)(s.p,{children:["Once each spend is defined within the batched call, the ",(0,i.jsx)(s.code,{children:"validFrom"}),' field can be utilized to specify\nthe "date", or block height, at which each spend will be executed.']}),"\n",(0,i.jsx)(s.admonition,{title:"Treasury Spends have to be claimed manually. Spends can expire!",type:"info",children:(0,i.jsxs)(s.p,{children:["Keep in mind that once the ",(0,i.jsx)(s.code,{children:"validFrom"})," block height has been reached, you will have to claim the\nspend within 30 days. Check the claiming process for treasury spends\n",(0,i.jsx)(s.a,{href:"#manually-claiming-payouts",children:"here"})]})}),"\n",(0,i.jsx)(s.h2,{id:"creating-a-usdt-treasury-proposal---spend-with-assethub",children:"Creating a USDT Treasury Proposal - Spend (with AssetHub)"}),"\n",(0,i.jsxs)(s.p,{children:["The following tutorial mostly goes over how to utilize the ",(0,i.jsx)(s.code,{children:"spend"})," extrinsic, which, unlike\n",(0,i.jsx)(s.code,{children:"spendLocal"}),", is able to specify assets besides the native asset in other locations, such as\n",(0,i.jsx)(s.a,{href:"/docs/glossary#asset-hub",children:"Asset Hub"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"creating-a-preimage",children:"Creating a Preimage"}),"\n",(0,i.jsxs)(s.p,{children:["The example below shows how to create a ",(0,i.jsx)(s.a,{href:"../general/glossary#preimage",children:"preimage"})," for a transaction\nthat requests 100 USDT from AssetHub."]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/preimages",children:"Polkadot-JS UI > Governance > Referenda"}),"\nand then click on Add Preimage."]}),"\n",(0,i.jsx)(s.li,{children:"Select the account to submit the preimage."}),"\n",(0,i.jsxs)(s.li,{children:["Choose the ",(0,i.jsx)(s.code,{children:"treasury"}),' pallet in the "propose" dropdown and the\n',(0,i.jsx)(s.code,{children:"spend(assetKind, amount, beneficiary, validFrom)"})," call."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Now, let's go through each field one-by-one and fill them in accordingly:"}),"\n",(0,i.jsx)(s.h3,{id:"specifying-asset-kind",children:"Specifying Asset Kind"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.code,{children:"assetKind"})," refers to the asset to be used, specified via XCM. In short, we need to be able to find:"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"The relative location of the asset, and"}),"\n",(0,i.jsx)(s.li,{children:"How it is identified within this location."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"For this example, we are using USDT, which from the perspective of the relay chain would be:"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.code,{children:"Parachain 1000 (AssetHub) > AssetId (Concrete) > PalletInstance 50 > General Index 1984"})}),"\n",(0,i.jsxs)(s.p,{children:["First, we specify the location - in this case, Asset Hub (parachain 1,000). ",(0,i.jsx)(s.code,{children:"PalletInstance 50"}),"\nrefers to the Assets pallet instance on Asset Hub. The general index is ",(0,i.jsx)(s.code,{children:"1984"}),", which is the ID of\nUSDT in this instance of the Assets pallet."]}),"\n",(0,i.jsxs)(s.admonition,{title:"Bug on Polkadot-JS UI",type:"caution",children:[(0,i.jsxs)(s.p,{children:["As the Polkadot-JS UI is interpreting the general index in DOT, it multiplies the entered values\nwith ",(0,i.jsx)(s.code,{children:"10000000000"})," (As DOT token has 10 decimals) and places it in the ",(0,i.jsx)(s.code,{children:"u128"})," argument. As we would\nlike to have ",(0,i.jsx)(s.code,{children:"1984"})," as the input argument, we can offset this UI induced error by entering\n",(0,i.jsx)(s.code,{children:"0.0000001984"}),"."]}),(0,i.jsxs)(s.p,{children:["The issue on Polkadot-JS repo can be tracked\n",(0,i.jsx)(s.a,{href:"https://github.com/polkadot-js/apps/issues/10430",children:"here"}),"."]})]}),"\n",(0,i.jsxs)(s.p,{children:["Here is how the final ",(0,i.jsx)(s.code,{children:"assetKind"})," field should look:"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Asset Kind",src:n(44855).A+"",width:"1564",height:"1316"})}),"\n",(0,i.jsx)(s.h3,{id:"specifying-the-amount",children:"Specifying the Amount"}),"\n",(0,i.jsxs)(s.p,{children:["The amount should be simply the amount of USDT, where each ",(0,i.jsx)(s.code,{children:"1"})," USDT is ",(0,i.jsx)(s.code,{children:"1000000"}),". Because we are\nasking for 100 USDT, we put ",(0,i.jsx)(s.code,{children:"100000000"})," as the input for the amount."]}),"\n",(0,i.jsxs)(s.admonition,{title:"Bug on Polkadot-JS UI",type:"caution",children:[(0,i.jsxs)(s.p,{children:["As the Polkadot-JS UI is interpreting the asset balance in DOT, it multiplies the entered values\nwith ",(0,i.jsx)(s.code,{children:"10000000000"})," (As DOT token has 10 decimals) and places it in the ",(0,i.jsx)(s.code,{children:"u128"})," argument. As we would\nlike to have ",(0,i.jsx)(s.code,{children:"100000000"})," as the input argument, we can offset this UI induced error by entering\n",(0,i.jsx)(s.code,{children:"0.01"})," for this particular example where we like to input 100 USDT."]}),(0,i.jsxs)(s.p,{children:["The issue on Polkadot-JS repo can be tracked\n",(0,i.jsx)(s.a,{href:"https://github.com/polkadot-js/apps/issues/10430",children:"here"}),"."]})]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Asset Value, Beneficiary and ValidFrom",src:n(22192).A+"",width:"1591",height:"1279"})}),"\n",(0,i.jsx)(s.h3,{id:"specifying-the-beneficiary",children:"Specifying the Beneficiary"}),"\n",(0,i.jsxs)(s.p,{children:["The beneficiary account will be one on Asset Hub. For this reason, the XCM junction must be\nspecified as follows, with one junction (",(0,i.jsx)(s.code,{children:"X1"}),") and the beneficiary account (",(0,i.jsx)(s.code,{children:"AccountId32"}),"), which is\nan account address on the chain."]}),"\n",(0,i.jsxs)(s.h3,{id:"specifying-validfrom-optional",children:["Specifying ",(0,i.jsx)(s.code,{children:"validFrom"})," (optional)"]}),"\n",(0,i.jsxs)(s.p,{children:["The ",(0,i.jsx)(s.code,{children:"validFrom"})," field is optional, and refers to the block height of the relay chain upon which the\npayout can be issued. If the ",(0,i.jsx)(s.code,{children:"validFrom"})," parameter is not set, the spend can be paid out immediately\nafter approval. For more information on this field, refer to the\n",(0,i.jsx)(s.a,{href:"#creating-a-staged-proposal-with-validfrom",children:"guide below"}),"."]}),"\n",(0,i.jsx)(s.p,{children:"The final call should look like the following, where we:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Specify our asset as ",(0,i.jsx)(s.strong,{children:"USDT"})," on ",(0,i.jsx)(s.strong,{children:"Asset Hub"}),"."]}),"\n",(0,i.jsxs)(s.li,{children:["Specify the ",(0,i.jsx)(s.strong,{children:"amount"})," of ",(0,i.jsx)(s.strong,{children:"USDT"})," (100)."]}),"\n",(0,i.jsx)(s.li,{children:"Specify the beneficiary address."}),"\n",(0,i.jsxs)(s.li,{children:["If applicable, use the ",(0,i.jsx)(s.code,{children:"validFrom"})," field to specify a block number upon which the payout becomes\nvalid."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"The next steps are to:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Copy the preimage (and its length)"}),"\n",(0,i.jsx)(s.li,{children:"Sign and submit the preimage"}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["Once this is finished, one may submit a proposal\n",(0,i.jsx)(s.a,{href:"#submit-a-treasury-track-referendum",children:"as stated above"}),". Keep in mind one will also need to\n",(0,i.jsx)(s.a,{href:"#place-a-decision-deposit-for-the-treasury-track-referendum",children:"provide the decision deposit as well"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"manually-claiming-payouts",children:"Manually Claiming Payouts"}),"\n",(0,i.jsxs)(s.p,{children:["In order to claim the spend, you must manually call the ",(0,i.jsx)(s.code,{children:"treasury.payout"})," extrinsic via a ",(0,i.jsx)(s.code,{children:"Signed"}),"\norigin. The ",(0,i.jsx)(s.code,{children:"spendID"})," for the pending payout can be queried on-chain through Polkadot-JS UI >\nDeveloper > Chain State > Storage > treasury > spends and unselect the include option and then click\non the plus button to the right."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"payout",src:n(88195).A+"",width:"2768",height:"1370"})}),"\n",(0,i.jsxs)(s.p,{children:["From the list of spends, find the ",(0,i.jsx)(s.code,{children:"spendID"})," of your respetive payout and issue the payout extrinsic."]}),"\n",(0,i.jsx)(s.admonition,{title:"payout example",type:"tip",children:(0,i.jsxs)(s.p,{children:["To claim the first payout of ",(0,i.jsx)(s.a,{href:"https://kusama.subsquare.io/referenda/382?tab=call",children:"Referendum 382"})," on\nKusama, ",(0,i.jsx)(s.a,{href:"https://kusama.subscan.io/extrinsic/23061444-2",children:"this payout extrinsic"})," was issued. After\nissuing the payout extrinsic, the status of the payout changes from ",(0,i.jsx)(s.code,{children:"pending"})," to ",(0,i.jsx)(s.code,{children:"Attempted"})," with a\nreference to a payment ID. If the payout is successful, the balance on Asset Hub should be updated.\n",(0,i.jsx)(s.a,{href:"https://assethub-kusama.subscan.io/extrinsic/6923602-0",children:"Here"})," is the transfer extrinsic on Asset\nHub for the first payout of ",(0,i.jsx)(s.a,{href:"https://kusama.subscan.io/referenda_v2/382",children:"Referendum 382"}),"."]})}),"\n",(0,i.jsxs)(s.p,{children:["To clear the on-chain storage of a successful or expired spend, Treasury pallet's ",(0,i.jsx)(s.code,{children:"checkStatus"}),"\nextrinsic can be used. The transaction fees paid for issuing this extrinsic will be refunded."]}),"\n",(0,i.jsx)(s.h3,{id:"proposing-a-void-for-a-staged-proposal",children:'Proposing a "Void" for a Staged Proposal'}),"\n",(0,i.jsxs)(s.p,{children:["If a proposal that hasn't completed all of its spends needs to be voided, the ",(0,i.jsx)(s.code,{children:"treasury.voidSpend"}),"\nextrinsic can be utilized via a governance proposal."]}),"\n",(0,i.jsx)(s.admonition,{title:"Example proposal - Voiding a Treasury Spend",type:"tip",children:(0,i.jsxs)(s.p,{children:["For reference, check the referenda on Kusama that\n",(0,i.jsx)(s.a,{href:"https://kusama.subsquare.io/referenda/391",children:"tests VoidSpend functionality for Treasury Payouts"}),".\nThrough this referenda, a treasury spend was\n",(0,i.jsx)(s.a,{href:"https://kusama.subscan.io/event?page=1&time_dimension=date&module=treasury&event_id=assetspendvoided",children:"successfully voided"}),"."]})}),"\n",(0,i.jsx)(s.h2,{id:"submit-treasury-proposal-via-polkassembly",children:"Submit Treasury Proposal via Polkassembly"}),"\n",(0,i.jsxs)(s.p,{children:["To submit a treasury track referendum via ",(0,i.jsx)(s.a,{href:"https://polkadot.polkassembly.io/opengov",children:"Polkassembly"}),"\nclick on the FAB button in the bottom right corner. Then,"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:'Click on "Create Treasury Proposal" and choose an address for the proposer.'}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:"After choosing an address, you will enter a three-stage guideline:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Write a proposal: you can add a detailed description for the proposal, which will be stored on\nPolkassembly. Alternatively, you can link an existing discussion post."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"polkassembly-write-proposal",src:n(14879).A+"",width:"2130",height:"1596"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Create a preimage: an existing preimage can be linked, or a new one can be created. To create a\npreimage, add the beneficiary address and the token amount. The track will be auto-selected and\nthe user can proceed with the creation of a preimage."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"polkassembly-create-preimage",src:n(94664).A+"",width:"2154",height:"1598"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Create a proposal: final confirmation about the proposal creation. The description of the\nproposal and the preimage are automatically linked to the proposal."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"requesting-tips-from-the-treasury",children:"Requesting Tips from the Treasury"}),"\n",(0,i.jsxs)(s.p,{children:["To request a tip funded by the treasury, you can follow the above steps for\n",(0,i.jsx)(s.a,{href:"#creating-a-treasury-proposal",children:"creating a treasury proposal"})," but instead of submitting the proposal\nto the ",(0,i.jsx)(s.code,{children:"32 / Small Spender"})," track, you will need to submit it to the ",(0,i.jsx)(s.code,{children:"30 / Small Tipper"})," or\n",(0,i.jsx)(s.code,{children:"31 / Big Tipper"})," tracks depending on the number of tokens to be requested."]}),"\n",(0,i.jsx)(s.p,{children:"Briefly, you will need to:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Create a preimage using the ",(0,i.jsx)(s.code,{children:"treasury.spendLocal"})," extrinsic and specifying the number of tokens\nand the beneficiary of the tip"]}),"\n",(0,i.jsxs)(s.li,{children:["Submit a proposal to the right track (i.e. ",(0,i.jsx)(s.code,{children:"30"})," or ",(0,i.jsx)(s.code,{children:"31"}),") using the preimage hash"]}),"\n",(0,i.jsxs)(s.li,{children:["Once you started the referendum go to ",(0,i.jsx)(s.a,{href:"https://polkassembly.io/",children:"Polkassembly"}),", log in with the\nproposer account and edit the referendum details"]}),"\n",(0,i.jsxs)(s.li,{children:["Notify ",(0,i.jsx)(s.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"the Polkadot Direction Element Channel"}),"\nor ",(0,i.jsx)(s.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"the Kusama Direction Element Channel"})," about\nyour referendum"]}),"\n",(0,i.jsxs)(s.li,{children:["Place the decision deposit\n",(0,i.jsx)(s.a,{href:"/docs/chain-state-values#opengov-referendum-timeout",children:"before the timeout"})]}),"\n",(0,i.jsxs)(s.li,{children:["Once the referendum ends you can\n",(0,i.jsx)(s.a,{href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits",children:"claim the preimage and decision deposits back"})]}),"\n"]})]})}function p(e={}){const{wrapper:s}={...(0,a.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},67141:(e,s,n)=>{n.d(s,{A:()=>t});var i=n(96540),a=n(74848);const t=function(e){var s,n=e.message,t=(0,i.useState)(!0),r=t[0],o=t[1];return(0,a.jsx)(a.Fragment,{children:r&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){o(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(s=n,s.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},22192:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/spend-amount-account-validfrom-temp-51145f395b6786e783600e3665bc7fab.png"},44855:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/spend-usdt-assethub-temp-4182c6d400d00e1c4d8e94efc96dadcf.png"},94664:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/polkassembly-create-preimage-7396a8ce796d0f0dcad30d3edced8618.png"},14879:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/polkassembly-write-proposal-a3ce8ab9303111f6003ac8103ba29507.png"},79087:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/OpenGov-Treasury-Preimage-SpendLocal-693c955b1e3e27bb6c98a6aad4d1b697.png"},44751:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/submit-proposal-treasury-3948a231c4f3162a8680ad052af9e903.png"},88195:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/treasury-multistage-payout-spend-id-54e73a1e8829cb911284ad15654d5661.png"},39555:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/treasury-preimage-hash-05bb427d21d3ecf7d5e38418a0a0f4ed.png"},52540:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/treasury-proposal-decision-deposit-849d27481ba0134acf743f7474d8f6a4.png"},28453:(e,s,n)=>{n.d(s,{R:()=>r,x:()=>o});var i=n(96540);const a={},t=i.createContext(a);function r(e){const s=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(t.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/eef3f1dd.6bf92f8b.js b/assets/js/eef3f1dd.6bf92f8b.js
new file mode 100644
index 000000000000..e18008d3dbd7
--- /dev/null
+++ b/assets/js/eef3f1dd.6bf92f8b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7827],{3674:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var i=n(74848),a=n(28453),t=n(67141);const r={id:"learn-guides-treasury",title:"Polkadot-JS Guides about the Treasury",sidebar_label:"Treasury Guides",description:"Polkadot-JS Guides about the Polkadot Treasury.",keywords:["opengov","polkadot opengov","referenda","treasury","tipps","polkadot-js"],slug:"../learn-guides-treasury"},o=void 0,l={id:"learn/learn-guides-treasury",title:"Polkadot-JS Guides about the Treasury",description:"Polkadot-JS Guides about the Polkadot Treasury.",source:"@site/../docs/learn/learn-guides-treasury.md",sourceDirName:"learn",slug:"/learn-guides-treasury",permalink:"/docs/learn-guides-treasury",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-treasury.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"learn-guides-treasury",title:"Polkadot-JS Guides about the Treasury",sidebar_label:"Treasury Guides",description:"Polkadot-JS Guides about the Polkadot Treasury.",keywords:["opengov","polkadot opengov","referenda","treasury","tipps","polkadot-js"],slug:"../learn-guides-treasury"},sidebar:"docs",previous:{title:"OpenGov Guides",permalink:"/docs/learn-guides-polkadot-opengov"},next:{title:"Bounty Guides",permalink:"/docs/learn-guides-bounties"}},d={},c=[{value:"Creating a Treasury Proposal",id:"creating-a-treasury-proposal",level:2},{value:"Announcing the Proposal",id:"announcing-the-proposal",level:3},{value:"Creating a Treasury Proposal - Spend Local",id:"creating-a-treasury-proposal---spend-local",level:2},{value:"Submit Treasury Proposal Preimage",id:"submit-treasury-proposal-preimage",level:3},{value:"Submit a Treasury Track Referendum",id:"submit-a-treasury-track-referendum",level:3},{value:"Place a Decision Deposit for the Treasury Track Referendum",id:"place-a-decision-deposit-for-the-treasury-track-referendum",level:3},{value:"Creating a Multistage Payout Proposal with validFrom
",id:"creating-a-multistage-payout-proposal-with-validfrom",level:2},{value:"Using batch
for Multi-Spend Proposals",id:"using-batch-for-multi-spend-proposals",level:3},{value:"Using validFrom
for a Milestone-Based Proposal",id:"using-validfrom-for-a-milestone-based-proposal",level:3},{value:"Creating a USDT Treasury Proposal - Spend (with AssetHub)",id:"creating-a-usdt-treasury-proposal---spend-with-assethub",level:2},{value:"Creating a Preimage",id:"creating-a-preimage",level:3},{value:"Specifying Asset Kind",id:"specifying-asset-kind",level:3},{value:"Specifying the Amount",id:"specifying-the-amount",level:3},{value:"Specifying the Beneficiary",id:"specifying-the-beneficiary",level:3},{value:"Specifying validFrom
(optional)",id:"specifying-validfrom-optional",level:3},{value:"Manually Claiming Payouts",id:"manually-claiming-payouts",level:3},{value:"Proposing a "Void" for a Staged Proposal",id:"proposing-a-void-for-a-staged-proposal",level:3},{value:"Submit Treasury Proposal via Polkassembly",id:"submit-treasury-proposal-via-polkassembly",level:2},{value:"Requesting Tips from the Treasury",id:"requesting-tips-from-the-treasury",level:2}];function h(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,i.jsxs)(s.p,{children:["See ",(0,i.jsx)(s.a,{href:"/docs/learn-polkadot-opengov-treasury",children:"this page"})," to learn about the Polkadot Treasury."]}),"\n",(0,i.jsx)(s.h2,{id:"creating-a-treasury-proposal",children:"Creating a Treasury Proposal"}),"\n",(0,i.jsx)(s.p,{children:"Your proposal should address a problem, outline a goal, give a detailed account of how you will\nreach that goal, and include any ongoing maintenance needs. As much as possible, you should itemize\nthe tasks to be completed so fees can be evaluated and milestones can be followed. You can check the\nguidelines below:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Guidelines for a successful proposal on\n",(0,i.jsx)(s.a,{href:"https://docs.google.com/document/d/1IZykdp2cyQavcRyZd_dgNj5DcgxgZR6kAqGdcNARu1w",children:"Polkadot"})," and\n",(0,i.jsx)(s.a,{href:"https://docs.google.com/document/d/1CzEnurqwqLBOGrJI9CQORiGW9m6QyPOSshhzJdR57Pk",children:"Kusama"})]}),"\n",(0,i.jsx)(s.li,{children:(0,i.jsx)(s.a,{href:"https://docs.google.com/document/d/1O_84mXYFERCavmnJyxbIPKFkG0bVBySRjCVy-d-VKcc",children:"Treasury proposal template for Polkadot"})}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"announcing-the-proposal",children:"Announcing the Proposal"}),"\n",(0,i.jsxs)(s.p,{children:["To minimize storage on-chain, proposals don't contain contextual information. When a user submits a\nproposal, they will need to find an off-chain way to explain the proposal via\n",(0,i.jsx)(s.a,{href:"/docs/community",children:"community channels"}),"."]}),"\n",(0,i.jsx)(s.p,{children:"Spreading the word about the proposal's explanation to the community is ultimately up to the\nproposer."}),"\n",(0,i.jsx)(s.admonition,{title:"Use Accounts with Verified On-Chain Identity for Treasury Proposals",type:"tip",children:(0,i.jsxs)(s.p,{children:["To ensure legitimacy, it is required that the account linked to the Treasury proposal has an\n",(0,i.jsx)(s.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181981-how-to-set-and-clear-an-identity",children:"identity set"}),"\nand is\n",(0,i.jsx)(s.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181990-how-to-request-and-cancel-identity-judgement",children:"verified by an on-chain registrar"}),"."]})}),"\n",(0,i.jsx)(s.h2,{id:"creating-a-treasury-proposal---spend-local",children:"Creating a Treasury Proposal - Spend Local"}),"\n",(0,i.jsxs)(s.admonition,{title:'"Spend" vs. "Spend Local"',type:"info",children:[(0,i.jsxs)(s.p,{children:["You may notice that the Treasury pallet contains two extrinsics - ",(0,i.jsx)(s.code,{children:"treasury.spend"})," and\n",(0,i.jsx)(s.code,{children:"treasury.spendLocal"}),". ",(0,i.jsx)(s.code,{children:"treasury.spendLocal"})," (formally called ",(0,i.jsx)(s.code,{children:"treasury.spend"}),") refers to a spend of\nDOT that is locally available, i.e., DOT from the relay chain's treasury account. ",(0,i.jsx)(s.code,{children:"spend"})," actually\nallows the caller to specify an asset other than DOT, or even assets in other locations, e.g.\n",(0,i.jsx)(s.a,{href:"/docs/glossary#asset-hub",children:"Asset Hub"}),"."]}),(0,i.jsxs)(s.p,{children:["Unlike ",(0,i.jsx)(s.code,{children:"treasury.spendLocal"}),", ",(0,i.jsx)(s.code,{children:"treasury.spend"})," is ",(0,i.jsx)(s.strong,{children:"not"})," bound by a spend period, and must be\nclaimed manually via the ",(0,i.jsx)(s.code,{children:"treasury.payout"})," extrinsic. ",(0,i.jsx)(s.code,{children:"treasuy.spendLocal"})," behavior remains\nunchanged."]})]}),"\n",(0,i.jsx)(s.h3,{id:"submit-treasury-proposal-preimage",children:"Submit Treasury Proposal Preimage"}),"\n",(0,i.jsxs)(s.p,{children:["The example below shows how to create a ",(0,i.jsx)(s.a,{href:"/docs/glossary#preimage",children:"preimage"})," for a\ntransaction that requests 100 DOT from Treasury."]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/preimages",children:"Polkadot-JS UI > Governance > Preimages"}),"\nand then click on Add Preimage."]}),"\n",(0,i.jsx)(s.li,{children:"Select the account which will be used to submit the preimage."}),"\n",(0,i.jsxs)(s.li,{children:["Choose ",(0,i.jsx)(s.code,{children:"treasury"}),' pallet in the "propose" dropdown and the ',(0,i.jsx)(s.code,{children:"spendLocal(amount, beneficiary)"}),"call"]}),"\n",(0,i.jsx)(s.li,{children:"Enter the DOT amount."}),"\n",(0,i.jsx)(s.li,{children:"Enter the AccountID of the beneficiary (which has a verified on-chain identity)."}),"\n",(0,i.jsx)(s.li,{children:"Submit preimage"}),"\n",(0,i.jsx)(s.li,{children:"Sign and submit the transaction by paying the specified transaction fees."}),"\n"]}),"\n",(0,i.jsx)(s.admonition,{title:"Preimage Submission Deposit",type:"info",children:(0,i.jsx)(s.p,{children:"A deposit is required for the preimage to be stored on chain. The preimage deposit is proportional\nto the amount of information stored within the preimage. The deposit amount required for a preimage\nwith a treasury spend transaction is around 41 DOT (1.4 KSM on Kusama). Ensure you have enough\naccount balance to pay for the submission deposit and the transaction fees."})}),"\n",(0,i.jsx)(s.p,{children:"Here is the preimage requesting for 100 DOT."}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Treasury Preimage",src:n(79087).A+"",width:"2148",height:"1191"})}),"\n",(0,i.jsx)(s.admonition,{title:"Balance entered is in Plancks",type:"info",children:(0,i.jsxs)(s.p,{children:["Polkadot JS UI is for developers and the UI takes input of the balance in\n",(0,i.jsx)(s.a,{href:"/docs/learn-DOT#the-planck-unit",children:"plancks"}),". DOT has 10 decimals, which is 10000000000 plancks per DOT."]})}),"\n",(0,i.jsx)(s.p,{children:"After successful submission of the preimage, it is displayed on Polkadot-JS UI > Governance >\nPreimages page. Every preimage is associated with a unique preimage hash (highlighted in a box in\nthe image below). Take a note of this preimage hash, which is required to submit a referendum."}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Treasury Preimage Hash",src:n(39555).A+"",width:"2879",height:"453"})}),"\n",(0,i.jsx)(s.h3,{id:"submit-a-treasury-track-referendum",children:"Submit a Treasury Track Referendum"}),"\n",(0,i.jsx)(s.p,{children:"The example below shows how to submit a Treasury track referendum."}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/referenda",children:"Polkadot-JS UI > Governance > Referenda"}),"\nand then click on Submit proposal."]}),"\n",(0,i.jsx)(s.li,{children:"Select the account which will be used to submit the proposal."}),"\n",(0,i.jsx)(s.li,{children:"Choose the appropriate submission track (The example below selected Small Spender track)."}),"\n",(0,i.jsx)(s.li,{children:"Enter the preimage hash of the treasury spend transaction.(If the preimage exists on-chain, the\npreimage length box is automatically populated)"}),"\n",(0,i.jsx)(s.li,{children:"Click on Submit proposal."}),"\n",(0,i.jsx)(s.li,{children:"Sign and submit the transaction."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Submit Treasury Proposal",src:n(44751).A+"",width:"2141",height:"1238"})}),"\n",(0,i.jsxs)(s.p,{children:["Once your submission is executed, your referendum will appear under your chosen track on the\nPolkadot-JS UI ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/referenda",children:"referenda page"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"place-a-decision-deposit-for-the-treasury-track-referendum",children:"Place a Decision Deposit for the Treasury Track Referendum"}),"\n",(0,i.jsxs)(s.p,{children:["For the referendum to move from preparing phase to the deciding phase, a decision deposit needs to\nbe placed. The decision deposit values for each individual\n",(0,i.jsx)(s.a,{href:"./learn-polkadot-opengov-treasury#treasury-tracks",children:"Treasury Tracks"})," are listed in a section above\nin this document."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Submit Treasury Proposal Decision Deposit",src:n(52540).A+"",width:"2133",height:"168"})}),"\n",(0,i.jsxs)(s.p,{children:["The preimage and decision deposits\n",(0,i.jsx)(s.a,{href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits",children:"can be claimed once the referendum ends"}),"."]}),"\n",(0,i.jsxs)(s.h2,{id:"creating-a-multistage-payout-proposal-with-validfrom",children:["Creating a Multistage Payout Proposal with ",(0,i.jsx)(s.code,{children:"validFrom"})]}),"\n",(0,i.jsx)(s.p,{children:"Staged proposals are similar to a tranche or milestone-based funding model; instead of all spends\nbeing paid simultaneously, each portion is redeemable at a certain block height. This is done by\nspecifying each milestone, set at its respective amount and block height at which it becomes\nredeemable."}),"\n",(0,i.jsx)(s.p,{children:'For example, take the following "staged" proposal, which has three milestones, each at 100 DOT, and\nis redeemable at the following block heights. Usually, block heights correspond to a date in the\nfuture:'}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"100 DOT paid out at block height 1000"}),"\n",(0,i.jsx)(s.li,{children:"200 DOT paid out at block height 2000"}),"\n",(0,i.jsx)(s.li,{children:"500 DOT paid out at block height 4000"}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["Governance can also propose to ",(0,i.jsx)(s.strong,{children:"void"})," a staged proposal before it has completed all of its\npayouts."]}),"\n",(0,i.jsx)(s.admonition,{title:"Calculating dates from block heights",type:"info",children:(0,i.jsx)(s.p,{children:"Although not the most accurate form of measurement, block heights can be used to correspond to\ncertain dates in the future."})}),"\n",(0,i.jsxs)(s.h3,{id:"using-batch-for-multi-spend-proposals",children:["Using ",(0,i.jsx)(s.code,{children:"batch"})," for Multi-Spend Proposals"]}),"\n",(0,i.jsxs)(s.p,{children:["Using the Utility pallet, one can batch multiple ",(0,i.jsx)(s.code,{children:"treasury.spend"})," calls together. Each of these\ncalls can have its own ",(0,i.jsx)(s.code,{children:"validFrom"})," block height, which allows for scenarios such as the above to be\npossible."]}),"\n",(0,i.jsx)(s.admonition,{title:"Multistage payout proposal example",type:"tip",children:(0,i.jsxs)(s.p,{children:["For reference on how to create a multistage payout proposal, please check\n",(0,i.jsx)(s.a,{href:"https://kusama.subsquare.io/referenda/382?tab=call",children:"Referendum 382"})," on Kusama."]})}),"\n",(0,i.jsxs)(s.h3,{id:"using-validfrom-for-a-milestone-based-proposal",children:["Using ",(0,i.jsx)(s.code,{children:"validFrom"})," for a Milestone-Based Proposal"]}),"\n",(0,i.jsxs)(s.p,{children:["Once each spend is defined within the batched call, the ",(0,i.jsx)(s.code,{children:"validFrom"}),' field can be utilized to specify\nthe "date", or block height, at which each spend will be executed.']}),"\n",(0,i.jsx)(s.admonition,{title:"Treasury Spends have to be claimed manually. Spends can expire!",type:"info",children:(0,i.jsxs)(s.p,{children:["Keep in mind that once the ",(0,i.jsx)(s.code,{children:"validFrom"})," block height has been reached, you will have to claim the\nspend within 30 days. Check the claiming process for treasury spends\n",(0,i.jsx)(s.a,{href:"#manually-claiming-payouts",children:"here"})]})}),"\n",(0,i.jsx)(s.h2,{id:"creating-a-usdt-treasury-proposal---spend-with-assethub",children:"Creating a USDT Treasury Proposal - Spend (with AssetHub)"}),"\n",(0,i.jsxs)(s.p,{children:["The following tutorial mostly goes over how to utilize the ",(0,i.jsx)(s.code,{children:"spend"})," extrinsic, which, unlike\n",(0,i.jsx)(s.code,{children:"spendLocal"}),", is able to specify assets besides the native asset in other locations, such as\n",(0,i.jsx)(s.a,{href:"/docs/glossary#asset-hub",children:"Asset Hub"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"creating-a-preimage",children:"Creating a Preimage"}),"\n",(0,i.jsxs)(s.p,{children:["The example below shows how to create a ",(0,i.jsx)(s.a,{href:"../general/glossary#preimage",children:"preimage"})," for a transaction\nthat requests 100 USDT from AssetHub."]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Navigate to ",(0,i.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/preimages",children:"Polkadot-JS UI > Governance > Referenda"}),"\nand then click on Add Preimage."]}),"\n",(0,i.jsx)(s.li,{children:"Select the account to submit the preimage."}),"\n",(0,i.jsxs)(s.li,{children:["Choose the ",(0,i.jsx)(s.code,{children:"treasury"}),' pallet in the "propose" dropdown and the\n',(0,i.jsx)(s.code,{children:"spend(assetKind, amount, beneficiary, validFrom)"})," call."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Now, let's go through each field one-by-one and fill them in accordingly:"}),"\n",(0,i.jsx)(s.h3,{id:"specifying-asset-kind",children:"Specifying Asset Kind"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.code,{children:"assetKind"})," refers to the asset to be used, specified via XCM. In short, we need to be able to find:"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"The relative location of the asset, and"}),"\n",(0,i.jsx)(s.li,{children:"How it is identified within this location."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"For this example, we are using USDT, which from the perspective of the relay chain would be:"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.code,{children:"Parachain 1000 (AssetHub) > AssetId (Concrete) > PalletInstance 50 > General Index 1984"})}),"\n",(0,i.jsxs)(s.p,{children:["First, we specify the location - in this case, Asset Hub (parachain 1,000). ",(0,i.jsx)(s.code,{children:"PalletInstance 50"}),"\nrefers to the Assets pallet instance on Asset Hub. The general index is ",(0,i.jsx)(s.code,{children:"1984"}),", which is the ID of\nUSDT in this instance of the Assets pallet."]}),"\n",(0,i.jsxs)(s.admonition,{title:"Bug on Polkadot-JS UI",type:"caution",children:[(0,i.jsxs)(s.p,{children:["As the Polkadot-JS UI is interpreting the general index in DOT, it multiplies the entered values\nwith ",(0,i.jsx)(s.code,{children:"10000000000"})," (As DOT token has 10 decimals) and places it in the ",(0,i.jsx)(s.code,{children:"u128"})," argument. As we would\nlike to have ",(0,i.jsx)(s.code,{children:"1984"})," as the input argument, we can offset this UI induced error by entering\n",(0,i.jsx)(s.code,{children:"0.0000001984"}),"."]}),(0,i.jsxs)(s.p,{children:["The issue on Polkadot-JS repo can be tracked\n",(0,i.jsx)(s.a,{href:"https://github.com/polkadot-js/apps/issues/10430",children:"here"}),"."]})]}),"\n",(0,i.jsxs)(s.p,{children:["Here is how the final ",(0,i.jsx)(s.code,{children:"assetKind"})," field should look:"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Asset Kind",src:n(44855).A+"",width:"1564",height:"1316"})}),"\n",(0,i.jsx)(s.h3,{id:"specifying-the-amount",children:"Specifying the Amount"}),"\n",(0,i.jsxs)(s.p,{children:["The amount should be simply the amount of USDT, where each ",(0,i.jsx)(s.code,{children:"1"})," USDT is ",(0,i.jsx)(s.code,{children:"1000000"}),". Because we are\nasking for 100 USDT, we put ",(0,i.jsx)(s.code,{children:"100000000"})," as the input for the amount."]}),"\n",(0,i.jsxs)(s.admonition,{title:"Bug on Polkadot-JS UI",type:"caution",children:[(0,i.jsxs)(s.p,{children:["As the Polkadot-JS UI is interpreting the asset balance in DOT, it multiplies the entered values\nwith ",(0,i.jsx)(s.code,{children:"10000000000"})," (As DOT token has 10 decimals) and places it in the ",(0,i.jsx)(s.code,{children:"u128"})," argument. As we would\nlike to have ",(0,i.jsx)(s.code,{children:"100000000"})," as the input argument, we can offset this UI induced error by entering\n",(0,i.jsx)(s.code,{children:"0.01"})," for this particular example where we like to input 100 USDT."]}),(0,i.jsxs)(s.p,{children:["The issue on Polkadot-JS repo can be tracked\n",(0,i.jsx)(s.a,{href:"https://github.com/polkadot-js/apps/issues/10430",children:"here"}),"."]})]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"Asset Value, Beneficiary and ValidFrom",src:n(22192).A+"",width:"1591",height:"1279"})}),"\n",(0,i.jsx)(s.h3,{id:"specifying-the-beneficiary",children:"Specifying the Beneficiary"}),"\n",(0,i.jsxs)(s.p,{children:["The beneficiary account will be one on Asset Hub. For this reason, the XCM junction must be\nspecified as follows, with one junction (",(0,i.jsx)(s.code,{children:"X1"}),") and the beneficiary account (",(0,i.jsx)(s.code,{children:"AccountId32"}),"), which is\nan account address on the chain."]}),"\n",(0,i.jsxs)(s.h3,{id:"specifying-validfrom-optional",children:["Specifying ",(0,i.jsx)(s.code,{children:"validFrom"})," (optional)"]}),"\n",(0,i.jsxs)(s.p,{children:["The ",(0,i.jsx)(s.code,{children:"validFrom"})," field is optional, and refers to the block height of the relay chain upon which the\npayout can be issued. If the ",(0,i.jsx)(s.code,{children:"validFrom"})," parameter is not set, the spend can be paid out immediately\nafter approval. For more information on this field, refer to the\n",(0,i.jsx)(s.a,{href:"#creating-a-staged-proposal-with-validfrom",children:"guide below"}),"."]}),"\n",(0,i.jsx)(s.p,{children:"The final call should look like the following, where we:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Specify our asset as ",(0,i.jsx)(s.strong,{children:"USDT"})," on ",(0,i.jsx)(s.strong,{children:"Asset Hub"}),"."]}),"\n",(0,i.jsxs)(s.li,{children:["Specify the ",(0,i.jsx)(s.strong,{children:"amount"})," of ",(0,i.jsx)(s.strong,{children:"USDT"})," (100)."]}),"\n",(0,i.jsx)(s.li,{children:"Specify the beneficiary address."}),"\n",(0,i.jsxs)(s.li,{children:["If applicable, use the ",(0,i.jsx)(s.code,{children:"validFrom"})," field to specify a block number upon which the payout becomes\nvalid."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"The next steps are to:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Copy the preimage (and its length)"}),"\n",(0,i.jsx)(s.li,{children:"Sign and submit the preimage"}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["Once this is finished, one may submit a proposal\n",(0,i.jsx)(s.a,{href:"#submit-a-treasury-track-referendum",children:"as stated above"}),". Keep in mind one will also need to\n",(0,i.jsx)(s.a,{href:"#place-a-decision-deposit-for-the-treasury-track-referendum",children:"provide the decision deposit as well"}),"."]}),"\n",(0,i.jsx)(s.h3,{id:"manually-claiming-payouts",children:"Manually Claiming Payouts"}),"\n",(0,i.jsxs)(s.p,{children:["In order to claim the spend, you must manually call the ",(0,i.jsx)(s.code,{children:"treasury.payout"})," extrinsic via a ",(0,i.jsx)(s.code,{children:"Signed"}),"\norigin. The ",(0,i.jsx)(s.code,{children:"spendID"})," for the pending payout can be queried on-chain through Polkadot-JS UI >\nDeveloper > Chain State > Storage > treasury > spends and unselect the include option and then click\non the plus button to the right."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"payout",src:n(88195).A+"",width:"2768",height:"1370"})}),"\n",(0,i.jsxs)(s.p,{children:["From the list of spends, find the ",(0,i.jsx)(s.code,{children:"spendID"})," of your respetive payout and issue the payout extrinsic."]}),"\n",(0,i.jsx)(s.admonition,{title:"payout example",type:"tip",children:(0,i.jsxs)(s.p,{children:["To claim the first payout of ",(0,i.jsx)(s.a,{href:"https://kusama.subsquare.io/referenda/382?tab=call",children:"Referendum 382"})," on\nKusama, ",(0,i.jsx)(s.a,{href:"https://kusama.subscan.io/extrinsic/23061444-2",children:"this payout extrinsic"})," was issued. After\nissuing the payout extrinsic, the status of the payout changes from ",(0,i.jsx)(s.code,{children:"pending"})," to ",(0,i.jsx)(s.code,{children:"Attempted"})," with a\nreference to a payment ID. If the payout is successful, the balance on Asset Hub should be updated.\n",(0,i.jsx)(s.a,{href:"https://assethub-kusama.subscan.io/extrinsic/6923602-0",children:"Here"})," is the transfer extrinsic on Asset\nHub for the first payout of ",(0,i.jsx)(s.a,{href:"https://kusama.subscan.io/referenda_v2/382",children:"Referendum 382"}),"."]})}),"\n",(0,i.jsxs)(s.p,{children:["To clear the on-chain storage of a successful or expired spend, Treasury pallet's ",(0,i.jsx)(s.code,{children:"checkStatus"}),"\nextrinsic can be used. The transaction fees paid for issuing this extrinsic will be refunded."]}),"\n",(0,i.jsx)(s.h3,{id:"proposing-a-void-for-a-staged-proposal",children:'Proposing a "Void" for a Staged Proposal'}),"\n",(0,i.jsxs)(s.p,{children:["If a proposal that hasn't completed all of its spends needs to be voided, the ",(0,i.jsx)(s.code,{children:"treasury.voidSpend"}),"\nextrinsic can be utilized via a governance proposal."]}),"\n",(0,i.jsx)(s.admonition,{title:"Example proposal - Voiding a Treasury Spend",type:"tip",children:(0,i.jsxs)(s.p,{children:["For reference, check the referenda on Kusama that\n",(0,i.jsx)(s.a,{href:"https://kusama.subsquare.io/referenda/391",children:"tests VoidSpend functionality for Treasury Payouts"}),".\nThrough this referenda, a treasury spend was\n",(0,i.jsx)(s.a,{href:"https://kusama.subscan.io/event?page=1&time_dimension=date&module=treasury&event_id=assetspendvoided",children:"successfully voided"}),"."]})}),"\n",(0,i.jsx)(s.h2,{id:"submit-treasury-proposal-via-polkassembly",children:"Submit Treasury Proposal via Polkassembly"}),"\n",(0,i.jsxs)(s.p,{children:["To submit a treasury track referendum via ",(0,i.jsx)(s.a,{href:"https://polkadot.polkassembly.io/opengov",children:"Polkassembly"}),"\nclick on the FAB button in the bottom right corner. Then,"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:'Click on "Create Treasury Proposal" and choose an address for the proposer.'}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:"After choosing an address, you will enter a three-stage guideline:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Write a proposal: you can add a detailed description for the proposal, which will be stored on\nPolkassembly. Alternatively, you can link an existing discussion post."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"polkassembly-write-proposal",src:n(14879).A+"",width:"2130",height:"1596"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Create a preimage: an existing preimage can be linked, or a new one can be created. To create a\npreimage, add the beneficiary address and the token amount. The track will be auto-selected and\nthe user can proceed with the creation of a preimage."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.img,{alt:"polkassembly-create-preimage",src:n(94664).A+"",width:"2154",height:"1598"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Create a proposal: final confirmation about the proposal creation. The description of the\nproposal and the preimage are automatically linked to the proposal."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"requesting-tips-from-the-treasury",children:"Requesting Tips from the Treasury"}),"\n",(0,i.jsxs)(s.p,{children:["To request a tip funded by the treasury, you can follow the above steps for\n",(0,i.jsx)(s.a,{href:"#creating-a-treasury-proposal",children:"creating a treasury proposal"})," but instead of submitting the proposal\nto the ",(0,i.jsx)(s.code,{children:"32 / Small Spender"})," track, you will need to submit it to the ",(0,i.jsx)(s.code,{children:"30 / Small Tipper"})," or\n",(0,i.jsx)(s.code,{children:"31 / Big Tipper"})," tracks depending on the number of tokens to be requested."]}),"\n",(0,i.jsx)(s.p,{children:"Briefly, you will need to:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["Create a preimage using the ",(0,i.jsx)(s.code,{children:"treasury.spendLocal"})," extrinsic and specifying the number of tokens\nand the beneficiary of the tip"]}),"\n",(0,i.jsxs)(s.li,{children:["Submit a proposal to the right track (i.e. ",(0,i.jsx)(s.code,{children:"30"})," or ",(0,i.jsx)(s.code,{children:"31"}),") using the preimage hash"]}),"\n",(0,i.jsxs)(s.li,{children:["Once you started the referendum go to ",(0,i.jsx)(s.a,{href:"https://polkassembly.io/",children:"Polkassembly"}),", log in with the\nproposer account and edit the referendum details"]}),"\n",(0,i.jsxs)(s.li,{children:["Notify ",(0,i.jsx)(s.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"the Polkadot Direction Element Channel"}),"\nor ",(0,i.jsx)(s.a,{href:"https://matrix.to/#/#Polkadot-Direction:parity.io",children:"the Kusama Direction Element Channel"})," about\nyour referendum"]}),"\n",(0,i.jsxs)(s.li,{children:["Place the decision deposit\n",(0,i.jsx)(s.a,{href:"/docs/chain-state-values#opengov-referendum-timeout",children:"before the timeout"})]}),"\n",(0,i.jsxs)(s.li,{children:["Once the referendum ends you can\n",(0,i.jsx)(s.a,{href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits",children:"claim the preimage and decision deposits back"})]}),"\n"]})]})}function p(e={}){const{wrapper:s}={...(0,a.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},67141:(e,s,n)=>{n.d(s,{A:()=>t});var i=n(96540),a=n(74848);const t=function(e){var s,n=e.message,t=(0,i.useState)(!0),r=t[0],o=t[1];return(0,a.jsx)(a.Fragment,{children:r&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){o(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(s=n,s.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},22192:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/spend-amount-account-validfrom-temp-51145f395b6786e783600e3665bc7fab.png"},44855:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/spend-usdt-assethub-temp-4182c6d400d00e1c4d8e94efc96dadcf.png"},94664:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/polkassembly-create-preimage-7396a8ce796d0f0dcad30d3edced8618.png"},14879:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/polkassembly-write-proposal-a3ce8ab9303111f6003ac8103ba29507.png"},79087:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/OpenGov-Treasury-Preimage-SpendLocal-693c955b1e3e27bb6c98a6aad4d1b697.png"},44751:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/submit-proposal-treasury-3948a231c4f3162a8680ad052af9e903.png"},88195:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/treasury-multistage-payout-spend-id-54e73a1e8829cb911284ad15654d5661.png"},39555:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/treasury-preimage-hash-05bb427d21d3ecf7d5e38418a0a0f4ed.png"},52540:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/treasury-proposal-decision-deposit-849d27481ba0134acf743f7474d8f6a4.png"},28453:(e,s,n)=>{n.d(s,{R:()=>r,x:()=>o});var i=n(96540);const a={},t=i.createContext(a);function r(e){const s=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),i.createElement(t.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f0ff685a.17bf4a10.js b/assets/js/f0ff685a.17bf4a10.js
new file mode 100644
index 000000000000..3ccb67f53fd7
--- /dev/null
+++ b/assets/js/f0ff685a.17bf4a10.js
@@ -0,0 +1 @@
+(self.webpackChunk=self.webpackChunk||[]).push([[2393],{63362:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var n=o(74848),a=o(28453),s=(o(47379),o(67141));const r={id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy Guides",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},i=void 0,c={id:"learn/learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",description:"Polkadot-JS Guides about Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy",permalink:"/docs/learn-guides-accounts-proxy",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy Guides",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},sidebar:"docs",previous:{title:"Multisig Guides",permalink:"/docs/learn-guides-accounts-multisig"},next:{title:"Pure Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy-pure"}},l={},d=[{value:"Creating Proxy with Polkadot-JS",id:"creating-proxy-with-polkadot-js",level:2},{value:"Removing Proxy with Polkadot-JS",id:"removing-proxy-with-polkadot-js",level:2},{value:"View your Proxy on Polkadot-JS",id:"view-your-proxy-on-polkadot-js",level:2},{value:"Set-up and Use of Time-delayed Proxies with Polkadot-JS",id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js",level:2},{value:"Proxy calls",id:"proxy-calls",level:2},{value:"Nested Proxy Calls",id:"nested-proxy-calls",level:3}];function p(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",p:"p",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsxs)(t.p,{children:["Proxies allow users to use an account (it can be in cold storage or a hot wallet) less frequently\nbut actively participate in the network with the weight of the tokens in that account. Proxies are\nallowed to perform a limited amount of actions related to specific\n",(0,n.jsx)(t.a,{href:"https://docs.substrate.io/reference/frame-pallets/",children:"substrate pallets"})," on behalf of another\naccount. The videos below contain more information about using proxies."]}),"\n",(0,n.jsxs)("div",{className:"row",children:[(0,n.jsxs)("div",{className:"col text--center",children:[(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU",children:(0,n.jsx)("img",{src:"https://img.youtube.com/vi/1tcygkq52tU/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,n.jsx)("p",{children:(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU",children:"Proxy Accounts Tutorial"})})]}),(0,n.jsxs)("div",{className:"col text--center",children:[(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=4437s",children:(0,n.jsx)("img",{src:"https://img.youtube.com/vi/Qv_nJVcvQr8/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,n.jsx)("p",{children:(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=4437s",children:"Proxy Accounts Advanced Tutorial"})})]})]}),"\n",(0,n.jsx)(t.admonition,{title:"Know how to check the calls and pallets accessible by proxies",type:"tip",children:(0,n.jsxs)(t.p,{children:["For the latest information on the calls and pallets that can be fully accessed by proxies, check the\n",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk/blob/153543b0c8c582e73f520e5c08cbe33bddfb5f69/runtime/polkadot/src/lib.rs#L1158",children:"source code in the runtime folder"}),"\non the ",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk",children:"Polkadot repository"})]})}),"\n",(0,n.jsx)(t.h2,{id:"creating-proxy-with-polkadot-js",children:"Creating Proxy with Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:["To create a proxy account with Polkadot-JS read\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account",children:"this support article"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"removing-proxy-with-polkadot-js",children:"Removing Proxy with Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:['Read the section "Removing Proxies" on\n',(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account",children:"this support page"}),"\nto learn how to remove proxies."]}),"\n",(0,n.jsx)(t.h2,{id:"view-your-proxy-on-polkadot-js",children:"View your Proxy on Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:["To view your proxy, just go on the ",(0,n.jsx)(t.em,{children:"Accounts"})," menu in the Polkadot-JS UI, next to the proxied\naccount you will notice a blue icon. Hover on it, and you will see ",(0,n.jsx)(t.em,{children:"Proxy overview"}),". Click on it and\nyou will be presented with a list of all proxies for that account."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"polkadot_view_proxies",src:o(2997).A+"",width:"1842",height:"120"})}),"\n",(0,n.jsxs)(t.p,{children:["Additionally, you can head over to the ",(0,n.jsx)(t.em,{children:"Chain State"})," tab (underneath the ",(0,n.jsx)(t.em,{children:"Developer"})," menu) on\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate",children:"Polkadot-JS Apps"}),". If\nyou've created your proxy on a Polkadot account, it is required to change your network accordingly\nusing the top left navigation button. On this page, the proxy pallet should be selected, returning\nthe announcements and proxies functions. The proxies function will allow you to see your created\nproxies for either one account or for all accounts (using the toggle will enable this). Proxy\nannouncements are what time lock proxies do to announce they are going to conduct an action."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"polkadot_view_proxies_dev",src:o(16809).A+"",width:"1871",height:"820"})}),"\n",(0,n.jsx)(t.h2,{id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js",children:"Set-up and Use of Time-delayed Proxies with Polkadot-JS"}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["See ",(0,n.jsx)(t.a,{href:"https://youtu.be/3L7Vu2SX0PE",children:"this video tutorial"})," to learn how you can setup and use\ntime-delayed proxies. The video goes through the example below."]})}),"\n",(0,n.jsxs)(t.p,{children:["Initially the time time-delayed proxy announces its intended action using the ",(0,n.jsx)(t.code,{children:"proxy.announce"}),"\nextrinsic and will wait for the number of blocks defined in the delay time before executing it. The\nproxy will include the hash of the intended function call in the announcement. Within this time\nwindow, the intended action may be canceled by accounts that control the proxy. This can be done by\nthe proxy itself using the ",(0,n.jsx)(t.code,{children:"proxy.removeAnnouncement"})," extrinsic or by the proxied account using the\nthe ",(0,n.jsx)(t.code,{children:"proxy.rejectAnnouncement"})," extrinsic. Now we can use proxies knowing that any malicious actions\ncan be noticed and reverted within a delay period. After the time-delay, the proxy can use the\n",(0,n.jsx)(t.code,{children:"proxy.proxyAnnounced"})," extrinsic to execute the announced call."]}),"\n",(0,n.jsx)(t.p,{children:"Let's take for example the stash account Eleanor setting Bob as a time-delayed staking proxy. In\nthis way, if Bob submits an extrinsic to change the reward destination, such extrinsic can be\nrejected by Eleanor. This implies that Eleanor monitors Bob, and that within the time-delay she can\nspot the announced extrinsic. Eleanor can check all the proxy call announcements made by her\naccount's proxies on-chain. On Polkadot-JS UI, go to Developer > Storage > Proxy > Announcements to\ncheck the hashes for the calls made by the proxy accounts and the block height at which they are\nenabled for execution."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"time-delayed proxies",src:o(25225).A+"",width:"1920",height:"800"})}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["If you try to use ",(0,n.jsx)(t.code,{children:"proxy.proxyAnnounced"}),' to execute the call within the time-delay window you will\nget an error "Proxy unannounced" since the announcement will be done after the time delay. Also note\nthat regular ',(0,n.jsx)(t.code,{children:"proxy.proxy"})," calls do not work with time-delayed proxies, you need to announce the\ncall first and then execute the announced call on a separate transaction."]})}),"\n",(0,n.jsx)(t.h2,{id:"proxy-calls",children:"Proxy calls"}),"\n",(0,n.jsxs)(t.p,{children:["Proxy calls are used by proxies to call proxied accounts. These calls are important for example in\nthe case of ",(0,n.jsx)(t.em,{children:"pure"})," proxies, as any attempt to sign transactions with a ",(0,n.jsx)(t.em,{children:"pure"})," proxy will fail. For\nmore details see the ",(0,n.jsx)(t.a,{href:"/docs/learn-proxies-pure",children:"dedicated section about pure proxies"}),"."]}),"\n",(0,n.jsx)(t.h3,{id:"nested-proxy-calls",children:"Nested Proxy Calls"}),"\n",(0,n.jsxs)(t.p,{children:["As the term suggests, nested proxy calls are proxy calls within proxy calls. Such calls are needed\nif there are proxied accounts that are proxies themselves. In the example diagram below, Alice has a\nstash account that has a ",(0,n.jsx)(t.em,{children:"staking"})," proxy account, P-C. P-C is a ",(0,n.jsx)(t.em,{children:"pure"})," proxy, a proxied account\noriginally spawned by Charly that is now an ",(0,n.jsx)(t.em,{children:"any"})," proxy of P-C and signs everything on its behalf."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"nested proxy calls",src:o(42030).A+"",width:"1920",height:"800"})}),"\n",(0,n.jsxs)(t.p,{children:["For example, to bond more funds, Charly needs to submit a ",(0,n.jsx)(t.code,{children:"prox.proxy"})," extrinsic to P-C, which in\nturn submits a ",(0,n.jsx)(t.code,{children:"proxy.proxy"})," extrinsic to Alice including for example a ",(0,n.jsx)(t.code,{children:"staking.bondExtra"}),"\nextrinsic, specifying the number of extra tokens that need to be bounded. If Charly wants to leave,\na new account can take his place as any proxy (before Charly leaves!). There is no need to change\nthe staking proxy account. Also, Alice is the only one who can remove P-C as a staking proxy, and\nP-C can only perform staking-related tasks. For example, P-C cannot send funds out from Alice's\naccount."]}),"\n",(0,n.jsxs)(t.p,{children:["Proxy calls can be done using the Extrinsic Tab in the Polkadot-JS UI. Nested proxy calls can be\ndone by calling each ",(0,n.jsx)(t.code,{children:"proxy.proxy"})," extrinsic separately, or in some cases by just calling the last\n",(0,n.jsx)(t.code,{children:"proxy.proxy"})," extrinsic. In the diagram above, submitting the proxy call from P-C to Alice will\nautomatically ask for Charly's signature. Thus one proxy call will trigger the second one because\nCharly's is the only ",(0,n.jsx)(t.em,{children:"any"})," proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's\naccount we will need to submit all three proxy calls."]})]})}function u(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},67141:(e,t,o)=>{"use strict";o.d(t,{A:()=>s});var n=o(96540),a=o(74848);const s=function(e){var t,o=e.message,s=(0,n.useState)(!0),r=s[0],i=s[1];return(0,a.jsx)(a.Fragment,{children:r&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){i(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},47379:(e,t,o)=>{"use strict";o.d(t,{A:()=>u});var n=o(90675),a=o(10467),s=o(96540),r=o(19588),i=o(2026),c=o(11135);function l(e,t,o){return d.apply(this,arguments)}function d(){return(d=(0,a.A)((0,n.A)().mark((function e(t,o,a){var s,c,l,d,p;return(0,n.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s=void 0,c=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:"polkadotpeople"===e.t0?13:"kusamapeople"===e.t0?15:17;break;case 5:return s="wss://rpc.polkadot.io",e.abrupt("break",18);case 7:return s="wss://kusama-rpc.polkadot.io/",e.abrupt("break",18);case 9:return s="wss://statemine-rpc.polkadot.io/",e.abrupt("break",18);case 11:return s="wss://statemint-rpc.polkadot.io/",e.abrupt("break",18);case 13:return s="wss://polkadot-people-rpc.polkadot.io/",e.abrupt("break",18);case 15:return s="wss://kusama-people-rpc.polkadot.io/",e.abrupt("break",18);case 17:console.log("Unknown socket url provided, no connection made.");case 18:if(void 0!==s){e.next=22;break}return e.abrupt("return");case 22:return l=new r.E(s),e.next=25,i.G.create({provider:l});case 25:d=e.sent,(p=o.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=p[0],e.next="consts"===e.t1?31:"query"===e.t1?33:38;break;case 31:return c=d.toString(),e.abrupt("break",39);case 33:return e.next=35,d();case 35:return c=(c=e.sent).toString(),e.abrupt("break",39);case 38:console.log("Unknown path prefix ("+p[0]+") in "+o);case 39:return e.abrupt("return",c);case 40:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,o,n){switch(t){case"humanReadable":(0,c.HumanReadable)(e,o,n);break;case"precise":(0,c.Precise)(e,o,n);break;case"blocksToDays":(0,c.BlocksToDays)(e,n);break;case"erasToDays":(0,c.ErasToDays)(e,n,o);break;case"percentage":(0,c.Percentage)(e,n);break;case"permillToPercent":(0,c.PermillToPercent)(e,n);break;case"arrayLength":(0,c.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,r=e.defaultValue,i=e.filter,c=void 0===i?void 0:i,d=(0,s.useState)(""),u=d[0],h=d[1];return t=t.toLowerCase(),(0,s.useEffect)((function(){void 0!==c?p(r.toString(),c,t,h):h(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusamapeople":e="wss://kusama-people-rpc.polkadot.io";break;case"polkadotpeople":e="wss://polkadot-people-rpc.polkadot.io";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var s=function(){var e=(0,a.A)((0,n.A)().mark((function e(){var a;return(0,n.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l(t,o,h);case 2:if(void 0!==(a=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==c?p(a,c,t,h):h(a);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{s()}catch(i){console.log(i)}}}),[]),u}},11135:e=>{var t="polkadot",o="kusama",n="statemine",a="statemint",s="polkadotpeople",r="kusamapeople",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"},polkadotpeople:{precision:1e10,symbol:"DOT"},kusamapeople:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,c,l){var d=void 0;if(c===t||c===a)d=3;else if(c===o||c===n||c===s)d=6;else{if(c!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");d=8}e=parseFloat(e),l((e=Number.isInteger(e/i[c].precision)?e/i[c].precision+" "+i[c].symbol:(e/i[c].precision).toFixed(d)+" "+i[c].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,c){var l=void 0;if(c===t||c===a||c==s)l=1;else{if(c!==o&&c!==n&&c!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=4}i((e/=l).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},42030:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/nested-proxy-calls-65bdc70624a0b21a087da639743c710d.png"},2997:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/polkadot_view_proxies-5c65a3f24dc6902f1734de8887dd5696.png"},16809:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/polkadot_view_proxies_dev-c7f33e592f2c37cade0cc3d37e356aef.png"},25225:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/time-delayed-proxies-8b85523c3caac25b32d1d884af71c048.png"},47790:()=>{}}]);
\ No newline at end of file
diff --git a/assets/js/f0ff685a.4247cb3e.js b/assets/js/f0ff685a.4247cb3e.js
deleted file mode 100644
index 3f4f4a67014a..000000000000
--- a/assets/js/f0ff685a.4247cb3e.js
+++ /dev/null
@@ -1 +0,0 @@
-(self.webpackChunk=self.webpackChunk||[]).push([[2393],{63362:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var n=o(74848),a=o(28453),s=(o(47379),o(67141));const r={id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy Guides",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},i=void 0,c={id:"learn/learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",description:"Polkadot-JS Guides about Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy",permalink:"/docs/learn-guides-accounts-proxy",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1726760224e3,frontMatter:{id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy Guides",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},sidebar:"docs",previous:{title:"Multisig Guides",permalink:"/docs/learn-guides-accounts-multisig"},next:{title:"Pure Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy-pure"}},l={},d=[{value:"Creating Proxy with Polkadot-JS",id:"creating-proxy-with-polkadot-js",level:2},{value:"Removing Proxy with Polkadot-JS",id:"removing-proxy-with-polkadot-js",level:2},{value:"View your Proxy on Polkadot-JS",id:"view-your-proxy-on-polkadot-js",level:2},{value:"Set-up and Use of Time-delayed Proxies with Polkadot-JS",id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js",level:2},{value:"Proxy calls",id:"proxy-calls",level:2},{value:"Nested Proxy Calls",id:"nested-proxy-calls",level:3}];function p(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",p:"p",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsxs)(t.p,{children:["Proxies allow users to use an account (it can be in cold storage or a hot wallet) less frequently\nbut actively participate in the network with the weight of the tokens in that account. Proxies are\nallowed to perform a limited amount of actions related to specific\n",(0,n.jsx)(t.a,{href:"https://docs.substrate.io/reference/frame-pallets/",children:"substrate pallets"})," on behalf of another\naccount. The videos below contain more information about using proxies."]}),"\n",(0,n.jsxs)("div",{className:"row",children:[(0,n.jsxs)("div",{className:"col text--center",children:[(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU",children:(0,n.jsx)("img",{src:"https://img.youtube.com/vi/1tcygkq52tU/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,n.jsx)("p",{children:(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU",children:"Proxy Accounts Tutorial"})})]}),(0,n.jsxs)("div",{className:"col text--center",children:[(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=4437s",children:(0,n.jsx)("img",{src:"https://img.youtube.com/vi/Qv_nJVcvQr8/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,n.jsx)("p",{children:(0,n.jsx)("a",{href:"https://www.youtube.com/watch?v=Qv_nJVcvQr8&t=4437s",children:"Proxy Accounts Advanced Tutorial"})})]})]}),"\n",(0,n.jsx)(t.admonition,{title:"Know how to check the calls and pallets accessible by proxies",type:"tip",children:(0,n.jsxs)(t.p,{children:["For the latest information on the calls and pallets that can be fully accessed by proxies, check the\n",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk/blob/153543b0c8c582e73f520e5c08cbe33bddfb5f69/runtime/polkadot/src/lib.rs#L1158",children:"source code in the runtime folder"}),"\non the ",(0,n.jsx)(t.a,{href:"https://github.com/paritytech/polkadot-sdk",children:"Polkadot repository"})]})}),"\n",(0,n.jsx)(t.h2,{id:"creating-proxy-with-polkadot-js",children:"Creating Proxy with Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:["To create a proxy account with Polkadot-JS read\n",(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account",children:"this support article"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"removing-proxy-with-polkadot-js",children:"Removing Proxy with Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:['Read the section "Removing Proxies" on\n',(0,n.jsx)(t.a,{href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account",children:"this support page"}),"\nto learn how to remove proxies."]}),"\n",(0,n.jsx)(t.h2,{id:"view-your-proxy-on-polkadot-js",children:"View your Proxy on Polkadot-JS"}),"\n",(0,n.jsxs)(t.p,{children:["To view your proxy, just go on the ",(0,n.jsx)(t.em,{children:"Accounts"})," menu in the Polkadot-JS UI, next to the proxied\naccount you will notice a blue icon. Hover on it, and you will see ",(0,n.jsx)(t.em,{children:"Proxy overview"}),". Click on it and\nyou will be presented with a list of all proxies for that account."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"polkadot_view_proxies",src:o(2997).A+"",width:"1842",height:"120"})}),"\n",(0,n.jsxs)(t.p,{children:["Additionally, you can head over to the ",(0,n.jsx)(t.em,{children:"Chain State"})," tab (underneath the ",(0,n.jsx)(t.em,{children:"Developer"})," menu) on\n",(0,n.jsx)(t.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate",children:"Polkadot-JS Apps"}),". If\nyou've created your proxy on a Polkadot account, it is required to change your network accordingly\nusing the top left navigation button. On this page, the proxy pallet should be selected, returning\nthe announcements and proxies functions. The proxies function will allow you to see your created\nproxies for either one account or for all accounts (using the toggle will enable this). Proxy\nannouncements are what time lock proxies do to announce they are going to conduct an action."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"polkadot_view_proxies_dev",src:o(16809).A+"",width:"1871",height:"820"})}),"\n",(0,n.jsx)(t.h2,{id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js",children:"Set-up and Use of Time-delayed Proxies with Polkadot-JS"}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["See ",(0,n.jsx)(t.a,{href:"https://youtu.be/3L7Vu2SX0PE",children:"this video tutorial"})," to learn how you can setup and use\ntime-delayed proxies. The video goes through the example below."]})}),"\n",(0,n.jsxs)(t.p,{children:["Initially the time time-delayed proxy announces its intended action using the ",(0,n.jsx)(t.code,{children:"proxy.announce"}),"\nextrinsic and will wait for the number of blocks defined in the delay time before executing it. The\nproxy will include the hash of the intended function call in the announcement. Within this time\nwindow, the intended action may be canceled by accounts that control the proxy. This can be done by\nthe proxy itself using the ",(0,n.jsx)(t.code,{children:"proxy.removeAnnouncement"})," extrinsic or by the proxied account using the\nthe ",(0,n.jsx)(t.code,{children:"proxy.rejectAnnouncement"})," extrinsic. Now we can use proxies knowing that any malicious actions\ncan be noticed and reverted within a delay period. After the time-delay, the proxy can use the\n",(0,n.jsx)(t.code,{children:"proxy.proxyAnnounced"})," extrinsic to execute the announced call."]}),"\n",(0,n.jsx)(t.p,{children:"Let's take for example the stash account Eleanor setting Bob as a time-delayed staking proxy. In\nthis way, if Bob submits an extrinsic to change the reward destination, such extrinsic can be\nrejected by Eleanor. This implies that Eleanor monitors Bob, and that within the time-delay she can\nspot the announced extrinsic. Eleanor can check all the proxy call announcements made by her\naccount's proxies on-chain. On Polkadot-JS UI, go to Developer > Storage > Proxy > Announcements to\ncheck the hashes for the calls made by the proxy accounts and the block height at which they are\nenabled for execution."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"time-delayed proxies",src:o(25225).A+"",width:"1920",height:"800"})}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["If you try to use ",(0,n.jsx)(t.code,{children:"proxy.proxyAnnounced"}),' to execute the call within the time-delay window you will\nget an error "Proxy unannounced" since the announcement will be done after the time delay. Also note\nthat regular ',(0,n.jsx)(t.code,{children:"proxy.proxy"})," calls do not work with time-delayed proxies, you need to announce the\ncall first and then execute the announced call on a separate transaction."]})}),"\n",(0,n.jsx)(t.h2,{id:"proxy-calls",children:"Proxy calls"}),"\n",(0,n.jsxs)(t.p,{children:["Proxy calls are used by proxies to call proxied accounts. These calls are important for example in\nthe case of ",(0,n.jsx)(t.em,{children:"pure"})," proxies, as any attempt to sign transactions with a ",(0,n.jsx)(t.em,{children:"pure"})," proxy will fail. For\nmore details see the ",(0,n.jsx)(t.a,{href:"/docs/learn-proxies-pure",children:"dedicated section about pure proxies"}),"."]}),"\n",(0,n.jsx)(t.h3,{id:"nested-proxy-calls",children:"Nested Proxy Calls"}),"\n",(0,n.jsxs)(t.p,{children:["As the term suggests, nested proxy calls are proxy calls within proxy calls. Such calls are needed\nif there are proxied accounts that are proxies themselves. In the example diagram below, Alice has a\nstash account that has a ",(0,n.jsx)(t.em,{children:"staking"})," proxy account, P-C. P-C is a ",(0,n.jsx)(t.em,{children:"pure"})," proxy, a proxied account\noriginally spawned by Charly that is now an ",(0,n.jsx)(t.em,{children:"any"})," proxy of P-C and signs everything on its behalf."]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"nested proxy calls",src:o(42030).A+"",width:"1920",height:"800"})}),"\n",(0,n.jsxs)(t.p,{children:["For example, to bond more funds, Charly needs to submit a ",(0,n.jsx)(t.code,{children:"prox.proxy"})," extrinsic to P-C, which in\nturn submits a ",(0,n.jsx)(t.code,{children:"proxy.proxy"})," extrinsic to Alice including for example a ",(0,n.jsx)(t.code,{children:"staking.bondExtra"}),"\nextrinsic, specifying the number of extra tokens that need to be bounded. If Charly wants to leave,\na new account can take his place as any proxy (before Charly leaves!). There is no need to change\nthe staking proxy account. Also, Alice is the only one who can remove P-C as a staking proxy, and\nP-C can only perform staking-related tasks. For example, P-C cannot send funds out from Alice's\naccount."]}),"\n",(0,n.jsxs)(t.p,{children:["Proxy calls can be done using the Extrinsic Tab in the Polkadot-JS UI. Nested proxy calls can be\ndone by calling each ",(0,n.jsx)(t.code,{children:"proxy.proxy"})," extrinsic separately, or in some cases by just calling the last\n",(0,n.jsx)(t.code,{children:"proxy.proxy"})," extrinsic. In the diagram above, submitting the proxy call from P-C to Alice will\nautomatically ask for Charly's signature. Thus one proxy call will trigger the second one because\nCharly's is the only ",(0,n.jsx)(t.em,{children:"any"})," proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's\naccount we will need to submit all three proxy calls."]})]})}function u(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},67141:(e,t,o)=>{"use strict";o.d(t,{A:()=>s});var n=o(96540),a=o(74848);const s=function(e){var t,o=e.message,s=(0,n.useState)(!0),r=s[0],i=s[1];return(0,a.jsx)(a.Fragment,{children:r&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){i(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},47379:(e,t,o)=>{"use strict";o.d(t,{A:()=>u});var n=o(90675),a=o(10467),s=o(96540),r=o(19588),i=o(2026),c=o(11135);function l(e,t,o){return d.apply(this,arguments)}function d(){return(d=(0,a.A)((0,n.A)().mark((function e(t,o,a){var s,c,l,d,p;return(0,n.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s=void 0,c=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:"polkadotpeople"===e.t0?13:"kusamapeople"===e.t0?15:17;break;case 5:return s="wss://rpc.polkadot.io",e.abrupt("break",18);case 7:return s="wss://kusama-rpc.polkadot.io/",e.abrupt("break",18);case 9:return s="wss://statemine-rpc.polkadot.io/",e.abrupt("break",18);case 11:return s="wss://statemint-rpc.polkadot.io/",e.abrupt("break",18);case 13:return s="wss://polkadot-people-rpc.polkadot.io/",e.abrupt("break",18);case 15:return s="wss://kusama-people-rpc.polkadot.io/",e.abrupt("break",18);case 17:console.log("Unknown socket url provided, no connection made.");case 18:if(void 0!==s){e.next=22;break}return e.abrupt("return");case 22:return l=new r.E(s),e.next=25,i.G.create({provider:l});case 25:d=e.sent,(p=o.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=p[0],e.next="consts"===e.t1?31:"query"===e.t1?33:38;break;case 31:return c=d.toString(),e.abrupt("break",39);case 33:return e.next=35,d();case 35:return c=(c=e.sent).toString(),e.abrupt("break",39);case 38:console.log("Unknown path prefix ("+p[0]+") in "+o);case 39:return e.abrupt("return",c);case 40:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,o,n){switch(t){case"humanReadable":(0,c.HumanReadable)(e,o,n);break;case"precise":(0,c.Precise)(e,o,n);break;case"blocksToDays":(0,c.BlocksToDays)(e,n);break;case"erasToDays":(0,c.ErasToDays)(e,n,o);break;case"percentage":(0,c.Percentage)(e,n);break;case"permillToPercent":(0,c.PermillToPercent)(e,n);break;case"arrayLength":(0,c.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,r=e.defaultValue,i=e.filter,c=void 0===i?void 0:i,d=(0,s.useState)(""),u=d[0],h=d[1];return t=t.toLowerCase(),(0,s.useEffect)((function(){void 0!==c?p(r.toString(),c,t,h):h(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;case"kusamapeople":e="wss://kusama-people-rpc.polkadot.io";break;case"polkadotpeople":e="wss://polkadot-people-rpc.polkadot.io";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var s=function(){var e=(0,a.A)((0,n.A)().mark((function e(){var a;return(0,n.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l(t,o,h);case 2:if(void 0!==(a=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==c?p(a,c,t,h):h(a);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{s()}catch(i){console.log(i)}}}),[]),u}},11135:e=>{var t="polkadot",o="kusama",n="statemine",a="statemint",s="polkadotpeople",r="kusamapeople",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"},polkadotpeople:{precision:1e10,symbol:"DOT"},kusamapeople:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,c,l){var d=void 0;if(c===t||c===a)d=3;else if(c===o||c===n||c===s)d=6;else{if(c!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");d=8}e=parseFloat(e),l((e=Number.isInteger(e/i[c].precision)?e/i[c].precision+" "+i[c].symbol:(e/i[c].precision).toFixed(d)+" "+i[c].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,c){var l=void 0;if(c===t||c===a||c==s)l=1;else{if(c!==o&&c!==n&&c!=r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=4}i((e/=l).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},42030:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/nested-proxy-calls-65bdc70624a0b21a087da639743c710d.png"},2997:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/polkadot_view_proxies-5c65a3f24dc6902f1734de8887dd5696.png"},16809:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/polkadot_view_proxies_dev-c7f33e592f2c37cade0cc3d37e356aef.png"},25225:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o.p+"assets/images/time-delayed-proxies-8b85523c3caac25b32d1d884af71c048.png"},47790:()=>{}}]);
\ No newline at end of file
diff --git a/assets/js/f3027c84.39fc640c.js b/assets/js/f3027c84.39fc640c.js
deleted file mode 100644
index 133f50a16c55..000000000000
--- a/assets/js/f3027c84.39fc640c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1906],{2588:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var o=s(74848),t=s(28453),a=s(67141);const i={id:"polkadotjs-ui",title:"Polkadot-JS UI (Wallet)",sidebar_label:"Polkadot-JS UI",description:"A Wallet for Power-users and Developers.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs-ui"},r=void 0,l={id:"general/polkadotjs-ui",title:"Polkadot-JS UI (Wallet)",description:"A Wallet for Power-users and Developers.",source:"@site/../docs/general/polkadotjs-ui.md",sourceDirName:"general",slug:"/polkadotjs-ui",permalink:"/docs/polkadotjs-ui",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadotjs-ui.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1727943421e3,frontMatter:{id:"polkadotjs-ui",title:"Polkadot-JS UI (Wallet)",sidebar_label:"Polkadot-JS UI",description:"A Wallet for Power-users and Developers.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs-ui"},sidebar:"docs",previous:{title:"Polkadot-JS Tooling",permalink:"/docs/polkadotjs"},next:{title:"Polkadot-JS Guides",permalink:"/docs/learn-polkadot-js-guides"}},d={},c=[{value:"Main Functionalities",id:"main-functionalities",level:2},{value:"Accounts",id:"accounts",level:3},{value:"Network (Staking)",id:"network-staking",level:3},{value:"Settings",id:"settings",level:3},{value:"Other Functionalities",id:"other-functionalities",level:2},{value:"Network",id:"network",level:3},{value:"Governance",id:"governance",level:3},{value:"Developer",id:"developer",level:3},{value:"Beginner's Guide to Polkadot-JS",id:"beginners-guide-to-polkadot-js",level:2}];function h(e){const n={a:"a",blockquote:"blockquote",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/explorer",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS UI"})})," is the native application for\naccessing all features available on Substrate chains as Polkadot and Kusama. The UI is one of the\nmoving parts of ",(0,o.jsx)(n.a,{href:"/docs/polkadotjs",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS tool collection"})}),", and its functionalities go\nbeyond normal wallet functionalities such as transfers."]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Note that the UI may not precisely align with the functionality of individual parachains. For more\ninformation see the ",(0,o.jsx)(n.a,{href:"/docs/polkadotjs#polkadot-js-api",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS Page"})}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"main-functionalities",children:"Main Functionalities"}),"\n",(0,o.jsx)(n.p,{children:"Here we describe those functionalities that will likely be useful to most users. Those\nfunctionalities include account generation, balance transfers, and staking."}),"\n",(0,o.jsx)(n.h3,{id:"accounts",children:"Accounts"}),"\n",(0,o.jsxs)(n.p,{children:["In this section of the UI, you can see accounts injected from a browser extension, such as the\n",(0,o.jsx)(n.a,{href:"/docs/polkadotjs#polkadot-js-extension",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS Extension"})})," or\n",(0,o.jsx)(n.a,{href:"/docs/wallets-and-extensions#browser-extensions",children:(0,o.jsx)(n.strong,{children:"other in-browser wallets"})}),". It is also possible\nto expand balance details and see different\n",(0,o.jsx)(n.a,{href:"/docs/learn-account-balances#balance-types-on-polkadot-js",children:(0,o.jsx)(n.strong,{children:"account balance types"})}),". You\ncan also:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Add an account (this option must be enabled under ",(0,o.jsx)(n.a,{href:"#settings",children:"Settings"}),"). Note that if you clear\nthe cache of your browser, you will lose it, and you will need to recover it through seed phrase\nor JSON file."]}),"\n",(0,o.jsx)(n.li,{children:"Recover and account from JSON file."}),"\n",(0,o.jsx)(n.li,{children:"Add an account from QR code."}),"\n",(0,o.jsxs)(n.li,{children:["Add an account from a ",(0,o.jsx)(n.a,{href:"/docs/ledger",children:(0,o.jsx)(n.strong,{children:"Ledger"})})," device (this option must be enabled under\n",(0,o.jsx)(n.a,{href:"#settings",children:"Settings"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:["Create a ",(0,o.jsx)(n.a,{href:"/docs/learn-account-multisig",children:(0,o.jsx)(n.strong,{children:"multi-signature account"})}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Add a proxied account (see\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy",children:(0,o.jsx)(n.strong,{children:"Pure Proxies"})})," for more\ninformation)."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["For each account visible in the UI, you can perform different actions, including\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies",children:(0,o.jsx)(n.strong,{children:"adding a proxy"})}),",\n",(0,o.jsx)(n.a,{href:"/docs/learn-identity",children:(0,o.jsx)(n.strong,{children:"setting an identity"})}),", and\n",(0,o.jsx)(n.a,{href:"/docs/learn-transactions#balance-transfers",children:(0,o.jsx)(n.strong,{children:"sending tokens"})}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For more information about adding and recovering accounts, see the\n",(0,o.jsx)(n.a,{href:"/docs/learn-accounts#account-generation",children:(0,o.jsx)(n.strong,{children:"Account Generation"})})," page."]}),"\n",(0,o.jsx)(n.h3,{id:"network-staking",children:"Network (Staking)"}),"\n",(0,o.jsxs)(n.p,{children:["In this section of the UI, you can participate in ",(0,o.jsx)(n.a,{href:"/docs/learn-staking",children:(0,o.jsx)(n.strong,{children:"staking"})}),". In the\nStaking menu you can access:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Overview"})," tab showing active or waiting validators."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Accounts"})," tab (visible only if you added an account) showing accounts that are currently\nused for staking\n(",(0,o.jsx)(n.a,{href:"/docs/learn-staking#stash-account-and-staking-proxy",children:(0,o.jsx)(n.strong,{children:"stash and staking proxy"})}),"), bonded\namount, and nominations. In this tab, you can do staking-related transactions such as bonding more\nfunds or changing nominations. If you have\n",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#staking-proxies",children:(0,o.jsx)(n.strong,{children:"staking proxies"})})," here, you can use them\nwhile signing for staking-related transactions."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Payouts"})," tab (visible only if you added an account) showing any pending rewards that still\nneed to be paid out to you."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Pool"})," tab showing all registered ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:(0,o.jsx)(n.strong,{children:"nomination pool"})}),"\nwith the respective state (open, blocked, or destroying). This tab can also be used to create and\njoin a pool."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Targets"})," tab showing detailed information about validators such as commission and return.\nMore information can be found in the ",(0,o.jsx)(n.a,{href:"/docs/learn-nominator",children:(0,o.jsx)(n.strong,{children:"Nominator Page"})}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Bags"}),' tab (visible only if you added an account) showing the bag you are in ("My bags") and\nall bags within the ',(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:(0,o.jsx)(n.strong,{children:"bags list"})}),". Here (if\napplicable), you can rebag accounts that do not belong to the bag you are in, and you can move\nyour account in front of the account having less stake than you."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Slashes"})," tab showing if there are any global ",(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashes"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Validator stats"})," tab showing statistics for a chosen validator."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"settings",children:"Settings"}),"\n",(0,o.jsx)(n.p,{children:"In this UI section, you can change general settings such as appearance and language. You can also:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Allow local in-browser account storage. This is used to add accounts directly in the UI (which\ndiffers from having an account injected from a browser extension)."}),"\n",(0,o.jsx)(n.li,{children:"Choose to attach Ledger devices. This adds an account directly in the UI from a Ledger device."}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Under Settings you can also do the metadata update. Usually, if there is an update, this will be\nshown as a notification. For more information about metadata updates, see the\n",(0,o.jsx)(n.a,{href:"/docs/learn-guides-accounts#metadata-updates-with-the-polkadot-js-browser-extension",children:(0,o.jsx)(n.strong,{children:"dedicated section"})}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"other-functionalities",children:"Other Functionalities"}),"\n",(0,o.jsx)(n.p,{children:"In this section, we describe those functionalities that will less likely interest the average user."}),"\n",(0,o.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,o.jsx)(n.p,{children:"In addition to staking, in the Network section, you can also:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"See the Explorer with the most recent blocks and events."}),"\n",(0,o.jsxs)(n.li,{children:["Inspect ",(0,o.jsx)(n.a,{href:"/docs/learn-parachains",children:(0,o.jsx)(n.strong,{children:"parachains"})}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"governance",children:"Governance"}),"\n",(0,o.jsxs)(n.p,{children:["In this section of the UI, you can participate in\n",(0,o.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:(0,o.jsx)(n.strong,{children:"governance"})}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"developer",children:"Developer"}),"\n",(0,o.jsx)(n.p,{children:"In this section of the UI, you can access advanced features such as:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/chainstate",children:"Query on-chain data"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/rpc",children:"Query the node using RPC calls"})}),"\n",(0,o.jsxs)(n.li,{children:["Call ",(0,o.jsx)(n.a,{href:"/docs/learn-transactions",children:(0,o.jsx)(n.strong,{children:"extrinsics"})})," using your account (you are able to see this\noption only if you have an account in the UI)"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/extrinsics",children:"Extrinsic tab"})," provides the use to access more\ngranular functions such as\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy",children:(0,o.jsx)(n.strong,{children:"pure proxies"})})," and\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies#time-delayed-proxy",children:(0,o.jsx)(n.strong,{children:"time-delayed proxies"})}),", change\n",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:(0,o.jsx)(n.strong,{children:"nomination pool"})})," settings (nomination and roles) and use\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies#non-transfer-proxy",children:(0,o.jsx)(n.strong,{children:"non-transfer proxies"})}),",\n",(0,o.jsx)(n.a,{href:"/docs/learn-assets#destroying-an-asset",children:(0,o.jsx)(n.strong,{children:"destroy assets"})}),", and much more."]}),"\n",(0,o.jsx)(n.h2,{id:"beginners-guide-to-polkadot-js",children:"Beginner's Guide to Polkadot-JS"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.youtube.com/watch?v=4EQqwGFV1D8",children:"Introduction to Polkadot-JS"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.youtube.com/watch?v=sy7lvAqyzkY",children:"Create an account using Polkadot-JS"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.youtube.com/watch?v=g4b4IWR6OrE",children:"Network Explorer on Polkadot-JS UI"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},67141:(e,n,s)=>{s.d(n,{A:()=>a});var o=s(96540),t=s(74848);const a=function(e){var n,s=e.message,a=(0,o.useState)(!0),i=a[0],r=a[1];return(0,t.jsx)(t.Fragment,{children:i&&(0,t.jsxs)("div",{className:"message-box",children:[(0,t.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,t.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(n=s,n.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},28453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>r});var o=s(96540);const t={},a=o.createContext(t);function i(e){const n=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f3027c84.40db5984.js b/assets/js/f3027c84.40db5984.js
new file mode 100644
index 000000000000..462e12ee709e
--- /dev/null
+++ b/assets/js/f3027c84.40db5984.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1906],{2588:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var o=s(74848),t=s(28453),a=s(67141);const i={id:"polkadotjs-ui",title:"Polkadot-JS UI (Wallet)",sidebar_label:"Polkadot-JS UI",description:"A Wallet for Power-users and Developers.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs-ui"},r=void 0,l={id:"general/polkadotjs-ui",title:"Polkadot-JS UI (Wallet)",description:"A Wallet for Power-users and Developers.",source:"@site/../docs/general/polkadotjs-ui.md",sourceDirName:"general",slug:"/polkadotjs-ui",permalink:"/docs/polkadotjs-ui",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadotjs-ui.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"polkadotjs-ui",title:"Polkadot-JS UI (Wallet)",sidebar_label:"Polkadot-JS UI",description:"A Wallet for Power-users and Developers.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs-ui"},sidebar:"docs",previous:{title:"Polkadot-JS Tooling",permalink:"/docs/polkadotjs"},next:{title:"Polkadot-JS Guides",permalink:"/docs/learn-polkadot-js-guides"}},c={},d=[{value:"Main Functionalities",id:"main-functionalities",level:2},{value:"Accounts",id:"accounts",level:3},{value:"Network (Staking)",id:"network-staking",level:3},{value:"Settings",id:"settings",level:3},{value:"Other Functionalities",id:"other-functionalities",level:2},{value:"Network",id:"network",level:3},{value:"Governance",id:"governance",level:3},{value:"Developer",id:"developer",level:3},{value:"Beginner's Guide to Polkadot-JS",id:"beginners-guide-to-polkadot-js",level:2}];function h(e){const n={a:"a",blockquote:"blockquote",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/explorer",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS UI"})})," is the native application for\naccessing all features available on Substrate chains as Polkadot and Kusama. The UI is one of the\nmoving parts of ",(0,o.jsx)(n.a,{href:"/docs/polkadotjs",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS tool collection"})}),", and its functionalities go\nbeyond normal wallet functionalities such as transfers."]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Note that the UI may not precisely align with the functionality of individual parachains. For more\ninformation see the ",(0,o.jsx)(n.a,{href:"/docs/polkadotjs#polkadot-js-api",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS Page"})}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"main-functionalities",children:"Main Functionalities"}),"\n",(0,o.jsx)(n.p,{children:"Here we describe those functionalities that will likely be useful to most users. Those\nfunctionalities include account generation, balance transfers, and staking."}),"\n",(0,o.jsx)(n.h3,{id:"accounts",children:"Accounts"}),"\n",(0,o.jsxs)(n.p,{children:["In this section of the UI, you can see accounts injected from a browser extension, such as the\n",(0,o.jsx)(n.a,{href:"/docs/polkadotjs#polkadot-js-extension",children:(0,o.jsx)(n.strong,{children:"Polkadot-JS Extension"})})," or\n",(0,o.jsx)(n.a,{href:"/docs/wallets-and-extensions#browser-extensions",children:(0,o.jsx)(n.strong,{children:"other in-browser wallets"})}),". It is also possible\nto expand balance details and see different\n",(0,o.jsx)(n.a,{href:"/docs/learn-account-balances#balance-types-on-polkadot-js",children:(0,o.jsx)(n.strong,{children:"account balance types"})}),". You\ncan also:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Add an account (this option must be enabled under ",(0,o.jsx)(n.a,{href:"#settings",children:"Settings"}),"). Note that if you clear\nthe cache of your browser, you will lose it, and you will need to recover it through seed phrase\nor JSON file."]}),"\n",(0,o.jsx)(n.li,{children:"Recover and account from JSON file."}),"\n",(0,o.jsx)(n.li,{children:"Add an account from QR code."}),"\n",(0,o.jsxs)(n.li,{children:["Add an account from a ",(0,o.jsx)(n.a,{href:"/docs/ledger",children:(0,o.jsx)(n.strong,{children:"Ledger"})})," device (this option must be enabled under\n",(0,o.jsx)(n.a,{href:"#settings",children:"Settings"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:["Create a ",(0,o.jsx)(n.a,{href:"/docs/learn-account-multisig",children:(0,o.jsx)(n.strong,{children:"multi-signature account"})}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Add a proxied account (see\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy",children:(0,o.jsx)(n.strong,{children:"Pure Proxies"})})," for more\ninformation)."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["For each account visible in the UI, you can perform different actions, including\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies",children:(0,o.jsx)(n.strong,{children:"adding a proxy"})}),",\n",(0,o.jsx)(n.a,{href:"/docs/learn-identity",children:(0,o.jsx)(n.strong,{children:"setting an identity"})}),", and\n",(0,o.jsx)(n.a,{href:"/docs/learn-transactions#balance-transfers",children:(0,o.jsx)(n.strong,{children:"sending tokens"})}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For more information about adding and recovering accounts, see the\n",(0,o.jsx)(n.a,{href:"/docs/learn-accounts#account-generation",children:(0,o.jsx)(n.strong,{children:"Account Generation"})})," page."]}),"\n",(0,o.jsx)(n.h3,{id:"network-staking",children:"Network (Staking)"}),"\n",(0,o.jsxs)(n.p,{children:["In this section of the UI, you can participate in ",(0,o.jsx)(n.a,{href:"/docs/learn-staking",children:(0,o.jsx)(n.strong,{children:"staking"})}),". In the\nStaking menu you can access:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Overview"})," tab showing active or waiting validators."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Accounts"})," tab (visible only if you added an account) showing accounts that are currently\nused for staking\n(",(0,o.jsx)(n.a,{href:"/docs/learn-staking#stash-account-and-staking-proxy",children:(0,o.jsx)(n.strong,{children:"stash and staking proxy"})}),"), bonded\namount, and nominations. In this tab, you can do staking-related transactions such as bonding more\nfunds or changing nominations. If you have\n",(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#staking-proxies",children:(0,o.jsx)(n.strong,{children:"staking proxies"})})," here, you can use them\nwhile signing for staking-related transactions."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Payouts"})," tab (visible only if you added an account) showing any pending rewards that still\nneed to be paid out to you."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Pool"})," tab showing all registered ",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:(0,o.jsx)(n.strong,{children:"nomination pool"})}),"\nwith the respective state (open, blocked, or destroying). This tab can also be used to create and\njoin a pool."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Targets"})," tab showing detailed information about validators such as commission and return.\nMore information can be found in the ",(0,o.jsx)(n.a,{href:"/docs/learn-nominator",children:(0,o.jsx)(n.strong,{children:"Nominator Page"})}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Bags"}),' tab (visible only if you added an account) showing the bag you are in ("My bags") and\nall bags within the ',(0,o.jsx)(n.a,{href:"/docs/learn-staking-advanced#bags-list",children:(0,o.jsx)(n.strong,{children:"bags list"})}),". Here (if\napplicable), you can rebag accounts that do not belong to the bag you are in, and you can move\nyour account in front of the account having less stake than you."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Slashes"})," tab showing if there are any global ",(0,o.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashes"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["The ",(0,o.jsx)(n.strong,{children:"Validator stats"})," tab showing statistics for a chosen validator."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"settings",children:"Settings"}),"\n",(0,o.jsx)(n.p,{children:"In this UI section, you can change general settings such as appearance and language. You can also:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Allow local in-browser account storage. This is used to add accounts directly in the UI (which\ndiffers from having an account injected from a browser extension)."}),"\n",(0,o.jsx)(n.li,{children:"Choose to attach Ledger devices. This adds an account directly in the UI from a Ledger device."}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Under Settings you can also do the metadata update. Usually, if there is an update, this will be\nshown as a notification. For more information about metadata updates, see the\n",(0,o.jsx)(n.a,{href:"/docs/learn-guides-accounts#metadata-updates-with-the-polkadot-js-browser-extension",children:(0,o.jsx)(n.strong,{children:"dedicated section"})}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"other-functionalities",children:"Other Functionalities"}),"\n",(0,o.jsx)(n.p,{children:"In this section, we describe those functionalities that will less likely interest the average user."}),"\n",(0,o.jsx)(n.h3,{id:"network",children:"Network"}),"\n",(0,o.jsx)(n.p,{children:"In addition to staking, in the Network section, you can also:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"See the Explorer with the most recent blocks and events."}),"\n",(0,o.jsxs)(n.li,{children:["Inspect ",(0,o.jsx)(n.a,{href:"/docs/learn-parachains",children:(0,o.jsx)(n.strong,{children:"parachains"})}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"governance",children:"Governance"}),"\n",(0,o.jsxs)(n.p,{children:["In this section of the UI, you can participate in\n",(0,o.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:(0,o.jsx)(n.strong,{children:"governance"})}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"developer",children:"Developer"}),"\n",(0,o.jsx)(n.p,{children:"In this section of the UI, you can access advanced features such as:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/chainstate",children:"Query on-chain data"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/rpc",children:"Query the node using RPC calls"})}),"\n",(0,o.jsxs)(n.li,{children:["Call ",(0,o.jsx)(n.a,{href:"/docs/learn-transactions",children:(0,o.jsx)(n.strong,{children:"extrinsics"})})," using your account (you are able to see this\noption only if you have an account in the UI)"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.a,{href:"https://polkadot.js.org/apps/#/extrinsics",children:"Extrinsic tab"})," provides the use to access more\ngranular functions such as\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy",children:(0,o.jsx)(n.strong,{children:"pure proxies"})})," and\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies#time-delayed-proxy",children:(0,o.jsx)(n.strong,{children:"time-delayed proxies"})}),", change\n",(0,o.jsx)(n.a,{href:"/docs/learn-nomination-pools",children:(0,o.jsx)(n.strong,{children:"nomination pool"})})," settings (nomination and roles) and use\n",(0,o.jsx)(n.a,{href:"/docs/learn-proxies#non-transfer-proxy",children:(0,o.jsx)(n.strong,{children:"non-transfer proxies"})}),",\n",(0,o.jsx)(n.a,{href:"/docs/learn-assets#destroying-an-asset",children:(0,o.jsx)(n.strong,{children:"destroy assets"})}),", and much more."]}),"\n",(0,o.jsx)(n.h2,{id:"beginners-guide-to-polkadot-js",children:"Beginner's Guide to Polkadot-JS"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.youtube.com/watch?v=4EQqwGFV1D8",children:"Introduction to Polkadot-JS"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.youtube.com/watch?v=sy7lvAqyzkY",children:"Create an account using Polkadot-JS"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.youtube.com/watch?v=g4b4IWR6OrE",children:"Network Explorer on Polkadot-JS UI"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},67141:(e,n,s)=>{s.d(n,{A:()=>a});var o=s(96540),t=s(74848);const a=function(e){var n,s=e.message,a=(0,o.useState)(!0),i=a[0],r=a[1];return(0,t.jsx)(t.Fragment,{children:i&&(0,t.jsxs)("div",{className:"message-box",children:[(0,t.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,t.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(n=s,n.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},28453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>r});var o=s(96540);const t={},a=o.createContext(t);function i(e){const n=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f7acb151.2b827000.js b/assets/js/f7acb151.2b827000.js
deleted file mode 100644
index 2d1122249918..000000000000
--- a/assets/js/f7acb151.2b827000.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2783],{43143:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var n=t(74848),a=t(28453),o=t(67141);const i={id:"learn-guides-assets-create",title:"Polkadot-JS Guides about Creating Assets",sidebar_label:"Create Asset Guides",description:"Polkadot-JS Guides about Creating Assets.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-create"},r=void 0,d={id:"learn/learn-guides-assets-create",title:"Polkadot-JS Guides about Creating Assets",description:"Polkadot-JS Guides about Creating Assets.",source:"@site/../docs/learn/learn-guides-assets-create.md",sourceDirName:"learn",slug:"/learn-guides-assets-create",permalink:"/docs/learn-guides-assets-create",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets-create.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1727991122e3,frontMatter:{id:"learn-guides-assets-create",title:"Polkadot-JS Guides about Creating Assets",sidebar_label:"Create Asset Guides",description:"Polkadot-JS Guides about Creating Assets.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-create"},sidebar:"docs",previous:{title:"Asset Hub Guides",permalink:"/docs/learn-guides-assets"},next:{title:"Asset Conversion Tutorials",permalink:"/docs/learn-guides-asset-conversion"}},l={},c=[{value:"Creating Assets on the Asset Hub with Polkadot-JS",id:"creating-assets-on-the-asset-hub-with-polkadot-js",level:2}];function h(e){const s={a:"a",admonition:"admonition",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsxs)(s.p,{children:["The Asset Hub is a generic assets system parachain which provides functionality for deploying and\ntransferring assets \u2014 both Fungible and Non-Fungible Tokens (NFTs). The native token of the Asset\nhub is the same as the relay chain's native asset (DOT or KSM). The Existential Deposit (ED),\ntransaction fees, and the deposits for proxy/multisig operations are about\n",(0,n.jsx)(s.a,{href:"/docs/chain-state-values#existential-deposit-2",children:"1/10th of the values on the relay chains"}),".\nApart from the native token, the assets held on the Asset Hub can be broadly categorized as"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Assets backed by an on-chain protocol\u2019s utility"}),"\n",(0,n.jsx)(s.li,{children:"Assets with off-chain backing"}),"\n",(0,n.jsx)(s.li,{children:"Assets without any backing"}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:["For additional background on the Asset Hub check out\n",(0,n.jsx)(s.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181800-what-is-statemint-and-statemine-and-how-do-i-use-them-",children:"this support article"}),"."]}),"\n",(0,n.jsx)(s.h2,{id:"creating-assets-on-the-asset-hub-with-polkadot-js",children:"Creating Assets on the Asset Hub with Polkadot-JS"}),"\n",(0,n.jsxs)(s.admonition,{type:"info",children:[(0,n.jsxs)(s.p,{children:["Before minting assets on the Asset Hub, we recommend that you try out this tutorial on Westend Asset\nHub, which is a system parachain on Westend test network. The WND tokens (Westies) can be teleported\nfrom Westend to Westend Asset Hub, are available for free through a\n",(0,n.jsx)(s.a,{href:"/docs/learn-DOT#getting-tokens-on-the-westend-testnet",children:"faucet"}),"."]}),(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"The images in the guides below are for Polkadot, but they also apply to Kusama."})})]}),"\n",(0,n.jsxs)(s.p,{children:["To create an asset on the Asset Hub, you would need to\n",(0,n.jsx)(s.a,{href:"/docs/chain-state-values#asset-deposit",children:"deposit some funds"}),". Before you create an asset on\nthe Asset Hub, ensure that your Asset Hub account balance is a bit more than the sum of those two\ndeposits, which should seamlessly account for the required deposits and transaction fees. You can\nsend the native token from a relay chain account to a the Asset Hub account using the teleport\nfunctionality. For instructions on teleporting tokens, check this\n",(0,n.jsx)(s.a,{href:"/docs/learn-teleport",children:"page on Teleports"}),"."]}),"\n",(0,n.jsx)(s.p,{children:"Assuming you have the required balance on your Asset Hub account, the following instructions should\nlet you successfully create an asset on the Asset Hub"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Access the Asset Hub through ",(0,n.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/explorer",children:"Polkadot-JS UI"}),"."]}),"\n",(0,n.jsx)(s.li,{children:"Navigate to Network > Assets."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Navigate to Assets page",src:t(99776).A+"",width:"1710",height:"554"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Click on the create button and you will be presented with a pop-up window. Choose the creator\naccount, name of the asset to be displayed on the Asset Hub, the asset's symbol, number of\ndecimals for the asset, the minimum balance required to hold this asset on an Asset Hub account\nand the most important field of your asset - the unique asset ID. The UI would not let you enter\nan ID that has already been taken. After all the details are entered, click on the next button."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Add Asset Metadata",src:t(23977).A+"",width:"1510",height:"798"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Choose the admin, issuer and the freezer accounts for your asset and click on the create button."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Asset managing accounts",src:t(59442).A+"",width:"1518",height:"510"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Sign and submit the transaction (If you like to verify the transaction details before signing, you\ncan click on the dropdown button pointed by the arrow in the snapshot below)."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Sign asset creating transaction",src:t(80987).A+"",width:"1520",height:"610"})}),"\n",(0,n.jsx)(s.p,{children:"If the transaction is successful, you should see the asset and its details displayed in the\nNetwork > Assets page on the Asset Hub."})]})}function u(e={}){const{wrapper:s}={...(0,a.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,s,t)=>{t.d(s,{A:()=>o});var n=t(96540),a=t(74848);const o=function(e){var s,t=e.message,o=(0,n.useState)(!0),i=o[0],r=o[1];return(0,a.jsx)(a.Fragment,{children:i&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(s=t,s.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},99776:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-0-71cbceb69c712729d7920b4575ab8f46.png"},23977:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-1-6f406281abdca9f5c2941ebd4d9479fd.png"},59442:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-2-2fd6118841d0c4e037d5f51c6b1010e1.png"},80987:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-3-3952e84a1b7c80239e8fb1f907af2583.png"},28453:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>r});var n=t(96540);const a={},o=n.createContext(a);function i(e){const s=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f7acb151.ca2168e5.js b/assets/js/f7acb151.ca2168e5.js
new file mode 100644
index 000000000000..b1bfd7b6d9e4
--- /dev/null
+++ b/assets/js/f7acb151.ca2168e5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2783],{43143:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var n=t(74848),a=t(28453),o=t(67141);const i={id:"learn-guides-assets-create",title:"Polkadot-JS Guides about Creating Assets",sidebar_label:"Create Asset Guides",description:"Polkadot-JS Guides about Creating Assets.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-create"},r=void 0,d={id:"learn/learn-guides-assets-create",title:"Polkadot-JS Guides about Creating Assets",description:"Polkadot-JS Guides about Creating Assets.",source:"@site/../docs/learn/learn-guides-assets-create.md",sourceDirName:"learn",slug:"/learn-guides-assets-create",permalink:"/docs/learn-guides-assets-create",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets-create.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"learn-guides-assets-create",title:"Polkadot-JS Guides about Creating Assets",sidebar_label:"Create Asset Guides",description:"Polkadot-JS Guides about Creating Assets.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-create"},sidebar:"docs",previous:{title:"Asset Hub Guides",permalink:"/docs/learn-guides-assets"},next:{title:"Asset Conversion Tutorials",permalink:"/docs/learn-guides-asset-conversion"}},l={},c=[{value:"Creating Assets on the Asset Hub with Polkadot-JS",id:"creating-assets-on-the-asset-hub-with-polkadot-js",level:2}];function h(e){const s={a:"a",admonition:"admonition",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsxs)(s.p,{children:["The Asset Hub is a generic assets system parachain which provides functionality for deploying and\ntransferring assets \u2014 both Fungible and Non-Fungible Tokens (NFTs). The native token of the Asset\nhub is the same as the relay chain's native asset (DOT or KSM). The Existential Deposit (ED),\ntransaction fees, and the deposits for proxy/multisig operations are about\n",(0,n.jsx)(s.a,{href:"/docs/chain-state-values#existential-deposit-2",children:"1/10th of the values on the relay chains"}),".\nApart from the native token, the assets held on the Asset Hub can be broadly categorized as"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Assets backed by an on-chain protocol\u2019s utility"}),"\n",(0,n.jsx)(s.li,{children:"Assets with off-chain backing"}),"\n",(0,n.jsx)(s.li,{children:"Assets without any backing"}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:["For additional background on the Asset Hub check out\n",(0,n.jsx)(s.a,{href:"https://support.polkadot.network/support/solutions/articles/65000181800-what-is-statemint-and-statemine-and-how-do-i-use-them-",children:"this support article"}),"."]}),"\n",(0,n.jsx)(s.h2,{id:"creating-assets-on-the-asset-hub-with-polkadot-js",children:"Creating Assets on the Asset Hub with Polkadot-JS"}),"\n",(0,n.jsxs)(s.admonition,{type:"info",children:[(0,n.jsxs)(s.p,{children:["Before minting assets on the Asset Hub, we recommend that you try out this tutorial on Westend Asset\nHub, which is a system parachain on Westend test network. The WND tokens (Westies) can be teleported\nfrom Westend to Westend Asset Hub, are available for free through a\n",(0,n.jsx)(s.a,{href:"/docs/learn-DOT#getting-tokens-on-the-westend-testnet",children:"faucet"}),"."]}),(0,n.jsx)(s.p,{children:(0,n.jsx)(s.strong,{children:"The images in the guides below are for Polkadot, but they also apply to Kusama."})})]}),"\n",(0,n.jsxs)(s.p,{children:["To create an asset on the Asset Hub, you would need to\n",(0,n.jsx)(s.a,{href:"/docs/chain-state-values#asset-deposit",children:"deposit some funds"}),". Before you create an asset on\nthe Asset Hub, ensure that your Asset Hub account balance is a bit more than the sum of those two\ndeposits, which should seamlessly account for the required deposits and transaction fees. You can\nsend the native token from a relay chain account to a the Asset Hub account using the teleport\nfunctionality. For instructions on teleporting tokens, check this\n",(0,n.jsx)(s.a,{href:"/docs/learn-teleport",children:"page on Teleports"}),"."]}),"\n",(0,n.jsx)(s.p,{children:"Assuming you have the required balance on your Asset Hub account, the following instructions should\nlet you successfully create an asset on the Asset Hub"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Access the Asset Hub through ",(0,n.jsx)(s.a,{href:"https://polkadot.js.org/apps/#/explorer",children:"Polkadot-JS UI"}),"."]}),"\n",(0,n.jsx)(s.li,{children:"Navigate to Network > Assets."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Navigate to Assets page",src:t(99776).A+"",width:"1710",height:"554"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Click on the create button and you will be presented with a pop-up window. Choose the creator\naccount, name of the asset to be displayed on the Asset Hub, the asset's symbol, number of\ndecimals for the asset, the minimum balance required to hold this asset on an Asset Hub account\nand the most important field of your asset - the unique asset ID. The UI would not let you enter\nan ID that has already been taken. After all the details are entered, click on the next button."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Add Asset Metadata",src:t(23977).A+"",width:"1510",height:"798"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Choose the admin, issuer and the freezer accounts for your asset and click on the create button."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Asset managing accounts",src:t(59442).A+"",width:"1518",height:"510"})}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Sign and submit the transaction (If you like to verify the transaction details before signing, you\ncan click on the dropdown button pointed by the arrow in the snapshot below)."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Sign asset creating transaction",src:t(80987).A+"",width:"1520",height:"610"})}),"\n",(0,n.jsx)(s.p,{children:"If the transaction is successful, you should see the asset and its details displayed in the\nNetwork > Assets page on the Asset Hub."})]})}function u(e={}){const{wrapper:s}={...(0,a.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,s,t)=>{t.d(s,{A:()=>o});var n=t(96540),a=t(74848);const o=function(e){var s,t=e.message,o=(0,n.useState)(!0),i=o[0],r=o[1];return(0,a.jsx)(a.Fragment,{children:i&&(0,a.jsxs)("div",{className:"message-box",children:[(0,a.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,a.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(s=t,s.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},99776:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-0-71cbceb69c712729d7920b4575ab8f46.png"},23977:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-1-6f406281abdca9f5c2941ebd4d9479fd.png"},59442:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-2-2fd6118841d0c4e037d5f51c6b1010e1.png"},80987:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/hub-asset-3-3952e84a1b7c80239e8fb1f907af2583.png"},28453:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>r});var n=t(96540);const a={},o=n.createContext(a);function i(e){const s=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/fda65b2b.96d1df5f.js b/assets/js/fda65b2b.96d1df5f.js
deleted file mode 100644
index 0bbc5204c95a..000000000000
--- a/assets/js/fda65b2b.96d1df5f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6225],{54276:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>d,toc:()=>l});var n=t(74848),o=t(28453),i=t(67141);const a={id:"learn-guides-asset-conversion",title:"Asset Conversion Tutorials",sidebar_label:"Asset Conversion Tutorials",description:"Asset Conversion implementation details on AssetHub.",keywords:["Assets","DEX","Exchange","Pools","Tokens"],slug:"../learn-guides-asset-conversion"},r=void 0,d={id:"learn/learn-guides-asset-conversion",title:"Asset Conversion Tutorials",description:"Asset Conversion implementation details on AssetHub.",source:"@site/../docs/learn/learn-guides-asset-conversion.md",sourceDirName:"learn",slug:"/learn-guides-asset-conversion",permalink:"/docs/learn-guides-asset-conversion",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-asset-conversion.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729152709e3,frontMatter:{id:"learn-guides-asset-conversion",title:"Asset Conversion Tutorials",sidebar_label:"Asset Conversion Tutorials",description:"Asset Conversion implementation details on AssetHub.",keywords:["Assets","DEX","Exchange","Pools","Tokens"],slug:"../learn-guides-asset-conversion"},sidebar:"docs",previous:{title:"Create Asset Guides",permalink:"/docs/learn-guides-assets-create"},next:{title:"Bridge Hub Guides",permalink:"/docs/learn-guides-bridges"}},c={},l=[{value:"Create a Liquidity Pool",id:"create-a-liquidity-pool",level:2},{value:"Liquidity Provision",id:"liquidity-provision",level:2},{value:"Swap Assets",id:"swap-assets",level:2},{value:"Swap from an exact amount of Tokens",id:"swap-from-an-exact-amount-of-tokens",level:3},{value:"Swap to an exact amount of Tokens",id:"swap-to-an-exact-amount-of-tokens",level:3},{value:"Withdraw Provided Liquidity",id:"withdraw-provided-liquidity",level:2}];function h(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](../general/polkadotjs-ui.md), you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsx)(s.admonition,{title:"Wallet and UI Developers",type:"info",children:(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI"})," project is part of Polkadot initiative\nfor building front-end and UI for Asset Conversion Pallet on Polkadot's Asset Hub. Currently, the\napp is deployed on Westend and Kusama ",(0,n.jsx)(s.a,{href:"https://app.dotacp.mvpworkshop.co/swap",children:"here"}),"."]})}),"\n",(0,n.jsx)(s.p,{children:"The tutorial below demonstrates the complete journey from creating a liquidity pool on Paseo test\nnet and exploring all of the key functionalities of Asset Conversion pallet."}),"\n",(0,n.jsx)(s.h2,{id:"create-a-liquidity-pool",children:"Create a Liquidity Pool"}),"\n",(0,n.jsxs)(s.p,{children:["If there is no existing liquidity pool for an asset on Asset Hub, the first step is to create a\nliquidity pool. If you are looking for a guide on how to create an asset on Asset Hub, it is\navailable ",(0,n.jsx)(s.a,{href:"/docs/learn-guides-assets-create",children:"here."})]}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"create_pool"})," function is used to create an empty liquidity pool along with a new ",(0,n.jsx)(s.code,{children:"lp_token"}),"\nasset. This asset's ID is announced in the ",(0,n.jsx)(s.code,{children:"Event::PoolCreated"})," event. After creating a pool,\nliquidity can be added to it via the ",(0,n.jsx)(s.code,{children:"Pallet::add_liquidity"})," function."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to create liquidity pool with ",(0,n.jsx)(s.code,{children:"PAS"})," tokens and ",(0,n.jsx)(s.code,{children:"EDU"}),"\ntokens with the asset ID ",(0,n.jsx)(s.code,{children:"149"})," on Paseo Asset Hub. Creating this extrinsic requires knowledge of\n",(0,n.jsx)(s.a,{href:"/docs/learn/xcm/fundamentals/multilocation-summary",children:"XCM Multilocations"}),". From the perspective of AssetHub,\nan Asset Hub, the asset with an ",(0,n.jsx)(s.code,{children:"AssetId"})," of ",(0,n.jsx)(s.code,{children:"149"})," has a MultiLocation of"]}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{children:"{\n parents: 0,\n interior: {\n X2: [{PalletInstance: 50}, {GeneralIndex: 149}]\n }\n}\n"})}),"\n",(0,n.jsxs)(s.p,{children:["The PalletInstance of ",(0,n.jsx)(s.code,{children:"50"})," represents the Assets pallet on Asset Hub and the ",(0,n.jsx)(s.code,{children:"GeneralIndex"})," is the\n",(0,n.jsx)(s.code,{children:"AssetId"})," of the asset."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Create Liquidity Pool",src:t(67780).A+"",width:"2870",height:"2186"})}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"lp_token"})," ID created for this pool is ",(0,n.jsx)(s.code,{children:"24"}),", and\n",(0,n.jsx)(s.a,{href:"https://assethub-rococo.subscan.io/extrinsic/4604922-2?event=4604922-8",children:"here"})," is the event for\nreference."]}),"\n",(0,n.jsx)(s.h2,{id:"liquidity-provision",children:"Liquidity Provision"}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"add_liquidity"})," function allows users to provide liquidity to a pool composed of two assets. It\nrequires specifying the desired amounts for both assets and minimum acceptable amounts. The function\ncalculates an optimal contribution of assets, which may differ from the desired amounts but will not\nbe less than the specified minimums. Liquidity providers receive liquidity tokens representing their\nshare of the pool."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to provide liquidity to the pool with ",(0,n.jsx)(s.code,{children:"PAS"})," tokens and\n",(0,n.jsx)(s.code,{children:"EDU"})," tokens with the asset ID ",(0,n.jsx)(s.code,{children:"149"})," on Paseo Asset Hub. The intention is to provide liquidity of 1\n",(0,n.jsx)(s.code,{children:"PAS"})," token (",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"1000000000000"})," as it has 12 decimals) and 100 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens (",(0,n.jsx)(s.code,{children:"u128"}),"\nvalue of ",(0,n.jsx)(s.code,{children:"1000000000000"})," as it has 10 decimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Provide Liquidity",src:t(17097).A+"",width:"2860",height:"2992"})}),"\n",(0,n.jsxs)(s.p,{children:["After successful submission of the extrinsic above, LP tokens are minted to the specified account.\nBelow is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Liquidity Pool Example",src:t(76705).A+"",width:"2595",height:"1296"})}),"\n",(0,n.jsx)(s.h2,{id:"swap-assets",children:"Swap Assets"}),"\n",(0,n.jsx)(s.h3,{id:"swap-from-an-exact-amount-of-tokens",children:"Swap from an exact amount of Tokens"}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"swap_exact_tokens_for_tokens"})," function allows users to swap a precise amount of one asset for\nanother within a specified liquidity pool, ensuring the user receives at least a minimum expected\namount of the second asset in return. This function aims to provide predictability in trading\noutcomes, allowing users to manage their asset exchanges with confidence regarding the minimum\nreturn."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to swap ",(0,n.jsx)(s.code,{children:"PAS"})," tokens to ",(0,n.jsx)(s.code,{children:"EDU"})," tokens with the asset ID\n",(0,n.jsx)(s.code,{children:"149"})," on Paseo Asset Hub. The intention is to swap 0.1 ",(0,n.jsx)(s.code,{children:"PAS"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"100000000000"}),"\nas it has 12 decimals) to at least 9 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"90000000000"})," as it has 10\ndecimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap Exact Amount",src:t(38224).A+"",width:"2844",height:"3016"})}),"\n",(0,n.jsxs)(s.p,{children:["Below is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})," after successful submission of the\nextrinsic above. It can be observed that the pool now has 1.1 ",(0,n.jsx)(s.code,{children:"ROC"})," tokens and around 9.06 ",(0,n.jsx)(s.code,{children:"EDU"}),"\ntokens are transferred out of it."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap Exact Amount Example",src:t(3412).A+"",width:"2746",height:"1140"})}),"\n",(0,n.jsx)(s.h3,{id:"swap-to-an-exact-amount-of-tokens",children:"Swap to an exact amount of Tokens"}),"\n",(0,n.jsxs)(s.p,{children:["On the other hand, the ",(0,n.jsx)(s.code,{children:"swap_tokens_for_exact_tokens"})," function allows users to trade a flexible\namount of one asset to precisely obtain a specified amount of another asset. It ensures that users\ndo not spend more than a predetermined maximum amount of the initial asset to acquire the exact\ntarget amount of the second asset, providing a way to control the cost of the transaction while\nachieving the desired outcome."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to swap ",(0,n.jsx)(s.code,{children:"EDU"})," tokens with the asset ID ",(0,n.jsx)(s.code,{children:"149"})," on Paseo\nAsset Hub to ",(0,n.jsx)(s.code,{children:"PAS"})," Tokens. The intention is to swap for obtaining 0.1 ",(0,n.jsx)(s.code,{children:"PAS"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of\n",(0,n.jsx)(s.code,{children:"100000000000"})," as it has 12 decimals) for a maximum of 10 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of\n",(0,n.jsx)(s.code,{children:"100000000000"})," as it has 10 decimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap Exact Amount",src:t(48109).A+"",width:"2860",height:"3006"})}),"\n",(0,n.jsxs)(s.p,{children:["Below is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})," after successful submission of the\nextrinsic above."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap to Exact Amount Example",src:t(82545).A+"",width:"2627",height:"1294"})}),"\n",(0,n.jsx)(s.h2,{id:"withdraw-provided-liquidity",children:"Withdraw Provided Liquidity"}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"remove_liquidity"})," function allows users to withdraw their provided liquidity from a pool,\nreceiving back the original assets. When calling this function, users specify the amount of\nliquidity tokens (representing their share in the pool) they wish to burn. They also set minimum\nacceptable amounts for the assets they expect to receive back. This mechanism ensures users can\ncontrol the minimum value they receive, protecting against unfavourable price movements during the\nwithdrawal process\u200b."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to remove liquidity by specifying the number of LP tokens.\nIn exchange of removing around half of the liquidity of the pool, the expecation is that we receive\nat least 0.4 ",(0,n.jsx)(s.code,{children:"ROC"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of",(0,n.jsx)(s.code,{children:"400000000000"})," as it has 12 decimals) and 40 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens\n(",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"400000000000"})," as it has 10 decimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Remove Liquidity",src:t(37340).A+"",width:"2832",height:"2870"})}),"\n",(0,n.jsxs)(s.p,{children:["Below is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})," after successful submission of the\nextrinsic above."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Remove Liquidity Example",src:t(43745).A+"",width:"2585",height:"1309"})})]})}function u(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,s,t)=>{t.d(s,{A:()=>i});var n=t(96540),o=t(74848);const i=function(e){var s,t=e.message,i=(0,n.useState)(!0),a=i[0],r=i[1];return(0,o.jsx)(o.Fragment,{children:a&&(0,o.jsxs)("div",{className:"message-box",children:[(0,o.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,o.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(s=t,s.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},17097:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Add-Liquidity-e880d907645db19dc0ee4b8b9fdb9ad3.png"},67780:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Create-Pool-8945e1790f183ac14a4f1185763ea5a0.png"},76705:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Liquidity-Pool-Example-ae441ec1a55827fd488ecef3b8510681.png"},43745:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Remove-Liquidity-Example-bfdc3a0b327bd592c2abcf4cfb9b1755.png"},37340:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Remove-Liquidity-7fc348a12802b40bf643683bd14c5a3b.png"},38224:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-Exact-Token-a56d6a02ba2bf1a2620bc7f3955aa658.png"},3412:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-Exact-Tokens-Example-60790c60e4a0315e59834c0c5421b0f9.png"},82545:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-To-Exact-Example-9be51ed786d418f553b1eeb0ae866cb0.png"},48109:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-To-Exact-Tokens-ae5e1b66b2a80208b329a48af5ab8472.png"},28453:(e,s,t)=>{t.d(s,{R:()=>a,x:()=>r});var n=t(96540);const o={},i=n.createContext(o);function a(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(i.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/fda65b2b.da8be3da.js b/assets/js/fda65b2b.da8be3da.js
new file mode 100644
index 000000000000..00a112198e13
--- /dev/null
+++ b/assets/js/fda65b2b.da8be3da.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6225],{54276:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>d,toc:()=>l});var n=t(74848),o=t(28453),i=t(67141);const a={id:"learn-guides-asset-conversion",title:"Asset Conversion Tutorials",sidebar_label:"Asset Conversion Tutorials",description:"Asset Conversion implementation details on AssetHub.",keywords:["Assets","DEX","Exchange","Pools","Tokens"],slug:"../learn-guides-asset-conversion"},r=void 0,d={id:"learn/learn-guides-asset-conversion",title:"Asset Conversion Tutorials",description:"Asset Conversion implementation details on AssetHub.",source:"@site/../docs/learn/learn-guides-asset-conversion.md",sourceDirName:"learn",slug:"/learn-guides-asset-conversion",permalink:"/docs/learn-guides-asset-conversion",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-asset-conversion.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729847256e3,frontMatter:{id:"learn-guides-asset-conversion",title:"Asset Conversion Tutorials",sidebar_label:"Asset Conversion Tutorials",description:"Asset Conversion implementation details on AssetHub.",keywords:["Assets","DEX","Exchange","Pools","Tokens"],slug:"../learn-guides-asset-conversion"},sidebar:"docs",previous:{title:"Create Asset Guides",permalink:"/docs/learn-guides-assets-create"},next:{title:"Bridge Hub Guides",permalink:"/docs/learn-guides-bridges"}},c={},l=[{value:"Create a Liquidity Pool",id:"create-a-liquidity-pool",level:2},{value:"Liquidity Provision",id:"liquidity-provision",level:2},{value:"Swap Assets",id:"swap-assets",level:2},{value:"Swap from an exact amount of Tokens",id:"swap-from-an-exact-amount-of-tokens",level:3},{value:"Swap to an exact amount of Tokens",id:"swap-to-an-exact-amount-of-tokens",level:3},{value:"Withdraw Provided Liquidity",id:"withdraw-provided-liquidity",level:2}];function h(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{message:"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you can contact the\n[Polkadot Support Team](https://support.polkadot.network/support/home). For more user-friendly tools\nsee the [wallets](./wallets-index), [apps](./apps-index) and [dashboard](./dashboards-index) pages."}),"\n",(0,n.jsx)(s.admonition,{title:"Wallet and UI Developers",type:"info",children:(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI"})," project is part of Polkadot initiative\nfor building front-end and UI for Asset Conversion Pallet on Polkadot's Asset Hub. Currently, the\napp is deployed on Westend and Kusama ",(0,n.jsx)(s.a,{href:"https://app.dotacp.mvpworkshop.co/swap",children:"here"}),"."]})}),"\n",(0,n.jsx)(s.p,{children:"The tutorial below demonstrates the complete journey from creating a liquidity pool on Paseo test\nnet and exploring all of the key functionalities of Asset Conversion pallet."}),"\n",(0,n.jsx)(s.h2,{id:"create-a-liquidity-pool",children:"Create a Liquidity Pool"}),"\n",(0,n.jsxs)(s.p,{children:["If there is no existing liquidity pool for an asset on Asset Hub, the first step is to create a\nliquidity pool. If you are looking for a guide on how to create an asset on Asset Hub, it is\navailable ",(0,n.jsx)(s.a,{href:"/docs/learn-guides-assets-create",children:"here."})]}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"create_pool"})," function is used to create an empty liquidity pool along with a new ",(0,n.jsx)(s.code,{children:"lp_token"}),"\nasset. This asset's ID is announced in the ",(0,n.jsx)(s.code,{children:"Event::PoolCreated"})," event. After creating a pool,\nliquidity can be added to it via the ",(0,n.jsx)(s.code,{children:"Pallet::add_liquidity"})," function."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to create liquidity pool with ",(0,n.jsx)(s.code,{children:"PAS"})," tokens and ",(0,n.jsx)(s.code,{children:"EDU"}),"\ntokens with the asset ID ",(0,n.jsx)(s.code,{children:"149"})," on Paseo Asset Hub. Creating this extrinsic requires knowledge of\n",(0,n.jsx)(s.a,{href:"/docs/learn/xcm/fundamentals/multilocation-summary",children:"XCM Multilocations"}),". From the perspective of AssetHub,\nan Asset Hub, the asset with an ",(0,n.jsx)(s.code,{children:"AssetId"})," of ",(0,n.jsx)(s.code,{children:"149"})," has a MultiLocation of"]}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{children:"{\n parents: 0,\n interior: {\n X2: [{PalletInstance: 50}, {GeneralIndex: 149}]\n }\n}\n"})}),"\n",(0,n.jsxs)(s.p,{children:["The PalletInstance of ",(0,n.jsx)(s.code,{children:"50"})," represents the Assets pallet on Asset Hub and the ",(0,n.jsx)(s.code,{children:"GeneralIndex"})," is the\n",(0,n.jsx)(s.code,{children:"AssetId"})," of the asset."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Create Liquidity Pool",src:t(67780).A+"",width:"2870",height:"2186"})}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"lp_token"})," ID created for this pool is ",(0,n.jsx)(s.code,{children:"24"}),", and\n",(0,n.jsx)(s.a,{href:"https://assethub-rococo.subscan.io/extrinsic/4604922-2?event=4604922-8",children:"here"})," is the event for\nreference."]}),"\n",(0,n.jsx)(s.h2,{id:"liquidity-provision",children:"Liquidity Provision"}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"add_liquidity"})," function allows users to provide liquidity to a pool composed of two assets. It\nrequires specifying the desired amounts for both assets and minimum acceptable amounts. The function\ncalculates an optimal contribution of assets, which may differ from the desired amounts but will not\nbe less than the specified minimums. Liquidity providers receive liquidity tokens representing their\nshare of the pool."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to provide liquidity to the pool with ",(0,n.jsx)(s.code,{children:"PAS"})," tokens and\n",(0,n.jsx)(s.code,{children:"EDU"})," tokens with the asset ID ",(0,n.jsx)(s.code,{children:"149"})," on Paseo Asset Hub. The intention is to provide liquidity of 1\n",(0,n.jsx)(s.code,{children:"PAS"})," token (",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"1000000000000"})," as it has 12 decimals) and 100 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens (",(0,n.jsx)(s.code,{children:"u128"}),"\nvalue of ",(0,n.jsx)(s.code,{children:"1000000000000"})," as it has 10 decimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Provide Liquidity",src:t(17097).A+"",width:"2860",height:"2992"})}),"\n",(0,n.jsxs)(s.p,{children:["After successful submission of the extrinsic above, LP tokens are minted to the specified account.\nBelow is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Liquidity Pool Example",src:t(76705).A+"",width:"2595",height:"1296"})}),"\n",(0,n.jsx)(s.h2,{id:"swap-assets",children:"Swap Assets"}),"\n",(0,n.jsx)(s.h3,{id:"swap-from-an-exact-amount-of-tokens",children:"Swap from an exact amount of Tokens"}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"swap_exact_tokens_for_tokens"})," function allows users to swap a precise amount of one asset for\nanother within a specified liquidity pool, ensuring the user receives at least a minimum expected\namount of the second asset in return. This function aims to provide predictability in trading\noutcomes, allowing users to manage their asset exchanges with confidence regarding the minimum\nreturn."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to swap ",(0,n.jsx)(s.code,{children:"PAS"})," tokens to ",(0,n.jsx)(s.code,{children:"EDU"})," tokens with the asset ID\n",(0,n.jsx)(s.code,{children:"149"})," on Paseo Asset Hub. The intention is to swap 0.1 ",(0,n.jsx)(s.code,{children:"PAS"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"100000000000"}),"\nas it has 12 decimals) to at least 9 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"90000000000"})," as it has 10\ndecimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap Exact Amount",src:t(38224).A+"",width:"2844",height:"3016"})}),"\n",(0,n.jsxs)(s.p,{children:["Below is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})," after successful submission of the\nextrinsic above. It can be observed that the pool now has 1.1 ",(0,n.jsx)(s.code,{children:"ROC"})," tokens and around 9.06 ",(0,n.jsx)(s.code,{children:"EDU"}),"\ntokens are transferred out of it."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap Exact Amount Example",src:t(3412).A+"",width:"2746",height:"1140"})}),"\n",(0,n.jsx)(s.h3,{id:"swap-to-an-exact-amount-of-tokens",children:"Swap to an exact amount of Tokens"}),"\n",(0,n.jsxs)(s.p,{children:["On the other hand, the ",(0,n.jsx)(s.code,{children:"swap_tokens_for_exact_tokens"})," function allows users to trade a flexible\namount of one asset to precisely obtain a specified amount of another asset. It ensures that users\ndo not spend more than a predetermined maximum amount of the initial asset to acquire the exact\ntarget amount of the second asset, providing a way to control the cost of the transaction while\nachieving the desired outcome."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to swap ",(0,n.jsx)(s.code,{children:"EDU"})," tokens with the asset ID ",(0,n.jsx)(s.code,{children:"149"})," on Paseo\nAsset Hub to ",(0,n.jsx)(s.code,{children:"PAS"})," Tokens. The intention is to swap for obtaining 0.1 ",(0,n.jsx)(s.code,{children:"PAS"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of\n",(0,n.jsx)(s.code,{children:"100000000000"})," as it has 12 decimals) for a maximum of 10 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of\n",(0,n.jsx)(s.code,{children:"100000000000"})," as it has 10 decimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap Exact Amount",src:t(48109).A+"",width:"2860",height:"3006"})}),"\n",(0,n.jsxs)(s.p,{children:["Below is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})," after successful submission of the\nextrinsic above."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Swap to Exact Amount Example",src:t(82545).A+"",width:"2627",height:"1294"})}),"\n",(0,n.jsx)(s.h2,{id:"withdraw-provided-liquidity",children:"Withdraw Provided Liquidity"}),"\n",(0,n.jsxs)(s.p,{children:["The ",(0,n.jsx)(s.code,{children:"remove_liquidity"})," function allows users to withdraw their provided liquidity from a pool,\nreceiving back the original assets. When calling this function, users specify the amount of\nliquidity tokens (representing their share in the pool) they wish to burn. They also set minimum\nacceptable amounts for the assets they expect to receive back. This mechanism ensures users can\ncontrol the minimum value they receive, protecting against unfavourable price movements during the\nwithdrawal process\u200b."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, the snapshot below shows how to remove liquidity by specifying the number of LP tokens.\nIn exchange of removing around half of the liquidity of the pool, the expecation is that we receive\nat least 0.4 ",(0,n.jsx)(s.code,{children:"ROC"})," tokens (",(0,n.jsx)(s.code,{children:"u128"})," value of",(0,n.jsx)(s.code,{children:"400000000000"})," as it has 12 decimals) and 40 ",(0,n.jsx)(s.code,{children:"EDU"})," tokens\n(",(0,n.jsx)(s.code,{children:"u128"})," value of ",(0,n.jsx)(s.code,{children:"400000000000"})," as it has 10 decimals)."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Remove Liquidity",src:t(37340).A+"",width:"2832",height:"2870"})}),"\n",(0,n.jsxs)(s.p,{children:["Below is the snapshot of the liquidity pool on the\n",(0,n.jsx)(s.a,{href:"https://github.com/MVPWorkshop/dot-acp-ui",children:"DOT ACP UI."})," after successful submission of the\nextrinsic above."]}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Remove Liquidity Example",src:t(43745).A+"",width:"2585",height:"1309"})})]})}function u(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},67141:(e,s,t)=>{t.d(s,{A:()=>i});var n=t(96540),o=t(74848);const i=function(e){var s,t=e.message,i=(0,n.useState)(!0),a=i[0],r=i[1];return(0,o.jsx)(o.Fragment,{children:a&&(0,o.jsxs)("div",{className:"message-box",children:[(0,o.jsx)("button",{className:"close-button",onClick:function(){r(!1)},children:"\u2716 "}),(0,o.jsx)("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(s=t,s.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})]})})}},17097:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Add-Liquidity-e880d907645db19dc0ee4b8b9fdb9ad3.png"},67780:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Create-Pool-8945e1790f183ac14a4f1185763ea5a0.png"},76705:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Liquidity-Pool-Example-ae441ec1a55827fd488ecef3b8510681.png"},43745:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Remove-Liquidity-Example-bfdc3a0b327bd592c2abcf4cfb9b1755.png"},37340:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Remove-Liquidity-7fc348a12802b40bf643683bd14c5a3b.png"},38224:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-Exact-Token-a56d6a02ba2bf1a2620bc7f3955aa658.png"},3412:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-Exact-Tokens-Example-60790c60e4a0315e59834c0c5421b0f9.png"},82545:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-To-Exact-Example-9be51ed786d418f553b1eeb0ae866cb0.png"},48109:(e,s,t)=>{t.d(s,{A:()=>n});const n=t.p+"assets/images/Asset-Conversion-Swap-To-Exact-Tokens-ae5e1b66b2a80208b329a48af5ab8472.png"},28453:(e,s,t)=>{t.d(s,{R:()=>a,x:()=>r});var n=t(96540);const o={},i=n.createContext(o);function a(e){const s=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(i.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/main.aab4296e.js b/assets/js/main.a0fae12a.js
similarity index 99%
rename from assets/js/main.aab4296e.js
rename to assets/js/main.a0fae12a.js
index 9131ebc901ab..fde690a5bc27 100644
--- a/assets/js/main.aab4296e.js
+++ b/assets/js/main.a0fae12a.js
@@ -1,2 +1,2 @@
-/*! For license information please see main.aab4296e.js.LICENSE.txt */
-(self.webpackChunk=self.webpackChunk||[]).push([[8792],{55600:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>b,E8:()=>Un,a1:()=>zn});var r=n(96540);n(40961);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;tYour Docusaurus site did not load properly.
\nA very common reason is a wrong site baseUrl configuration.
\nCurrent configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'
\nWe suggest trying baseUrl =
\n\n'}(e)).replace(/{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(96540),a=n(85290);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"general/getting-started","docs":[{"id":"build/build-client-side","path":"/docs/build-client-side","sidebar":"docs"},{"id":"build/build-dapp","path":"/docs/build-dapp"},{"id":"build/build-data","path":"/docs/build-data","sidebar":"docs"},{"id":"build/build-guide","path":"/docs/build-guide","sidebar":"docs"},{"id":"build/build-guides-coretime-start","path":"/docs/build-guides-coretime-start","sidebar":"docs"},{"id":"build/build-guides-coretime-troubleshoot","path":"/docs/build-guides-coretime-troubleshoot","sidebar":"docs"},{"id":"build/build-guides-install-deps","path":"/docs/build-guides-install-deps","sidebar":"docs"},{"id":"build/build-guides-template-basic","path":"/docs/build-guides-template-basic","sidebar":"docs"},{"id":"build/build-hackathon","path":"/docs/build-hackathon","sidebar":"docs"},{"id":"build/build-hrmp-channels","path":"/docs/build-hrmp-channels","sidebar":"docs"},{"id":"build/build-index","path":"/docs/build-index"},{"id":"build/build-integrate-assets","path":"/docs/build-integrate-assets","sidebar":"docs"},{"id":"build/build-integration","path":"/docs/build-integration","sidebar":"docs"},{"id":"build/build-light-clients","path":"/docs/build-light-clients","sidebar":"docs"},{"id":"build/build-network-overview","path":"/docs/build-network-overview","sidebar":"docs"},{"id":"build/build-node-interaction","path":"/docs/build-node-interaction","sidebar":"docs"},{"id":"build/build-node-management","path":"/docs/build-node-management","sidebar":"docs"},{"id":"build/build-open-source","path":"/docs/build-open-source","sidebar":"docs"},{"id":"build/build-oracle","path":"/docs/build-oracle"},{"id":"build/build-parachains","path":"/docs/build-pdk","sidebar":"docs"},{"id":"build/build-protocol-info","path":"/docs/build-protocol-info","sidebar":"docs"},{"id":"build/build-smart-contracts","path":"/docs/build-smart-contracts","sidebar":"docs"},{"id":"build/build-storage","path":"/docs/build-storage"},{"id":"build/build-tools-index","path":"/docs/build-tools-index","sidebar":"docs"},{"id":"build/build-transaction-construction","path":"/docs/build-transaction-construction","sidebar":"docs"},{"id":"general/alpha-program","path":"/docs/alpha-program","sidebar":"docs"},{"id":"general/ambassadors","path":"/docs/ambassadors","sidebar":"docs"},{"id":"general/bug-bounty","path":"/docs/bug-bounty","sidebar":"docs"},{"id":"general/chain-state-values","path":"/docs/chain-state-values","sidebar":"docs"},{"id":"general/community","path":"/docs/community","sidebar":"docs"},{"id":"general/contributing","path":"/docs/contributing","sidebar":"docs"},{"id":"general/contributors","path":"/docs/contributors","sidebar":"docs"},{"id":"general/decentralized-futures","path":"/docs/decentralized-futures","sidebar":"docs"},{"id":"general/decentralized-voices","path":"/docs/decentralized-voices","sidebar":"docs"},{"id":"general/dev-heroes","path":"/docs/dev-heroes","sidebar":"docs"},{"id":"general/doc-thousand-contributors","path":"/docs/thousand-contributors","sidebar":"docs"},{"id":"general/doc-thousand-validators","path":"/docs/thousand-validators","sidebar":"docs"},{"id":"general/dune-analytics/dunesql-cheatsheet","path":"/docs/general/dunesql-cheatsheet","sidebar":"docs"},{"id":"general/dune-analytics/onboarding-status-and-key-dashboards","path":"/docs/general/onboarding-status-and-key-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/acala-dashboards","path":"/docs/general/dune-analytics/acala-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/assethub-dashboards","path":"/docs/general/dune-analytics/assethub-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/astar-dashboards","path":"/docs/general/dune-analytics/astar-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/bifrost-dashboards","path":"/docs/general/dune-analytics/bifrost-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/bridgehub-dashboards","path":"/docs/general/dune-analytics/bridgehub-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/centrifuge-dashboards","path":"/docs/general/dune-analytics/centrifuge-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/collectives-dashboards","path":"/docs/general/dune-analytics/collectives-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/coretime-dashboards","path":"/docs/general/dune-analytics/coretime-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/energywebx-dashboards","path":"/docs/general/dune-analytics/energywebx-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/frequency-dashboards","path":"/docs/general/dune-analytics/frequency-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/hydration-dashboards","path":"/docs/general/dune-analytics/hydration-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/interlay-dashboards","path":"/docs/general/dune-analytics/interlay-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/invarch-dashboards","path":"/docs/general/dune-analytics/invarch-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/litentry-dashboards","path":"/docs/general/dune-analytics/litentry-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/manta-dashboards","path":"/docs/general/dune-analytics/manta-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/moonbeam-dashboards","path":"/docs/general/dune-analytics/moonbeam-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/neuroweb-dashboards","path":"/docs/general/dune-analytics/neuroweb-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/nodle-dashboards","path":"/docs/general/dune-analytics/nodle-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/pendulum-dashboards","path":"/docs/general/dune-analytics/pendulum-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/people-dashboards","path":"/docs/general/dune-analytics/people-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/phala-dashboards","path":"/docs/general/dune-analytics/phala-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/polimec-dashboards","path":"/docs/general/dune-analytics/polimec-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/polkadex-dashboards","path":"/docs/general/dune-analytics/polkadex-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/snowbridge-dashboards","path":"/docs/general/dune-analytics/snowbridge-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/stellaswap-dashboards","path":"/docs/general/dune-analytics/stellaswap-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards/unique-dashboards","path":"/docs/general/dune-analytics/unique-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-dot-ordinals","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-governance-dashboard","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referenda-home","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referendum-voting-analysis","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nomination-pool","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nominators","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-pool-member","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-validators","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-governance","path":"/docs/general/dune-analytics/polkadot-dashboards-governance","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-network","path":"/docs/general/dune-analytics/polkadot-dashboards-network","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-overview","path":"/docs/general/dune-analytics/polkadot-dashboards-overview","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-staking","path":"/docs/general/dune-analytics/polkadot-dashboards-staking","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-ecosystem-overview","path":"/docs/general/polkadot-ecosystem-overview","sidebar":"docs"},{"id":"general/dune-analytics/project-dashboards","path":"/docs/general/project-dashboards","sidebar":"docs"},{"id":"general/ecosystem-funds","path":"/docs/ecosystem-funds","sidebar":"docs"},{"id":"general/faq","path":"/docs/faq","sidebar":"docs"},{"id":"general/funding","path":"/docs/funding","sidebar":"docs"},{"id":"general/getting-started","path":"/docs/getting-started","sidebar":"docs"},{"id":"general/glossary","path":"/docs/glossary","sidebar":"docs"},{"id":"general/governance-apps","path":"/docs/governance-apps","sidebar":"docs"},{"id":"general/grants","path":"/docs/grants","sidebar":"docs"},{"id":"general/how-to-dyor","path":"/docs/how-to-dyor","sidebar":"docs"},{"id":"general/kusama/kusama-adversarial-cheatsheet","path":"/docs/kusama-adversarial-cheatsheet","sidebar":"docs"},{"id":"general/kusama/kusama-bug-bounty","path":"/docs/kusama-bug-bounty","sidebar":"docs"},{"id":"general/kusama/kusama-coc","path":"/docs/kusama-coc","sidebar":"docs"},{"id":"general/kusama/kusama-getting-started","path":"/docs/kusama-getting-started","sidebar":"docs"},{"id":"general/kusama/kusama-social-recovery","path":"/docs/kusama-social-recovery","sidebar":"docs"},{"id":"general/kusama/kusama-timeline","path":"/docs/kusama-timeline","sidebar":"docs"},{"id":"general/ledger","path":"/docs/ledger","sidebar":"docs"},{"id":"general/metadata","path":"/docs/metadata","sidebar":"docs"},{"id":"general/multisig-apps","path":"/docs/multisig-apps","sidebar":"docs"},{"id":"general/parachains-apps","path":"/docs/parachains-apps","sidebar":"docs"},{"id":"general/parity-data-dashboards","path":"/docs/parity-data-dashboards","sidebar":"docs"},{"id":"general/polkadot-community-foundation","path":"/docs/polkadot-community-foundation","sidebar":"docs"},{"id":"general/polkadot-direction","path":"/docs/polkadot-direction","sidebar":"docs"},{"id":"general/polkadot-v1","path":"/docs/polkadot-v1","sidebar":"docs"},{"id":"general/polkadot-vault","path":"/docs/polkadot-vault","sidebar":"docs"},{"id":"general/polkadotjs","path":"/docs/polkadotjs","sidebar":"docs"},{"id":"general/polkadotjs-ui","path":"/docs/polkadotjs-ui","sidebar":"docs"},{"id":"general/scams","path":"/docs/learn-scams","sidebar":"docs"},{"id":"general/staking-apps","path":"/docs/staking-apps","sidebar":"docs"},{"id":"general/staking-dashboard","path":"/docs/staking-dashboard","sidebar":"docs"},{"id":"general/start-building","path":"/docs/start-building","sidebar":"docs"},{"id":"general/transaction-attacks","path":"/docs/transaction-attacks","sidebar":"docs"},{"id":"general/wallets-and-extensions","path":"/docs/wallets-and-extensions","sidebar":"docs"},{"id":"general/web3-and-polkadot","path":"/docs/web3-and-polkadot","sidebar":"docs"},{"id":"learn/archive/learn-auction","path":"/docs/learn/learn-auction","sidebar":"docs"},{"id":"learn/archive/learn-controller","path":"/docs/learn/learn-controller","sidebar":"docs"},{"id":"learn/archive/learn-crowdloans","path":"/docs/learn/learn-crowdloans","sidebar":"docs"},{"id":"learn/archive/learn-governance","path":"/docs/learn/learn-governance","sidebar":"docs"},{"id":"learn/archive/learn-launch","path":"/docs/learn/learn-launch","sidebar":"docs"},{"id":"learn/archive/learn-redenomination","path":"/docs/learn/learn-redenomination","sidebar":"docs"},{"id":"learn/archive/learn-treasury","path":"/docs/learn/learn-treasury","sidebar":"docs"},{"id":"learn/learn-account-abstraction","path":"/docs/learn-account-abstraction","sidebar":"docs"},{"id":"learn/learn-account-advanced","path":"/docs/learn-account-advanced","sidebar":"docs"},{"id":"learn/learn-account-balances","path":"/docs/learn-account-balances","sidebar":"docs"},{"id":"learn/learn-account-multisig","path":"/docs/learn-account-multisig","sidebar":"docs"},{"id":"learn/learn-accounts","path":"/docs/learn-accounts","sidebar":"docs"},{"id":"learn/learn-agile-coretime","path":"/docs/learn-agile-coretime","sidebar":"docs"},{"id":"learn/learn-architecture","path":"/docs/learn-architecture","sidebar":"docs"},{"id":"learn/learn-archive","path":"/docs/learn-archive","sidebar":"docs"},{"id":"learn/learn-asset-conversion-assethub","path":"/docs/learn-asset-conversion-assethub","sidebar":"docs"},{"id":"learn/learn-assets","path":"/docs/learn-assets","sidebar":"docs"},{"id":"learn/learn-async-backing","path":"/docs/learn-async-backing","sidebar":"docs"},{"id":"learn/learn-bridges","path":"/docs/learn-bridges","sidebar":"docs"},{"id":"learn/learn-collator","path":"/docs/learn-collator","sidebar":"docs"},{"id":"learn/learn-comparisons","path":"/docs/learn-comparisons","sidebar":"docs"},{"id":"learn/learn-comparisons-avalanche","path":"/docs/learn-comparisons-avalanche","sidebar":"docs"},{"id":"learn/learn-comparisons-cosmos","path":"/docs/learn-comparisons-cosmos","sidebar":"docs"},{"id":"learn/learn-comparisons-ethereum-2","path":"/docs/learn-comparisons-ethereum-2","sidebar":"docs"},{"id":"learn/learn-comparisons-kusama","path":"/docs/learn-comparisons-kusama","sidebar":"docs"},{"id":"learn/learn-comparisons-rollups","path":"/docs/learn-comparisons-rollups","sidebar":"docs"},{"id":"learn/learn-consensus","path":"/docs/learn-consensus","sidebar":"docs"},{"id":"learn/learn-cryptography","path":"/docs/learn-cryptography","sidebar":"docs"},{"id":"learn/learn-DOT","path":"/docs/learn-DOT","sidebar":"docs"},{"id":"learn/learn-dot-ksm-bridge","path":"/docs/learn-dot-ksm-bridge","sidebar":"docs"},{"id":"learn/learn-elastic-scaling","path":"/docs/learn-elastic-scaling","sidebar":"docs"},{"id":"learn/learn-guides-accounts","path":"/docs/learn-guides-accounts","sidebar":"docs"},{"id":"learn/learn-guides-accounts-multisig","path":"/docs/learn-guides-accounts-multisig","sidebar":"docs"},{"id":"learn/learn-guides-accounts-proxy","path":"/docs/learn-guides-accounts-proxy","sidebar":"docs"},{"id":"learn/learn-guides-accounts-proxy-pure","path":"/docs/learn-guides-accounts-proxy-pure","sidebar":"docs"},{"id":"learn/learn-guides-asset-conversion","path":"/docs/learn-guides-asset-conversion","sidebar":"docs"},{"id":"learn/learn-guides-assets","path":"/docs/learn-guides-assets","sidebar":"docs"},{"id":"learn/learn-guides-assets-create","path":"/docs/learn-guides-assets-create","sidebar":"docs"},{"id":"learn/learn-guides-bounties","path":"/docs/learn-guides-bounties","sidebar":"docs"},{"id":"learn/learn-guides-bridges","path":"/docs/learn-guides-bridges","sidebar":"docs"},{"id":"learn/learn-guides-claims","path":"/docs/learn-guides-claims","sidebar":"docs"},{"id":"learn/learn-guides-coretime-marketplaces","path":"/docs/learn-guides-coretime-marketplaces","sidebar":"docs"},{"id":"learn/learn-guides-coretime-parachains","path":"/docs/learn-guides-coretime-parachains","sidebar":"docs"},{"id":"learn/learn-guides-coretime-swap","path":"/docs/learn-guides-coretime-swap","sidebar":"docs"},{"id":"learn/learn-guides-dot-ksm-bridge","path":"/docs/learn-guides-dot-ksm-bridge","sidebar":"docs"},{"id":"learn/learn-guides-identity","path":"/docs/learn-guides-identity","sidebar":"docs"},{"id":"learn/learn-guides-ledger","path":"/docs/learn-guides-ledger","sidebar":"docs"},{"id":"learn/learn-guides-nominator","path":"/docs/learn-guides-nominator","sidebar":"docs"},{"id":"learn/learn-guides-polkadot-opengov","path":"/docs/learn-guides-polkadot-opengov","sidebar":"docs"},{"id":"learn/learn-guides-staking","path":"/docs/learn-guides-staking","sidebar":"docs"},{"id":"learn/learn-guides-staking-pools","path":"/docs/learn-guides-staking-pools","sidebar":"docs"},{"id":"learn/learn-guides-transfers","path":"/docs/learn-guides-transfers","sidebar":"docs"},{"id":"learn/learn-guides-treasury","path":"/docs/learn-guides-treasury","sidebar":"docs"},{"id":"learn/learn-guides-vault","path":"/docs/learn-guides-vault","sidebar":"docs"},{"id":"learn/learn-hyperbridge","path":"/docs/learn-hyperbridge","sidebar":"docs"},{"id":"learn/learn-identity","path":"/docs/learn-identity","sidebar":"docs"},{"id":"learn/learn-implementations","path":"/docs/learn-implementations"},{"id":"learn/learn-inflation","path":"/docs/learn-inflation","sidebar":"docs"},{"id":"learn/learn-jam-chain","path":"/docs/learn-jam-chain","sidebar":"docs"},{"id":"learn/learn-jam-faq","path":"/docs/learn-jam-faq","sidebar":"docs"},{"id":"learn/learn-nft","path":"/docs/learn-nft","sidebar":"docs"},{"id":"learn/learn-nft-pallets","path":"/docs/learn-nft-pallets","sidebar":"docs"},{"id":"learn/learn-nft-projects","path":"/docs/learn-nft-projects","sidebar":"docs"},{"id":"learn/learn-nomination-pools","path":"/docs/learn-nomination-pools","sidebar":"docs"},{"id":"learn/learn-nominator","path":"/docs/learn-nominator","sidebar":"docs"},{"id":"learn/learn-offenses","path":"/docs/learn-offenses","sidebar":"docs"},{"id":"learn/learn-parachains","path":"/docs/learn-parachains","sidebar":"docs"},{"id":"learn/learn-parachains-faq","path":"/docs/learn-parachains-faq","sidebar":"docs"},{"id":"learn/learn-parachains-protocol","path":"/docs/learn-parachains-protocol","sidebar":"docs"},{"id":"learn/learn-phragmen","path":"/docs/learn-phragmen","sidebar":"docs"},{"id":"learn/learn-polkadot-host","path":"/docs/learn-polkadot-host","sidebar":"docs"},{"id":"learn/learn-polkadot-js-guides","path":"/docs/learn-polkadot-js-guides","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov","path":"/docs/learn-polkadot-opengov","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov-origins","path":"/docs/learn-polkadot-opengov-origins","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov-treasury","path":"/docs/learn-polkadot-opengov-treasury","sidebar":"docs"},{"id":"learn/learn-polkadot-technical-fellowship","path":"/docs/learn-polkadot-technical-fellowship","sidebar":"docs"},{"id":"learn/learn-polkadotjs","path":"/docs/learn-polkadotjs","sidebar":"docs"},{"id":"learn/learn-proxies","path":"/docs/learn-proxies","sidebar":"docs"},{"id":"learn/learn-proxies-pure","path":"/docs/learn-proxies-pure","sidebar":"docs"},{"id":"learn/learn-runtime-upgrades","path":"/docs/learn-runtime-upgrades","sidebar":"docs"},{"id":"learn/learn-safrole","path":"/docs/learn-safrole","sidebar":"docs"},{"id":"learn/learn-snowbridge","path":"/docs/learn-snowbridge","sidebar":"docs"},{"id":"learn/learn-spree","path":"/docs/learn-spree","sidebar":"docs"},{"id":"learn/learn-staking","path":"/docs/learn-staking","sidebar":"docs"},{"id":"learn/learn-staking-advanced","path":"/docs/learn-staking-advanced","sidebar":"docs"},{"id":"learn/learn-system-chains","path":"/docs/learn-system-chains","sidebar":"docs"},{"id":"learn/learn-teleport","path":"/docs/learn-teleport","sidebar":"docs"},{"id":"learn/learn-transactions","path":"/docs/learn-transactions","sidebar":"docs"},{"id":"learn/learn-validator","path":"/docs/learn-validator","sidebar":"docs"},{"id":"learn/learn-video-tutorials","path":"/docs/learn-video-tutorials","sidebar":"docs"},{"id":"learn/learn-wasm","path":"/docs/learn-wasm","sidebar":"docs"},{"id":"learn/learn-xcm","path":"/docs/learn-xcm","sidebar":"docs"},{"id":"learn/learn-xcm-instructions","path":"/docs/learn-xcm-instructions","sidebar":"docs"},{"id":"learn/learn-xcm-pallet","path":"/docs/learn-xcm-pallet","sidebar":"docs"},{"id":"learn/learn-xcm-transport","path":"/docs/learn-xcm-transport","sidebar":"docs"},{"id":"learn/learn-xcm-usecases","path":"/docs/learn-xcm-usecases","sidebar":"docs"},{"id":"learn/learn-xcvm","path":"/docs/learn-xcvm","sidebar":"docs"},{"id":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive","path":"/docs/learn/xcm/config-deep-dive","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees","path":"/docs/learn/xcm/fundamentals-fees","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset","path":"/docs/learn/xcm/fundamentals-multiasset","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary","path":"/docs/learn/xcm/fundamentals-summary","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm","path":"/docs/learn/xcm/fundamentals-xcvm","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example","path":"/docs/learn/xcm/fundamentals/multilocation-example","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions","path":"/docs/learn/xcm/fundamentals/multilocation-junctions","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary","path":"/docs/learn/xcm/fundamentals/multilocation-summary","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-assets","path":"/docs/learn/xcm/journey-assets","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-channels","path":"/docs/learn/xcm/journey-channels","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-expectations","path":"/docs/learn/xcm/journey-expectations","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-fees","path":"/docs/learn/xcm/journey-fees","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-holding","path":"/docs/learn/xcm/journey-holding","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-origin","path":"/docs/learn/xcm/journey-origin","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-queries","path":"/docs/learn/xcm/journey-queries","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-register","path":"/docs/learn/xcm/journey-register","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-summary","path":"/docs/learn/xcm/journey-summary","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-transact","path":"/docs/learn/xcm/journey-transact","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-version","path":"/docs/learn/xcm/journey-version","sidebar":"docs"},{"id":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks","path":"/docs/learn/xcm/journey-locks","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve","path":"/docs/learn/xcm/journey/transfers-reserve","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary","path":"/docs/learn/xcm/journey/transfers-summary","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport","path":"/docs/learn/xcm/journey/transfers-teleport","sidebar":"docs"},{"id":"learn/xcm/learn-xcm-docs-intro","path":"/docs/learn/xcm/introduction","sidebar":"docs"},{"id":"learn/xcm/learn-xcm-docs-testing","path":"/docs/learn/xcm/testing","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-architecture","path":"/docs/learn/xcm/overview-architecture","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-format","path":"/docs/learn/xcm/overview-format","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-intro","path":"/docs/learn/xcm/overview-intro","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-summary","path":"/docs/learn/xcm/overview-summary","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-xcvm","path":"/docs/learn/xcm/overview-xcvm","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look","path":"/docs/learn/xcm/quickstart-first-look","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator","path":"/docs/learn/xcm/quickstart-simulator","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary","path":"/docs/learn/xcm/quickstart-summary","sidebar":"docs"},{"id":"learn/xcm/reference/learn-xcm-docs-reference-glossary","path":"/docs/learn/xcm/reference-glossary","sidebar":"docs"},{"id":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers","path":"/docs/learn/xcm/reference-xcvm-registers","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-democracy","path":"/docs/maintain/maintain-guides-democracy","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-how-to-join-council","path":"/docs/maintain/maintain-guides-how-to-join-council","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-how-to-vote-councillor","path":"/docs/maintain/maintain-guides-how-to-vote-councillor","sidebar":"docs"},{"id":"maintain/doc-maintain-guides-validator-community","path":"/docs/maintain-guides-validator-community","sidebar":"docs"},{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","path":"/docs/maintain-guides-how-to-validate-kusama","sidebar":"docs"},{"id":"maintain/kusama/maintain-guides-society-kusama","path":"/docs/maintain-guides-society-kusama","sidebar":"docs"},{"id":"maintain/maintain-archive","path":"/docs/maintain-archive","sidebar":"docs"},{"id":"maintain/maintain-bootnode","path":"/docs/maintain-bootnode","sidebar":"docs"},{"id":"maintain/maintain-endpoints","path":"/docs/maintain-endpoints","sidebar":"docs"},{"id":"maintain/maintain-errors","path":"/docs/maintain-errors","sidebar":"docs"},{"id":"maintain/maintain-guides-async-backing","path":"/docs/maintain-guides-async-backing","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-chill","path":"/docs/maintain-guides-how-to-chill","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-monitor-your-node","path":"/docs/maintain-guides-how-to-monitor-your-node","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-stop-validating","path":"/docs/maintain-guides-how-to-stop-validating","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-systemd","path":"/docs/maintain-guides-how-to-systemd","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-upgrade","path":"/docs/maintain-guides-how-to-upgrade","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-validate-polkadot","path":"/docs/maintain-guides-how-to-validate-polkadot","sidebar":"docs"},{"id":"maintain/maintain-guides-secure-validator","path":"/docs/maintain-guides-secure-validator","sidebar":"docs"},{"id":"maintain/maintain-guides-validator-payout","path":"/docs/maintain-guides-validator-payout","sidebar":"docs"},{"id":"maintain/maintain-index","path":"/docs/maintain-index","sidebar":"docs"},{"id":"maintain/maintain-networks","path":"/docs/maintain-networks","sidebar":"docs"},{"id":"maintain/maintain-polkadot-parameters","path":"/docs/maintain-polkadot-parameters","sidebar":"docs"},{"id":"maintain/maintain-rpc","path":"/docs/maintain-rpc","sidebar":"docs"},{"id":"maintain/maintain-sync","path":"/docs/maintain-sync","sidebar":"docs"},{"id":"maintain/maintain-wss","path":"/docs/maintain-wss","sidebar":"docs"},{"id":"/explore-index","path":"/docs/explore-index","sidebar":"docs"},{"id":"/wallets-index","path":"/docs/wallets-index","sidebar":"docs"},{"id":"/apps-index","path":"/docs/apps-index","sidebar":"docs"},{"id":"/dashboards-index","path":"/docs/dashboards-index","sidebar":"docs"},{"id":"general/dune-analytics","path":"/docs/general/dune-analytics","sidebar":"docs"},{"id":"general/dune-analytics/polkadot-dashboards","path":"/docs/general/dune-analytics/polkadot-dashboards","sidebar":"docs"},{"id":"general/dune-analytics/parachain-dashboards","path":"/docs/general/dune-analytics/parachain-dashboards","sidebar":"docs"},{"id":"/community-index","path":"/docs/community-index","sidebar":"docs"},{"id":"/programs-index","path":"/docs/programs-index","sidebar":"docs"},{"id":"/learn-index","path":"/docs/learn-index","sidebar":"docs"},{"id":"/general-index","path":"/docs/general-index","sidebar":"docs"},{"id":"/polkadot-vision-index","path":"/docs/polkadot-vision-index","sidebar":"docs"},{"id":"/stay-safe-index","path":"/docs/stay-safe-index","sidebar":"docs"},{"id":"/learn-basics-index","path":"/docs/learn-basics-index","sidebar":"docs"},{"id":"/learn-staking-index","path":"/docs/learn-staking-index","sidebar":"docs"},{"id":"/learn-polkadot-opengov-index","path":"/docs/learn-polkadot-opengov-index","sidebar":"docs"},{"id":"/learn-assets-index","path":"/docs/learn-assets-index","sidebar":"docs"},{"id":"/learn-participants-index","path":"/docs/learn-participants-index","sidebar":"docs"},{"id":"/learn-components-index","path":"/docs/learn-components-index","sidebar":"docs"},{"id":"/learn-advanced-index","path":"/docs/learn-advanced-index","sidebar":"docs"},{"id":"/learn-parachains-index","path":"/docs/learn-parachains-index","sidebar":"docs"},{"id":"/learn-agile-coretime-index","path":"/docs/learn-agile-coretime-index","sidebar":"docs"},{"id":"/learn-xcm-index","path":"/docs/learn-xcm-index","sidebar":"docs"},{"id":"learn/xcm","path":"/docs/learn/xcm","sidebar":"docs"},{"id":"/learn/xcm/overview","path":"/docs/learn/xcm/overview","sidebar":"docs"},{"id":"/learn/xcm/quickstart","path":"/docs/learn/xcm/quickstart","sidebar":"docs"},{"id":"/learn/xcm/fundamentals","path":"/docs/learn/xcm/fundamentals","sidebar":"docs"},{"id":"/learn/xcm/fundamentals/multilocation","path":"/docs/learn/xcm/fundamentals/multilocation","sidebar":"docs"},{"id":"/learn/xcm/journey","path":"/docs/learn/xcm/journey","sidebar":"docs"},{"id":"/learn/xcm/journey/transfers","path":"/docs/learn/xcm/journey/transfers","sidebar":"docs"},{"id":"/learn/xcm/references","path":"/docs/learn/xcm/references","sidebar":"docs"},{"id":"/learn-comparisons-index","path":"/docs/learn-comparisons-index","sidebar":"docs"},{"id":"/learn-future-implementations-index","path":"/docs/learn-future-implementations-index","sidebar":"docs"},{"id":"/learn-jam","path":"/docs/learn-jam","sidebar":"docs"},{"id":"/build-client-index","path":"/docs/build-client-index","sidebar":"docs"},{"id":"/build-protocol-index","path":"/docs/build-protocol-index","sidebar":"docs"},{"id":"/build-archive-index","path":"/docs/build-archive-index","sidebar":"docs"},{"id":"/maintain-node-index","path":"/docs/maintain-node-index","sidebar":"docs"},{"id":"/maintain-collator-index","path":"/docs/maintain-collator-index","sidebar":"docs"},{"id":"/maintain-validator-index","path":"/docs/maintain-validator-index","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/explore-index","label":"Explore"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(59940);const c=JSON.parse('{"docusaurusVersion":"3.5.2","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.5.2"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.5.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.5.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.5.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.5.2"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.5.2"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.5.2"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.5.2"}}}');var l=n(74848),u={siteConfig:a.default,siteMetadata:c,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){var t=e.children;return(0,l.jsx)(d.Provider,{value:u,children:t})}},67489:(e,t,n)=>{"use strict";n.d(t,{A:()=>b});var r=n(77387),a=n(96540),o=n(38193),i=n(5260),s=n(70440),c=n(96300),l=n(53102),u=n(74848);function d(e){var t=e.error,n=e.tryAgain;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(p,{error:t})]})}function p(e){var t=e.error,n=(0,s.rA)(t).map((function(e){return e.message})).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function f(e){var t=e.children;return(0,u.jsx)(l.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function m(e){var t=e.error,n=e.tryAgain;return(0,u.jsx)(f,{children:(0,u.jsxs)(b,{fallback:function(){return(0,u.jsx)(d,{error:t,tryAgain:n})},children:[(0,u.jsx)(i.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(c.A,{children:(0,u.jsx)(d,{error:t,tryAgain:n})})]})})}var h=function(e){return(0,u.jsx)(m,Object.assign({},e))},b=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e){o.A.canUseDOM&&this.setState({error:e})},n.render=function(){var e=this,t=this.props.children,n=this.state.error;if(n){var r,a={error:n,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:h)(a)}return null!=t?t:null},t}(a.Component)},38193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document;const a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(80545),a=n(74848);function o(e){return(0,a.jsx)(r.mg,Object.assign({},e))}},28774:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var r=n(98587),a=n(96540),o=n(54625),i=n(70440),s=n(44586),c=n(16654),l=n(38193),u=n(63427),d=n(86025),p=n(74848),f=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,t){var n,m,h,b=e.isNavLink,g=e.to,y=e.href,v=e.activeClassName,x=e.isActive,w=e["data-noBrokenLinkCheck"],k=e.autoAddBaseUrl,_=void 0===k||k,S=(0,r.A)(e,f),E=(0,s.A)().siteConfig,j=E.trailingSlash,O=E.baseUrl,A=E.future.experimental_router,C=(0,d.hH)().withBaseUrl,P=(0,u.A)(),T=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(function(){return T.current}));var I=g||y;var N,R,L=(0,c.A)(I),D=null==I?void 0:I.replace("pathname://",""),M=void 0!==D?(N=D,_&&function(e){return e.startsWith("/")}(N)?C(N):N):void 0;"hash"===A&&null!=(n=M)&&n.startsWith("./")&&(M=null==(R=M)?void 0:R.slice(1));M&&L&&(M=(0,i.Ks)(M,{trailingSlash:j,baseUrl:O}));var F=(0,a.useRef)(!1),B=b?o.k2:o.N_,z=l.A.canUseIntersectionObserver,U=(0,a.useRef)(),$=function(){F.current||null==M||(window.docusaurus.preload(M),F.current=!0)};(0,a.useEffect)((function(){return!z&&L&&l.A.canUseDOM&&null!=M&&window.docusaurus.prefetch(M),function(){z&&U.current&&U.current.disconnect()}}),[U,M,z,L]);var q=null!=(m=null==(h=M)?void 0:h.startsWith("#"))&&m,H=!S.target||"_self"===S.target,V=!M||!L||!H||q&&"hash"!==A;w||!q&&V||P.collectLink(M),S.id&&P.collectAnchor(S.id);var W={};return V?(0,p.jsx)("a",Object.assign({ref:T,href:M},I&&!L&&{target:"_blank",rel:"noopener noreferrer"},S,W)):(0,p.jsx)(B,Object.assign({},S,{onMouseEnter:$,onTouchStart:$,innerRef:function(e){T.current=e,z&&e&&L&&(U.current=new window.IntersectionObserver((function(t){t.forEach((function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(U.current.unobserve(e),U.current.disconnect(),null!=M&&window.docusaurus.prefetch(M))}))})),U.current.observe(e))},to:M},b&&{isActive:x,activeClassName:v},W))}const h=a.forwardRef(m)},21312:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,T:()=>c});var r=n(96540),a=n(74848);function o(e,t){var n=e.split(/(\{\w+\})/).map((function(e,n){if(n%2==1){var r=null==t?void 0:t[e.slice(1,-1)];if(void 0!==r)return r}return e}));return n.some((function(e){return(0,r.isValidElement)(e)}))?n.map((function(e,t){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e})).filter((function(e){return""!==e})):n.join("")}var i=n(59940);function s(e){var t,n,r=e.id,a=e.message;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(t=null!=(n=i[null!=r?r:a])?n:a)?t:r}function c(e,t){return o(s({message:e.message,id:e.id}),t)}function l(e){var t=e.children,n=e.id,r=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal{const s=t.toLowerCase(),c=((e,t)=>{const[n,r]=(0,o.useState)(H(t,e)),a=(0,o.useRef)(),i=(0,o.useRef)();return(0,o.useEffect)((()=>{t===a.current&&e===i.current||(a.current=t,i.current=e,r(H(t,e)))}),[e,t]),n})(s,r),l=(e=>(0,o.useCallback)((t=>{var n=t,{className:r,style:a,line:o}=n,s=x(n,["className","style","line"]);const c=v(y({},s),{className:(0,i.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(c.style=e.plain),"object"==typeof a&&(c.style=y(y({},c.style||{}),a)),c}),[e]))(c),u=(e=>{const t=(0,o.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,o.useCallback)((e=>{var n=e,{token:r,className:a,style:o}=n,s=x(n,["token","className","style"]);const c=v(y({},s),{className:(0,i.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(c.style=y(y({},c.style||{}),o)),c}),[t])})(c),d=(({prism:e,code:t,grammar:n,language:r})=>{const a=(0,o.useRef)(e);return(0,o.useMemo)((()=>{if(null==n)return G([t]);const e={code:t,grammar:n,language:r,tokens:[]};return a.current.hooks.run("before-tokenize",e),e.tokens=a.current.tokenize(t,n),a.current.hooks.run("after-tokenize",e),G(e.tokens)}),[t,n,r])})({prism:a,language:s,code:n,grammar:a.languages[s]});return e({tokens:d,className:`prism-code language-${s}`,style:null!=c?c.root:{},getLineProps:l,getTokenProps:u})},Y=e=>(0,o.createElement)(Q,v(y({},e),{prism:e.prism||w,theme:e.theme||D,code:e.code,language:e.language}))},11561:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},31635:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>R,__assign:()=>o,__asyncDelegator:()=>E,__asyncGenerator:()=>S,__asyncValues:()=>j,__await:()=>_,__awaiter:()=>m,__classPrivateFieldGet:()=>T,__classPrivateFieldIn:()=>N,__classPrivateFieldSet:()=>I,__createBinding:()=>b,__decorate:()=>s,__disposeResources:()=>D,__esDecorate:()=>l,__exportStar:()=>g,__extends:()=>a,__generator:()=>h,__importDefault:()=>P,__importStar:()=>C,__makeTemplateObject:()=>O,__metadata:()=>f,__param:()=>c,__propKey:()=>d,__read:()=>v,__rest:()=>i,__rewriteRelativeImportExtension:()=>M,__runInitializers:()=>u,__setFunctionName:()=>p,__spread:()=>x,__spreadArray:()=>k,__spreadArrays:()=>w,__values:()=>y,default:()=>F});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n Your Docusaurus site did not load properly. A very common reason is a wrong site baseUrl configuration. Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+' We suggest trying baseUrl =