diff --git a/404.html b/404.html index 4484d2d7b294..c850619127cc 100644 --- a/404.html +++ b/404.html @@ -18,14 +18,14 @@ - - - + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

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

- - + + \ No newline at end of file diff --git a/assets/css/styles.0c3154ce.css b/assets/css/styles.b8614f3e.css similarity index 90% rename from assets/css/styles.0c3154ce.css rename to assets/css/styles.b8614f3e.css index 1a4dd00bdf6c..9cf8ef663a31 100644 --- a/assets/css/styles.0c3154ce.css +++ b/assets/css/styles.b8614f3e.css @@ -1 +1 @@ -.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.DocSearch-Button,.button{-webkit-user-select:none;-moz-user-select:none}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.dropdown,pre{position:relative}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.markdown li,body{word-wrap:break-word}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#e6007a;--ifm-color-primary-dark:#cf006e;--ifm-color-primary-darker:#c40068;--ifm-color-primary-darkest:#a10055;--ifm-color-primary-light:#fd0086;--ifm-color-primary-lighter:#ff0a8c;--ifm-color-primary-lightest:#ff2c9c;--secondaryColor:#172026;--snowColor:#efefef;--silverColor:#b7b8bb;--nickelColor:#6d7278;--blackColor:#000;--ifm-navbar-height:50px;--sansFontFamily:"Inter",sans-serif!important;--headingFontFamily:"Unbounded",sans-serif!important;--docsearch-searchbox-background:#fff;--docsearch-searchbox-shadow:var(--snowColor);--docusaurus-announcement-bar-height:auto!important;--custom-code-block-background:#f6f8fa;--docusaurus-highlighted-code-line-bg:#e6ebf1;--custom-content-max-width:none;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP,footer .list-social-links li{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.container_lyt7,.container_lyt7>svg,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{-moz-column-gap:var(--ifm-avatar-intro-margin);column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:-moz-any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.docs-wrapper,.navbar__inner{max-width:var(--custom-content-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer-legal li+li,.footer__item,.h1,.h2,.h3,.h4,.h5,.h6{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer-legal ul,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.homeNavItem h1{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.navbar__items--center .navbar__brand,body{margin:0}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::-moz-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-property:opacity,visibility}.btn-primary,.cards,.nav-footer{position:relative}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.container.container-custom,.navbar__inner,article iframe,article img{margin-left:auto;margin-right:auto}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{-moz-column-gap:var(--ifm-pagination-page-spacing);column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.homeContainer a,.nav-footer a:hover,.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.text-heading,h1{line-height:1.333333}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}#__docusaurus-base-url-issue-banner-container,.DocSearch.DocSearch-Button .DocSearch-Button-Keys,.docSidebarContainer_b6E3,.navbar__inner .navbar__item:last-child a:after,.navbar__inner a.navbar__item svg[class^=iconExternalLink],.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}@font-face{font-family:Unbounded;font-weight:100 900;src:url(/assets/fonts/Unbounded-Variable-a247d72576aff02445f8abeb96056589.woff2) format("woff2-variations")}body{font-family:var(--sansFontFamily)}h1{font-family:Unbounded,sans-serif!important;padding-top:1.2rem}h2,h3,h4,h5,h6{font-family:var(--sansFontFamily)}.text-heading{font-family:var(--headingFontFamily)}.font-weight-medium{font-weight:500!important}.font-weight-bolder{font-weight:900!important}button.menu__button{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.img_ev3q,.navbar.navbar--fixed-top{height:auto}.DocSearch.DocSearch-Button{background-color:#fff;border:1px solid var(--snowColor);color:var(--silverColor);cursor:text;width:170px}.btn-primary:before,.btn-primary[type=submit]:active,.btn-primary[type=submit]:focus,.btn-primary[type=submit]:hover{background:var(--ifm-color-primary)}.DocSearch.DocSearch-Button .DocSearch-Search-Icon{color:var(--silverColor)}.DocSearch.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--secondaryColor)}.DocSearch.DocSearch-Button .DocSearch-Button-Placeholder{font-size:13px;font-weight:500}.navbar__inner .navbar__item:last-child{margin-left:5px;margin-right:5px;opacity:1}.navbar__inner .navbar__item:last-child .dropdown__menu{border-radius:1.5rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);right:0;text-align:center;top:32px}.navbar__inner .navbar__item:last-child .dropdown__menu>li a{color:var(--secondaryColor);padding:12px 24px}.navbar__inner .navbar__item:last-child .dropdown__menu>li a.dropdown__link--active{background-color:#fff;color:var(--blackColor)}.navbar__inner .navbar__item:last-child .dropdown__menu>li a.dropdown__link--active:hover,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.navbar__inner .navbar__item:last-child .dropdown__menu>li a:hover{background-color:var(--snowColor);color:var(--ifm-color-primary)}.homeContainer{background:#fff;text-align:center}.homeFooterContainer,div[role=banner]{background-image:linear-gradient(217deg,rgba(196,0,97,.8),rgba(196,0,97,0) 70%),linear-gradient(127deg,rgba(230,0,122,.8),rgba(230,0,122,0) 70%),linear-gradient(336deg,rgba(103,69,210,.7),rgba(103,69,210,0) 70%)}.text-dark{color:var(--secondaryColor)!important}.homeNavContainer,.homeNavItem{padding:3rem 0}.homeNavItem{border-radius:3.25rem!important;transition:.15s ease-in-out}.homeNavItem p{max-width:300px}div[role=banner]{padding:10px 0}div[role=banner] .close{color:#fff}div[role=banner] .close:focus,div[role=banner] .close:hover{color:#fff!important;opacity:1}div.sticky{background-color:#f5cbc4;font-family:Unbounded;font-size:20px;padding:30px;position:sticky;top:10}.homeFooterContainer{background-color:#e6007a;padding:6rem 0 4rem}.homeFooterContainer .col-lg-6{align-items:flex-start;display:flex;flex-flow:column nowrap;margin-bottom:2rem}.homeFooterContainer .col-lg-6>:first-child{margin-bottom:1.3rem}.homeFooterContainer p{margin-bottom:2.5rem}.docs-wrapper{margin:0 auto;padding-bottom:80px}article blockquote{background-color:rgba(255,229,100,.3);border-left:8px solid #ffe564}article iframe,article img{display:block;max-width:100%}.prism-code{background-color:var(--custom-code-block-background)!important}.prism-code>div{width:100px!important}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{font-weight:600}.btn{font-size:16px;font-weight:700;padding:8px 16px}.btn,.btn:before{border-radius:1.5rem}.btn:before{left:-42px;width:42px}.btn-group-lg>.btn,.btn-lg{border-radius:2rem;padding:16px 20px}.btn-group-lg>.btn:before,.btn-lg:before{border-radius:2rem;left:-58px;width:58px}.btn-group-sm>.btn,.btn-sm{border-radius:1.5rem;font-size:16px;padding:8px 16px}.btn-group-sm>.btn:before,.btn-sm:before{border-radius:1.5rem;left:-42px;width:42px}.btn-primary{background-color:transparent;border-color:var(--ifm-color-primary);color:var(--ifm-color-primary);overflow:hidden;transform:scale(.999);transition:.2s,border 1ms;z-index:1}.btn-primary,.btn-primary:before{border:1px solid var(--ifm-color-primary);will-change:transform}.btn-primary:before{color:transparent;content:"";height:100%;position:absolute;top:0;transition:.2s;z-index:-1}.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background:none;border:1px solid transparent;color:#fff;transform:scale(1.05);will-change:transform}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 .2rem .2rem rgba(0,0,0,.1)}.btn-primary:not(:disabled):not(.disabled):active{background-color:transparent}.btn-primary:active:before,.btn-primary:focus:before,.btn-primary:hover:before{left:0;width:100%}.btn-bg-primary.btn-primary{border:1px solid #fff;color:#fff!important}.btn-bg-primary.btn-primary:active,.btn-bg-primary.btn-primary:focus,.btn-bg-primary.btn-primary:hover{background:#fff;color:var(--ifm-color-primary)!important}.btn-bg-primary.btn-primary:before{background:#fff;border:1px solid #fff;color:transparent;content:none;height:100%;position:absolute;top:0;transition:.2s;will-change:transform;z-index:-1}.btn-white,.footer-legal a.text-white:hover,.nav-footer a.text-white:hover{color:#fff!important}.nav-footer.spacer-y-4{padding-bottom:3rem;padding-top:3rem}.nav-footer.pb-4{padding-bottom:2.25rem!important}.nav-footer .text-small{font-size:.875rem}.nav-footer{background:var(--secondaryColor);border:none;color:#202020;font-size:16px;line-height:24px}.nav-footer h5{font-size:1.25rem;font-weight:400;margin-top:0}.nav-footer a.text-white,.nav-footer a.text-white:visited{color:var(--silverColor)!important}.nav-footer-item-pill{background-color:#e6007a;border-radius:10px;color:#fff;font-size:.75rem;font-weight:700;padding:1px 8px}.list-social-links{display:flex;list-style:none;padding:0}.cardTitle_rnsV,footer .list-social-links i{font-size:1.2rem}footer .list-social-links a{text-decoration:none;background:0 0!important;border:1px solid #fff;border-radius:50%;color:#fff;display:block;padding:.25rem .9rem}footer [class^=socicon-]{line-height:2}footer .list-social-links{margin-left:0}.footer-legal .navbar-brand{display:block;padding-bottom:0}.footer-legal .list-pipe-separator>li:not(:last-child)>a:after{content:"|";margin:0 .375rem;opacity:.5}.footer-legal a.text-white,.footer-legal a.text-white:visited{color:#b5aeae!important}.cards-container{flex-flow:row wrap;max-width:100%;min-width:0}.cards,.cards-container{align-items:center;display:flex;justify-content:center}.cards{border:1px solid var(--primaryColor);border-radius:10px;box-shadow:0 .1rem .1rem rgba(0,0,0,.4);height:80px;margin:5px;padding:10px;top:0;transition:top .2s;width:350px}.cards:hover{top:-5px}.cards-body{align-items:flex-start;color:#000;display:flex;flex:1 auto;flex-flow:column nowrap;margin-left:5px}.cards-title{align-content:center;color:var(--ifm-color-primary-dark);font-size:1rem;font-weight:700}.cards-text{margin:1px 1px 1px 5px}.docusaurus-highlight-code-line{background-color:#faff9f;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}html[data-theme=dark] .docusaurus-highlight-code-line{background-color:#646464}.container.container-custom{width:100%}pre .btnIcon{background-color:hsla(0,0%,100%,.7);border:1px solid transparent;color:#000;cursor:pointer;height:30px;padding:3px;position:absolute;top:4px;transition:.25s ease-out;z-index:2}pre .btnIcon:hover{border:1px solid silver;text-decoration:none}.DocSearch-Button-Container,.btnIcon__body{align-items:center;display:flex}.btnIcon svg{fill:currentColor;margin-right:.4em}.btnIcon__label{font-size:11px}.btnClipboard{right:10px}@font-face{font-family:Socicon;font-style:normal;font-weight:400;src:url(/assets/fonts/Socicon-5e166614f1c831694816befaba8d03cf.eot);src:url(/assets/fonts/Socicon-5e166614f1c831694816befaba8d03cf.eot#iefix) format("embedded-opentype"),url(/assets/fonts/Socicon-d02985133d7e9e09bde470dd54104762.woff2) format("woff2"),url(/assets/fonts/Socicon-48b2d1e286d6b8d6ebefa630301dcf3b.ttf) format("truetype"),url(/assets/fonts/Socicon-9075c233656883ebc65aeb93d2fb76ba.woff) format("woff"),url(/assets/images/Socicon-620cd8c93935433c4e69112bb91768e8.svg#Socicon) format("svg")}[class*=" socicon-"],[class^=socicon-]{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Socicon!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.socicon-internet:before{content:"\e957"}.socicon-moddb:before{content:"\e94b"}.socicon-indiedb:before{content:"\e94c"}.socicon-traxsource:before{content:"\e94d"}.socicon-gamefor:before{content:"\e94e"}.socicon-pixiv:before{content:"\e94f"}.socicon-myanimelist:before{content:"\e950"}.socicon-blackberry:before{content:"\e951"}.socicon-wickr:before{content:"\e952"}.socicon-spip:before{content:"\e953"}.socicon-napster:before{content:"\e954"}.socicon-beatport:before{content:"\e955"}.socicon-hackerone:before{content:"\e956"}.socicon-hackernews:before{content:"\e946"}.socicon-smashwords:before{content:"\e947"}.socicon-kobo:before{content:"\e948"}.socicon-bookbub:before{content:"\e949"}.socicon-mailru:before{content:"\e94a"}.socicon-gitlab:before{content:"\e945"}.socicon-instructables:before{content:"\e944"}.socicon-portfolio:before{content:"\e943"}.socicon-codered:before{content:"\e940"}.socicon-origin:before{content:"\e941"}.socicon-nextdoor:before{content:"\e942"}.socicon-udemy:before{content:"\e93f"}.socicon-livemaster:before{content:"\e93e"}.socicon-crunchbase:before{content:"\e93b"}.socicon-homefy:before{content:"\e93c"}.socicon-calendly:before{content:"\e93d"}.socicon-realtor:before{content:"\e90f"}.socicon-tidal:before{content:"\e910"}.socicon-qobuz:before{content:"\e911"}.socicon-natgeo:before{content:"\e912"}.socicon-mastodon:before{content:"\e913"}.socicon-unsplash:before{content:"\e914"}.socicon-homeadvisor:before{content:"\e915"}.socicon-angieslist:before{content:"\e916"}.socicon-codepen:before{content:"\e917"}.socicon-slack:before{content:"\e918"}.socicon-openaigym:before{content:"\e919"}.socicon-logmein:before{content:"\e91a"}.socicon-fiverr:before{content:"\e91b"}.socicon-gotomeeting:before{content:"\e91c"}.socicon-aliexpress:before{content:"\e91d"}.socicon-guru:before{content:"\e91e"}.socicon-appstore:before{content:"\e91f"}.socicon-homes:before{content:"\e920"}.socicon-zoom:before{content:"\e921"}.socicon-alibaba:before{content:"\e922"}.socicon-craigslist:before{content:"\e923"}.socicon-wix:before{content:"\e924"}.socicon-redfin:before{content:"\e925"}.socicon-googlecalendar:before{content:"\e926"}.socicon-shopify:before{content:"\e927"}.socicon-freelancer:before{content:"\e928"}.socicon-seedrs:before{content:"\e929"}.socicon-bing:before{content:"\e92a"}.socicon-doodle:before{content:"\e92b"}.socicon-bonanza:before{content:"\e92c"}.socicon-squarespace:before{content:"\e92d"}.socicon-toptal:before{content:"\e92e"}.socicon-gust:before{content:"\e92f"}.socicon-ask:before{content:"\e930"}.socicon-trulia:before{content:"\e931"}.socicon-loomly:before{content:"\e932"}.socicon-ghost:before{content:"\e933"}.socicon-upwork:before{content:"\e934"}.socicon-fundable:before{content:"\e935"}.socicon-booking:before{content:"\e936"}.socicon-googlemaps:before{content:"\e937"}.socicon-zillow:before{content:"\e938"}.socicon-niconico:before{content:"\e939"}.socicon-toneden:before{content:"\e93a"}.socicon-augment:before{content:"\e908"}.socicon-bitbucket:before{content:"\e909"}.socicon-fyuse:before{content:"\e90a"}.socicon-yt-gaming:before{content:"\e90b"}.socicon-sketchfab:before{content:"\e90c"}.socicon-mobcrush:before{content:"\e90d"}.socicon-microsoft:before{content:"\e90e"}.socicon-pandora:before{content:"\e907"}.socicon-messenger:before{content:"\e906"}.socicon-gamewisp:before{content:"\e905"}.socicon-bloglovin:before{content:"\e904"}.socicon-tunein:before{content:"\e903"}.socicon-gamejolt:before{content:"\e901"}.socicon-trello:before{content:"\e902"}.socicon-spreadshirt:before{content:"\e900"}.socicon-500px:before{content:"\e000"}.socicon-8tracks:before{content:"\e001"}.socicon-airbnb:before{content:"\e002"}.socicon-alliance:before{content:"\e003"}.socicon-amazon:before{content:"\e004"}.socicon-amplement:before{content:"\e005"}.socicon-android:before{content:"\e006"}.socicon-angellist:before{content:"\e007"}.socicon-apple:before{content:"\e008"}.socicon-appnet:before{content:"\e009"}.socicon-baidu:before{content:"\e00a"}.socicon-bandcamp:before{content:"\e00b"}.socicon-battlenet:before{content:"\e00c"}.socicon-mixer:before{content:"\e00d"}.socicon-bebee:before{content:"\e00e"}.socicon-bebo:before{content:"\e00f"}.socicon-behance:before{content:"\e010"}.socicon-blizzard:before{content:"\e011"}.socicon-blogger:before{content:"\e012"}.socicon-buffer:before{content:"\e013"}.socicon-chrome:before{content:"\e014"}.socicon-coderwall:before{content:"\e015"}.socicon-curse:before{content:"\e016"}.socicon-dailymotion:before{content:"\e017"}.socicon-deezer:before{content:"\e018"}.socicon-delicious:before{content:"\e019"}.socicon-deviantart:before{content:"\e01a"}.socicon-diablo:before{content:"\e01b"}.socicon-digg:before{content:"\e01c"}.socicon-discord:before{content:"\e01d"}.socicon-disqus:before{content:"\e01e"}.socicon-douban:before{content:"\e01f"}.socicon-draugiem:before{content:"\e020"}.socicon-dribbble:before{content:"\e021"}.socicon-drupal:before{content:"\e022"}.socicon-ebay:before{content:"\e023"}.socicon-ello:before{content:"\e024"}.socicon-endomodo:before{content:"\e025"}.socicon-envato:before{content:"\e026"}.socicon-etsy:before{content:"\e027"}.socicon-facebook:before{content:"\e028"}.socicon-feedburner:before{content:"\e029"}.socicon-filmweb:before{content:"\e02a"}.socicon-firefox:before{content:"\e02b"}.socicon-flattr:before{content:"\e02c"}.socicon-flickr:before{content:"\e02d"}.socicon-formulr:before{content:"\e02e"}.socicon-forrst:before{content:"\e02f"}.socicon-foursquare:before{content:"\e030"}.socicon-friendfeed:before{content:"\e031"}.socicon-github:before{content:"\e032"}.socicon-goodreads:before{content:"\e033"}.socicon-google:before{content:"\e034"}.socicon-googlescholar:before{content:"\e035"}.socicon-googlegroups:before{content:"\e036"}.socicon-googlephotos:before{content:"\e037"}.socicon-googleplus:before{content:"\e038"}.socicon-grooveshark:before{content:"\e039"}.socicon-hackerrank:before{content:"\e03a"}.socicon-hearthstone:before{content:"\e03b"}.socicon-hellocoton:before{content:"\e03c"}.socicon-heroes:before{content:"\e03d"}.socicon-smashcast:before{content:"\e03e"}.socicon-horde:before{content:"\e03f"}.socicon-houzz:before{content:"\e040"}.socicon-icq:before{content:"\e041"}.socicon-identica:before{content:"\e042"}.socicon-imdb:before{content:"\e043"}.socicon-instagram:before{content:"\e044"}.socicon-issuu:before{content:"\e045"}.socicon-istock:before{content:"\e046"}.socicon-itunes:before{content:"\e047"}.socicon-keybase:before{content:"\e048"}.socicon-lanyrd:before{content:"\e049"}.socicon-lastfm:before{content:"\e04a"}.socicon-line:before{content:"\e04b"}.socicon-linkedin:before{content:"\e04c"}.socicon-livejournal:before{content:"\e04d"}.socicon-lyft:before{content:"\e04e"}.socicon-macos:before{content:"\e04f"}.socicon-mail:before{content:"\e050"}.socicon-medium:before{content:"\e051"}.socicon-meetup:before{content:"\e052"}.socicon-mixcloud:before{content:"\e053"}.socicon-modelmayhem:before{content:"\e054"}.socicon-mumble:before{content:"\e055"}.socicon-myspace:before{content:"\e056"}.socicon-newsvine:before{content:"\e057"}.socicon-nintendo:before{content:"\e058"}.socicon-npm:before{content:"\e059"}.socicon-odnoklassniki:before{content:"\e05a"}.socicon-openid:before{content:"\e05b"}.socicon-opera:before{content:"\e05c"}.socicon-outlook:before{content:"\e05d"}.socicon-overwatch:before{content:"\e05e"}.socicon-patreon:before{content:"\e05f"}.socicon-paypal:before{content:"\e060"}.socicon-periscope:before{content:"\e061"}.socicon-persona:before{content:"\e062"}.socicon-pinterest:before{content:"\e063"}.socicon-play:before{content:"\e064"}.socicon-player:before{content:"\e065"}.socicon-playstation:before{content:"\e066"}.socicon-pocket:before{content:"\e067"}.socicon-qq:before{content:"\e068"}.socicon-quora:before{content:"\e069"}.socicon-raidcall:before{content:"\e06a"}.socicon-ravelry:before{content:"\e06b"}.socicon-reddit:before{content:"\e06c"}.socicon-renren:before{content:"\e06d"}.socicon-researchgate:before{content:"\e06e"}.socicon-residentadvisor:before{content:"\e06f"}.socicon-reverbnation:before{content:"\e070"}.socicon-rss:before{content:"\e071"}.socicon-sharethis:before{content:"\e072"}.socicon-skype:before{content:"\e073"}.socicon-slideshare:before{content:"\e074"}.socicon-smugmug:before{content:"\e075"}.socicon-snapchat:before{content:"\e076"}.socicon-songkick:before{content:"\e077"}.socicon-soundcloud:before{content:"\e078"}.socicon-spotify:before{content:"\e079"}.socicon-stackexchange:before{content:"\e07a"}.socicon-stackoverflow:before{content:"\e07b"}.socicon-starcraft:before{content:"\e07c"}.socicon-stayfriends:before{content:"\e07d"}.socicon-steam:before{content:"\e07e"}.socicon-storehouse:before{content:"\e07f"}.socicon-strava:before{content:"\e080"}.socicon-streamjar:before{content:"\e081"}.socicon-stumbleupon:before{content:"\e082"}.socicon-swarm:before{content:"\e083"}.socicon-teamspeak:before{content:"\e084"}.socicon-teamviewer:before{content:"\e085"}.socicon-technorati:before{content:"\e086"}.socicon-telegram:before{content:"\e087"}.socicon-tripadvisor:before{content:"\e088"}.socicon-tripit:before{content:"\e089"}.socicon-triplej:before{content:"\e08a"}.socicon-tumblr:before{content:"\e08b"}.socicon-twitch:before{content:"\e08c"}.socicon-twitter:before{content:"\e08d"}.socicon-uber:before{content:"\e08e"}.socicon-ventrilo:before{content:"\e08f"}.socicon-viadeo:before{content:"\e090"}.socicon-viber:before{content:"\e091"}.socicon-viewbug:before{content:"\e092"}.socicon-vimeo:before{content:"\e093"}.socicon-vine:before{content:"\e094"}.socicon-vkontakte:before{content:"\e095"}.socicon-warcraft:before{content:"\e096"}.socicon-wechat:before{content:"\e097"}.socicon-weibo:before{content:"\e098"}.socicon-whatsapp:before{content:"\e099"}.socicon-wikipedia:before{content:"\e09a"}.socicon-windows:before{content:"\e09b"}.socicon-wordpress:before{content:"\e09c"}.socicon-wykop:before{content:"\e09d"}.socicon-xbox:before{content:"\e09e"}.socicon-xing:before{content:"\e09f"}.socicon-yahoo:before{content:"\e0a0"}.socicon-yammer:before{content:"\e0a1"}.socicon-yandex:before{content:"\e0a2"}.socicon-yelp:before{content:"\e0a3"}.socicon-younow:before{content:"\e0a4"}.socicon-youtube:before{content:"\e0a5"}.socicon-zapier:before{content:"\e0a6"}.socicon-zerply:before{content:"\e0a7"}.socicon-zomato:before{content:"\e0a8"}.socicon-zynga:before{content:"\e0a9"}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.DocSearch-Container a,.tag_zVej:hover{text-decoration:none}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA,html:not([data-theme]) .themedComponent--light_NU7w{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::-moz-placeholder{color:var(--docsearch-muted-color)}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.algoliaLogo_rT1R{max-width:150px}.algoliaLogoPathFill_WdUC{fill:var(--ifm-font-color-base)}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes a{to{transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 rgba(0,0,0,.15);transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 rgba(0,0,0,.2)}.cardDescription_PWke{font-size:.8rem}.message-box{background-color:hwb(0 80% 2%);border:1px solid #ccc;border-radius:10px;bottom:20px;box-shadow:0 4px 8px rgba(0,0,0,.1);max-width:270px;padding:20px;position:fixed;right:10px;z-index:1000}.close-button{background:none;border:none;cursor:pointer;position:absolute;right:5px;top:5px}.messageContent{margin-top:10px}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;user-select:none}.DocSearch-Footer,.DocSearch-Help{-webkit-user-select:none;-moz-user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;-moz-appearance:none;border:0;cursor:pointer}.DocSearch-Input::-moz-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none}.hash-link:before{content:"#"}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{-moz-column-gap:.2rem;column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem;text-transform:uppercase}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}@media (min-width:576px){.container.container-custom{max-width:540px}}@media (min-width:768px){.nav-footer.spacer-y-4{padding-bottom:6rem;padding-top:6rem}.nav-footer .py-md-1{padding-bottom:.375rem!important;padding-top:.375rem!important}.container.container-custom{max-width:720px}}@media (min-width:992px){.homeNavContainer{height:90vh;max-height:900px;min-height:600px}.homeNavItem{border-radius:3.25rem!important;margin-top:-3rem;min-height:400px;transition:.15s ease-in-out}.homeNavItem:after{-webkit-font-feature-settings:"liga";bottom:3rem;color:var(--silverColor);content:"arrow_upward";font-family:Material Icons;font-size:1.5rem;left:50%;opacity:0;position:absolute;transform:translate(-50%);transition:.2s ease-in-out}.homeNavItem:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.04);transform:translateY(-1rem)}.homeNavItem:hover:after{opacity:1}.homeNavItemContent{margin-top:10%}.homeNavItem h1{font-size:4.2vw}.container.container-custom{max-width:960px}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media only screen and (min-width:1024px){.navbar__inner a.navbar__item[href*=contributing]{background:#fff;border:1px solid var(--ifm-color-primary);border-radius:20px;color:var(--ifm-color-primary);font-size:14px;font-weight:700;height:35px;line-height:35px;margin-left:16px;padding:0 16px}.navbar__inner a.navbar__item[href*=contributing]:hover{background:var(--ifm-color-primary);color:#fff}}@media (min-width:1200px){.homeNavItem h1{font-size:3.5rem;line-height:1.2}.container.container-custom{max-width:1140px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}}@media only screen and (max-width:750px){.DocSearch.DocSearch-Button{width:38px}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.DocSearch-Button,.button{-webkit-user-select:none;-moz-user-select:none}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.dropdown,pre{position:relative}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.markdown li,body{word-wrap:break-word}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#e6007a;--ifm-color-primary-dark:#cf006e;--ifm-color-primary-darker:#c40068;--ifm-color-primary-darkest:#a10055;--ifm-color-primary-light:#fd0086;--ifm-color-primary-lighter:#ff0a8c;--ifm-color-primary-lightest:#ff2c9c;--secondaryColor:#172026;--snowColor:#efefef;--silverColor:#b7b8bb;--nickelColor:#6d7278;--blackColor:#000;--ifm-navbar-height:50px;--sansFontFamily:"Inter",sans-serif!important;--headingFontFamily:"Unbounded",sans-serif!important;--docsearch-searchbox-background:#fff;--docsearch-searchbox-shadow:var(--snowColor);--docusaurus-announcement-bar-height:auto!important;--custom-code-block-background:#f6f8fa;--docusaurus-highlighted-code-line-bg:#e6ebf1;--custom-content-max-width:none;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP,footer .list-social-links li{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.container_lyt7,.container_lyt7>svg,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{-moz-column-gap:var(--ifm-avatar-intro-margin);column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:-moz-any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.docs-wrapper,.navbar__inner{max-width:var(--custom-content-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer-legal li+li,.footer__item,.h1,.h2,.h3,.h4,.h5,.h6{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer-legal ul,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.homeNavItem h1{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.navbar__items--center .navbar__brand,body{margin:0}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::-moz-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-property:opacity,visibility}.btn-primary,.cards,.nav-footer{position:relative}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.container.container-custom,.navbar__inner,article iframe,article img{margin-left:auto;margin-right:auto}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{-moz-column-gap:var(--ifm-pagination-page-spacing);column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.homeContainer a,.nav-footer a:hover,.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.text-heading,h1{line-height:1.333333}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}#__docusaurus-base-url-issue-banner-container,.DocSearch.DocSearch-Button .DocSearch-Button-Keys,.docSidebarContainer_b6E3,.navbar__inner .navbar__item:last-child a:after,.navbar__inner a.navbar__item svg[class^=iconExternalLink],.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}@font-face{font-family:Unbounded;font-weight:100 900;src:url(/assets/fonts/Unbounded-Variable-a247d72576aff02445f8abeb96056589.woff2) format("woff2-variations")}body{font-family:var(--sansFontFamily)}h1{font-family:Unbounded,sans-serif!important;padding-top:1.2rem}h2,h3,h4,h5,h6{font-family:var(--sansFontFamily)}.text-heading{font-family:var(--headingFontFamily)}.font-weight-medium{font-weight:500!important}.font-weight-bolder{font-weight:900!important}button.menu__button{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.img_ev3q,.navbar.navbar--fixed-top{height:auto}.DocSearch.DocSearch-Button{background-color:#fff;border:1px solid var(--snowColor);color:var(--silverColor);cursor:text;width:170px}.btn-primary:before,.btn-primary[type=submit]:active,.btn-primary[type=submit]:focus,.btn-primary[type=submit]:hover{background:var(--ifm-color-primary)}.DocSearch.DocSearch-Button .DocSearch-Search-Icon{color:var(--silverColor)}.DocSearch.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--secondaryColor)}.DocSearch.DocSearch-Button .DocSearch-Button-Placeholder{font-size:13px;font-weight:500}.navbar__inner .navbar__item:last-child{margin-left:5px;margin-right:5px;opacity:1}.navbar__inner .navbar__item:last-child .dropdown__menu{border-radius:1.5rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);right:0;text-align:center;top:32px}.navbar__inner .navbar__item:last-child .dropdown__menu>li a{color:var(--secondaryColor);padding:12px 24px}.navbar__inner .navbar__item:last-child .dropdown__menu>li a.dropdown__link--active{background-color:#fff;color:var(--blackColor)}.navbar__inner .navbar__item:last-child .dropdown__menu>li a.dropdown__link--active:hover,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.navbar__inner .navbar__item:last-child .dropdown__menu>li a:hover{background-color:var(--snowColor);color:var(--ifm-color-primary)}.homeContainer{background:#fff;text-align:center}.homeFooterContainer,div[role=banner]{background-image:linear-gradient(217deg,rgba(196,0,97,.8),rgba(196,0,97,0) 70%),linear-gradient(127deg,rgba(230,0,122,.8),rgba(230,0,122,0) 70%),linear-gradient(336deg,rgba(103,69,210,.7),rgba(103,69,210,0) 70%)}.text-dark{color:var(--secondaryColor)!important}.homeNavContainer,.homeNavItem{padding:3rem 0}.homeNavItem{border-radius:3.25rem!important;transition:.15s ease-in-out}.homeNavItem p{max-width:300px}div[role=banner]{padding:10px 0}div[role=banner] .close{color:#fff}div[role=banner] .close:focus,div[role=banner] .close:hover{color:#fff!important;opacity:1}div.sticky{background-color:#f5cbc4;font-family:Unbounded;font-size:20px;padding:30px;position:sticky;top:10}.homeFooterContainer{background-color:#e6007a;padding:6rem 0 4rem}.homeFooterContainer .col-lg-6{align-items:flex-start;display:flex;flex-flow:column nowrap;margin-bottom:2rem}.homeFooterContainer .col-lg-6>:first-child{margin-bottom:1.3rem}.homeFooterContainer p{margin-bottom:2.5rem}.docs-wrapper{margin:0 auto;padding-bottom:80px}article blockquote{background-color:rgba(255,229,100,.3);border-left:8px solid #ffe564}article iframe,article img{display:block;max-width:100%}.prism-code{background-color:var(--custom-code-block-background)!important}.prism-code>div{width:100px!important}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{font-weight:600}.btn{font-size:16px;font-weight:700;padding:8px 16px}.btn,.btn:before{border-radius:1.5rem}.btn:before{left:-42px;width:42px}.btn-group-lg>.btn,.btn-lg{border-radius:2rem;padding:16px 20px}.btn-group-lg>.btn:before,.btn-lg:before{border-radius:2rem;left:-58px;width:58px}.btn-group-sm>.btn,.btn-sm{border-radius:1.5rem;font-size:16px;padding:8px 16px}.btn-group-sm>.btn:before,.btn-sm:before{border-radius:1.5rem;left:-42px;width:42px}.btn-primary{background-color:transparent;border-color:var(--ifm-color-primary);color:var(--ifm-color-primary);overflow:hidden;transform:scale(.999);transition:.2s,border 1ms;z-index:1}.btn-primary,.btn-primary:before{border:1px solid var(--ifm-color-primary);will-change:transform}.btn-primary:before{color:transparent;content:"";height:100%;position:absolute;top:0;transition:.2s;z-index:-1}.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background:none;border:1px solid transparent;color:#fff;transform:scale(1.05);will-change:transform}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 .2rem .2rem rgba(0,0,0,.1)}.btn-primary:not(:disabled):not(.disabled):active{background-color:transparent}.btn-primary:active:before,.btn-primary:focus:before,.btn-primary:hover:before{left:0;width:100%}.btn-bg-primary.btn-primary{border:1px solid #fff;color:#fff!important}.btn-bg-primary.btn-primary:active,.btn-bg-primary.btn-primary:focus,.btn-bg-primary.btn-primary:hover{background:#fff;color:var(--ifm-color-primary)!important}.btn-bg-primary.btn-primary:before{background:#fff;border:1px solid #fff;color:transparent;content:none;height:100%;position:absolute;top:0;transition:.2s;will-change:transform;z-index:-1}.btn-white,.footer-legal a.text-white:hover,.nav-footer a.text-white:hover{color:#fff!important}.nav-footer.spacer-y-4{padding-bottom:3rem;padding-top:3rem}.nav-footer.pb-4{padding-bottom:2.25rem!important}.nav-footer .text-small{font-size:.875rem}.nav-footer{background:var(--secondaryColor);border:none;color:#202020;font-size:16px;line-height:24px}.nav-footer h5{font-size:1.25rem;font-weight:400;margin-top:0}.nav-footer a.text-white,.nav-footer a.text-white:visited{color:var(--silverColor)!important}.nav-footer-item-pill{background-color:#e6007a;border-radius:10px;color:#fff;font-size:.75rem;font-weight:700;padding:1px 8px}.list-social-links{display:flex;list-style:none;padding:0}.cardTitle_rnsV,footer .list-social-links i{font-size:1.2rem}footer .list-social-links a{text-decoration:none;background:0 0!important;border:1px solid #fff;border-radius:50%;color:#fff;display:block;padding:.25rem .9rem}footer [class^=socicon-]{line-height:2}footer .list-social-links{margin-left:0}.footer-legal .navbar-brand{display:block;padding-bottom:0}.footer-legal .list-pipe-separator>li:not(:last-child)>a:after{content:"|";margin:0 .375rem;opacity:.5}.footer-legal a.text-white,.footer-legal a.text-white:visited{color:#b5aeae!important}.cards-container{flex-flow:row wrap;max-width:100%;min-width:0}.cards,.cards-container{align-items:center;display:flex;justify-content:center}.cards{border:1px solid var(--primaryColor);border-radius:10px;box-shadow:0 .1rem .1rem rgba(0,0,0,.4);height:80px;margin:5px;padding:10px;top:0;transition:top .2s;width:350px}.cards:hover{top:-5px}.cards-body{align-items:flex-start;color:#000;display:flex;flex:1 auto;flex-flow:column nowrap;margin-left:5px}.cards-title{align-content:center;color:var(--ifm-color-primary-dark);font-size:1rem;font-weight:700}.cards-text{margin:1px 1px 1px 5px}.docusaurus-highlight-code-line{background-color:#faff9f;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}html[data-theme=dark] .docusaurus-highlight-code-line{background-color:#646464}.container.container-custom{width:100%}pre .btnIcon{background-color:hsla(0,0%,100%,.7);border:1px solid transparent;color:#000;cursor:pointer;height:30px;padding:3px;position:absolute;top:4px;transition:.25s ease-out;z-index:2}pre .btnIcon:hover{border:1px solid silver;text-decoration:none}.DocSearch-Button-Container,.btnIcon__body{align-items:center;display:flex}.btnIcon svg{fill:currentColor;margin-right:.4em}.btnIcon__label{font-size:11px}.btnClipboard{right:10px}@font-face{font-family:Socicon;font-style:normal;font-weight:400;src:url(/assets/fonts/Socicon-5e166614f1c831694816befaba8d03cf.eot);src:url(/assets/fonts/Socicon-5e166614f1c831694816befaba8d03cf.eot#iefix) format("embedded-opentype"),url(/assets/fonts/Socicon-d02985133d7e9e09bde470dd54104762.woff2) format("woff2"),url(/assets/fonts/Socicon-48b2d1e286d6b8d6ebefa630301dcf3b.ttf) format("truetype"),url(/assets/fonts/Socicon-9075c233656883ebc65aeb93d2fb76ba.woff) format("woff"),url(/assets/images/Socicon-620cd8c93935433c4e69112bb91768e8.svg#Socicon) format("svg")}[class*=" socicon-"],[class^=socicon-]{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Socicon!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.socicon-internet:before{content:"\e957"}.socicon-moddb:before{content:"\e94b"}.socicon-indiedb:before{content:"\e94c"}.socicon-traxsource:before{content:"\e94d"}.socicon-gamefor:before{content:"\e94e"}.socicon-pixiv:before{content:"\e94f"}.socicon-myanimelist:before{content:"\e950"}.socicon-blackberry:before{content:"\e951"}.socicon-wickr:before{content:"\e952"}.socicon-spip:before{content:"\e953"}.socicon-napster:before{content:"\e954"}.socicon-beatport:before{content:"\e955"}.socicon-hackerone:before{content:"\e956"}.socicon-hackernews:before{content:"\e946"}.socicon-smashwords:before{content:"\e947"}.socicon-kobo:before{content:"\e948"}.socicon-bookbub:before{content:"\e949"}.socicon-mailru:before{content:"\e94a"}.socicon-gitlab:before{content:"\e945"}.socicon-instructables:before{content:"\e944"}.socicon-portfolio:before{content:"\e943"}.socicon-codered:before{content:"\e940"}.socicon-origin:before{content:"\e941"}.socicon-nextdoor:before{content:"\e942"}.socicon-udemy:before{content:"\e93f"}.socicon-livemaster:before{content:"\e93e"}.socicon-crunchbase:before{content:"\e93b"}.socicon-homefy:before{content:"\e93c"}.socicon-calendly:before{content:"\e93d"}.socicon-realtor:before{content:"\e90f"}.socicon-tidal:before{content:"\e910"}.socicon-qobuz:before{content:"\e911"}.socicon-natgeo:before{content:"\e912"}.socicon-mastodon:before{content:"\e913"}.socicon-unsplash:before{content:"\e914"}.socicon-homeadvisor:before{content:"\e915"}.socicon-angieslist:before{content:"\e916"}.socicon-codepen:before{content:"\e917"}.socicon-slack:before{content:"\e918"}.socicon-openaigym:before{content:"\e919"}.socicon-logmein:before{content:"\e91a"}.socicon-fiverr:before{content:"\e91b"}.socicon-gotomeeting:before{content:"\e91c"}.socicon-aliexpress:before{content:"\e91d"}.socicon-guru:before{content:"\e91e"}.socicon-appstore:before{content:"\e91f"}.socicon-homes:before{content:"\e920"}.socicon-zoom:before{content:"\e921"}.socicon-alibaba:before{content:"\e922"}.socicon-craigslist:before{content:"\e923"}.socicon-wix:before{content:"\e924"}.socicon-redfin:before{content:"\e925"}.socicon-googlecalendar:before{content:"\e926"}.socicon-shopify:before{content:"\e927"}.socicon-freelancer:before{content:"\e928"}.socicon-seedrs:before{content:"\e929"}.socicon-bing:before{content:"\e92a"}.socicon-doodle:before{content:"\e92b"}.socicon-bonanza:before{content:"\e92c"}.socicon-squarespace:before{content:"\e92d"}.socicon-toptal:before{content:"\e92e"}.socicon-gust:before{content:"\e92f"}.socicon-ask:before{content:"\e930"}.socicon-trulia:before{content:"\e931"}.socicon-loomly:before{content:"\e932"}.socicon-ghost:before{content:"\e933"}.socicon-upwork:before{content:"\e934"}.socicon-fundable:before{content:"\e935"}.socicon-booking:before{content:"\e936"}.socicon-googlemaps:before{content:"\e937"}.socicon-zillow:before{content:"\e938"}.socicon-niconico:before{content:"\e939"}.socicon-toneden:before{content:"\e93a"}.socicon-augment:before{content:"\e908"}.socicon-bitbucket:before{content:"\e909"}.socicon-fyuse:before{content:"\e90a"}.socicon-yt-gaming:before{content:"\e90b"}.socicon-sketchfab:before{content:"\e90c"}.socicon-mobcrush:before{content:"\e90d"}.socicon-microsoft:before{content:"\e90e"}.socicon-pandora:before{content:"\e907"}.socicon-messenger:before{content:"\e906"}.socicon-gamewisp:before{content:"\e905"}.socicon-bloglovin:before{content:"\e904"}.socicon-tunein:before{content:"\e903"}.socicon-gamejolt:before{content:"\e901"}.socicon-trello:before{content:"\e902"}.socicon-spreadshirt:before{content:"\e900"}.socicon-500px:before{content:"\e000"}.socicon-8tracks:before{content:"\e001"}.socicon-airbnb:before{content:"\e002"}.socicon-alliance:before{content:"\e003"}.socicon-amazon:before{content:"\e004"}.socicon-amplement:before{content:"\e005"}.socicon-android:before{content:"\e006"}.socicon-angellist:before{content:"\e007"}.socicon-apple:before{content:"\e008"}.socicon-appnet:before{content:"\e009"}.socicon-baidu:before{content:"\e00a"}.socicon-bandcamp:before{content:"\e00b"}.socicon-battlenet:before{content:"\e00c"}.socicon-mixer:before{content:"\e00d"}.socicon-bebee:before{content:"\e00e"}.socicon-bebo:before{content:"\e00f"}.socicon-behance:before{content:"\e010"}.socicon-blizzard:before{content:"\e011"}.socicon-blogger:before{content:"\e012"}.socicon-buffer:before{content:"\e013"}.socicon-chrome:before{content:"\e014"}.socicon-coderwall:before{content:"\e015"}.socicon-curse:before{content:"\e016"}.socicon-dailymotion:before{content:"\e017"}.socicon-deezer:before{content:"\e018"}.socicon-delicious:before{content:"\e019"}.socicon-deviantart:before{content:"\e01a"}.socicon-diablo:before{content:"\e01b"}.socicon-digg:before{content:"\e01c"}.socicon-discord:before{content:"\e01d"}.socicon-disqus:before{content:"\e01e"}.socicon-douban:before{content:"\e01f"}.socicon-draugiem:before{content:"\e020"}.socicon-dribbble:before{content:"\e021"}.socicon-drupal:before{content:"\e022"}.socicon-ebay:before{content:"\e023"}.socicon-ello:before{content:"\e024"}.socicon-endomodo:before{content:"\e025"}.socicon-envato:before{content:"\e026"}.socicon-etsy:before{content:"\e027"}.socicon-facebook:before{content:"\e028"}.socicon-feedburner:before{content:"\e029"}.socicon-filmweb:before{content:"\e02a"}.socicon-firefox:before{content:"\e02b"}.socicon-flattr:before{content:"\e02c"}.socicon-flickr:before{content:"\e02d"}.socicon-formulr:before{content:"\e02e"}.socicon-forrst:before{content:"\e02f"}.socicon-foursquare:before{content:"\e030"}.socicon-friendfeed:before{content:"\e031"}.socicon-github:before{content:"\e032"}.socicon-goodreads:before{content:"\e033"}.socicon-google:before{content:"\e034"}.socicon-googlescholar:before{content:"\e035"}.socicon-googlegroups:before{content:"\e036"}.socicon-googlephotos:before{content:"\e037"}.socicon-googleplus:before{content:"\e038"}.socicon-grooveshark:before{content:"\e039"}.socicon-hackerrank:before{content:"\e03a"}.socicon-hearthstone:before{content:"\e03b"}.socicon-hellocoton:before{content:"\e03c"}.socicon-heroes:before{content:"\e03d"}.socicon-smashcast:before{content:"\e03e"}.socicon-horde:before{content:"\e03f"}.socicon-houzz:before{content:"\e040"}.socicon-icq:before{content:"\e041"}.socicon-identica:before{content:"\e042"}.socicon-imdb:before{content:"\e043"}.socicon-instagram:before{content:"\e044"}.socicon-issuu:before{content:"\e045"}.socicon-istock:before{content:"\e046"}.socicon-itunes:before{content:"\e047"}.socicon-keybase:before{content:"\e048"}.socicon-lanyrd:before{content:"\e049"}.socicon-lastfm:before{content:"\e04a"}.socicon-line:before{content:"\e04b"}.socicon-linkedin:before{content:"\e04c"}.socicon-livejournal:before{content:"\e04d"}.socicon-lyft:before{content:"\e04e"}.socicon-macos:before{content:"\e04f"}.socicon-mail:before{content:"\e050"}.socicon-medium:before{content:"\e051"}.socicon-meetup:before{content:"\e052"}.socicon-mixcloud:before{content:"\e053"}.socicon-modelmayhem:before{content:"\e054"}.socicon-mumble:before{content:"\e055"}.socicon-myspace:before{content:"\e056"}.socicon-newsvine:before{content:"\e057"}.socicon-nintendo:before{content:"\e058"}.socicon-npm:before{content:"\e059"}.socicon-odnoklassniki:before{content:"\e05a"}.socicon-openid:before{content:"\e05b"}.socicon-opera:before{content:"\e05c"}.socicon-outlook:before{content:"\e05d"}.socicon-overwatch:before{content:"\e05e"}.socicon-patreon:before{content:"\e05f"}.socicon-paypal:before{content:"\e060"}.socicon-periscope:before{content:"\e061"}.socicon-persona:before{content:"\e062"}.socicon-pinterest:before{content:"\e063"}.socicon-play:before{content:"\e064"}.socicon-player:before{content:"\e065"}.socicon-playstation:before{content:"\e066"}.socicon-pocket:before{content:"\e067"}.socicon-qq:before{content:"\e068"}.socicon-quora:before{content:"\e069"}.socicon-raidcall:before{content:"\e06a"}.socicon-ravelry:before{content:"\e06b"}.socicon-reddit:before{content:"\e06c"}.socicon-renren:before{content:"\e06d"}.socicon-researchgate:before{content:"\e06e"}.socicon-residentadvisor:before{content:"\e06f"}.socicon-reverbnation:before{content:"\e070"}.socicon-rss:before{content:"\e071"}.socicon-sharethis:before{content:"\e072"}.socicon-skype:before{content:"\e073"}.socicon-slideshare:before{content:"\e074"}.socicon-smugmug:before{content:"\e075"}.socicon-snapchat:before{content:"\e076"}.socicon-songkick:before{content:"\e077"}.socicon-soundcloud:before{content:"\e078"}.socicon-spotify:before{content:"\e079"}.socicon-stackexchange:before{content:"\e07a"}.socicon-stackoverflow:before{content:"\e07b"}.socicon-starcraft:before{content:"\e07c"}.socicon-stayfriends:before{content:"\e07d"}.socicon-steam:before{content:"\e07e"}.socicon-storehouse:before{content:"\e07f"}.socicon-strava:before{content:"\e080"}.socicon-streamjar:before{content:"\e081"}.socicon-stumbleupon:before{content:"\e082"}.socicon-swarm:before{content:"\e083"}.socicon-teamspeak:before{content:"\e084"}.socicon-teamviewer:before{content:"\e085"}.socicon-technorati:before{content:"\e086"}.socicon-telegram:before{content:"\e087"}.socicon-tripadvisor:before{content:"\e088"}.socicon-tripit:before{content:"\e089"}.socicon-triplej:before{content:"\e08a"}.socicon-tumblr:before{content:"\e08b"}.socicon-twitch:before{content:"\e08c"}.socicon-twitter:before{content:"\e08d"}.socicon-uber:before{content:"\e08e"}.socicon-ventrilo:before{content:"\e08f"}.socicon-viadeo:before{content:"\e090"}.socicon-viber:before{content:"\e091"}.socicon-viewbug:before{content:"\e092"}.socicon-vimeo:before{content:"\e093"}.socicon-vine:before{content:"\e094"}.socicon-vkontakte:before{content:"\e095"}.socicon-warcraft:before{content:"\e096"}.socicon-wechat:before{content:"\e097"}.socicon-weibo:before{content:"\e098"}.socicon-whatsapp:before{content:"\e099"}.socicon-wikipedia:before{content:"\e09a"}.socicon-windows:before{content:"\e09b"}.socicon-wordpress:before{content:"\e09c"}.socicon-wykop:before{content:"\e09d"}.socicon-xbox:before{content:"\e09e"}.socicon-xing:before{content:"\e09f"}.socicon-yahoo:before{content:"\e0a0"}.socicon-yammer:before{content:"\e0a1"}.socicon-yandex:before{content:"\e0a2"}.socicon-yelp:before{content:"\e0a3"}.socicon-younow:before{content:"\e0a4"}.socicon-youtube:before{content:"\e0a5"}.socicon-zapier:before{content:"\e0a6"}.socicon-zerply:before{content:"\e0a7"}.socicon-zomato:before{content:"\e0a8"}.socicon-zynga:before{content:"\e0a9"}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.DocSearch-Container a,.tag_zVej:hover{text-decoration:none}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA,html:not([data-theme]) .themedComponent--light_NU7w{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::-moz-placeholder{color:var(--docsearch-muted-color)}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.algoliaLogo_rT1R{max-width:150px}.algoliaLogoPathFill_WdUC{fill:var(--ifm-font-color-base)}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes a{to{transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;user-select:none}.DocSearch-Footer,.DocSearch-Help{-webkit-user-select:none;-moz-user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;-moz-appearance:none;border:0;cursor:pointer}.DocSearch-Input::-moz-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.message-box{background-color:hwb(0 80% 2%);border:1px solid #ccc;border-radius:10px;bottom:20px;box-shadow:0 4px 8px rgba(0,0,0,.1);max-width:270px;padding:20px;position:fixed;right:10px;z-index:1000}.close-button{background:none;border:none;cursor:pointer;position:absolute;right:5px;top:5px}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.messageContent{margin-top:10px}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 rgba(0,0,0,.15);transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 rgba(0,0,0,.2)}.cardDescription_PWke{font-size:.8rem}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none}.hash-link:before{content:"#"}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{-moz-column-gap:.2rem;column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem;text-transform:uppercase}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}@media (min-width:576px){.container.container-custom{max-width:540px}}@media (min-width:768px){.nav-footer.spacer-y-4{padding-bottom:6rem;padding-top:6rem}.nav-footer .py-md-1{padding-bottom:.375rem!important;padding-top:.375rem!important}.container.container-custom{max-width:720px}}@media (min-width:992px){.homeNavContainer{height:90vh;max-height:900px;min-height:600px}.homeNavItem{border-radius:3.25rem!important;margin-top:-3rem;min-height:400px;transition:.15s ease-in-out}.homeNavItem:after{-webkit-font-feature-settings:"liga";bottom:3rem;color:var(--silverColor);content:"arrow_upward";font-family:Material Icons;font-size:1.5rem;left:50%;opacity:0;position:absolute;transform:translate(-50%);transition:.2s ease-in-out}.homeNavItem:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.04);transform:translateY(-1rem)}.homeNavItem:hover:after{opacity:1}.homeNavItemContent{margin-top:10%}.homeNavItem h1{font-size:4.2vw}.container.container-custom{max-width:960px}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media only screen and (min-width:1024px){.navbar__inner a.navbar__item[href*=contributing]{background:#fff;border:1px solid var(--ifm-color-primary);border-radius:20px;color:var(--ifm-color-primary);font-size:14px;font-weight:700;height:35px;line-height:35px;margin-left:16px;padding:0 16px}.navbar__inner a.navbar__item[href*=contributing]:hover{background:var(--ifm-color-primary);color:#fff}}@media (min-width:1200px){.homeNavItem h1{font-size:3.5rem;line-height:1.2}.container.container-custom{max-width:1140px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}}@media only screen and (max-width:750px){.DocSearch.DocSearch-Button{width:38px}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/06597bc8.0f1aa230.js b/assets/js/06597bc8.0f1aa230.js new file mode 100644 index 000000000000..0477256eb01f --- /dev/null +++ b/assets/js/06597bc8.0f1aa230.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9856],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),u=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=u(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),h=u(n),c=o,m=h["".concat(l,".").concat(c)]||h[c]||d[c]||r;return n?a.createElement(m,i(i({ref:t},p),{},{components:n})):a.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:o,i[1]=s;for(var u=2;u{n.d(t,{Z:()=>o});var a=n(67294);const o=function(e){var t,n=e.message,o=(0,a.useState)(!0),r=o[0],i=o[1];return a.createElement(a.Fragment,null,r&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},45401:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>u,default:()=>f,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),i=n(35703),s=["components"],l={id:"learn-treasury",title:"Governance v1 Treasury",sidebar_label:"Gov1 Treasury",description:"The Polkadot's On-chain Treasury during Gov1.",keywords:["treasury","funds","funding","tips","tipping"],slug:"../learn-treasury"},u=void 0,p={unversionedId:"learn/archive/learn-treasury",id:"learn/archive/learn-treasury",title:"Governance v1 Treasury",description:"The Polkadot's On-chain Treasury during Gov1.",source:"@site/../docs/learn/archive/learn-treasury.md",sourceDirName:"learn/archive",slug:"/learn/learn-treasury",permalink:"/docs/learn/learn-treasury",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-treasury.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-treasury",title:"Governance v1 Treasury",sidebar_label:"Gov1 Treasury",description:"The Polkadot's On-chain Treasury during Gov1.",keywords:["treasury","funds","funding","tips","tipping"],slug:"../learn-treasury"},sidebar:"docs",previous:{title:"Governance V1",permalink:"/docs/learn/learn-governance"},next:{title:"Polkadot Launch Phases",permalink:"/docs/learn/learn-launch"}},h={},d=[{value:"Funding the Treasury",id:"funding-the-treasury",level:2},{value:"Tipping",id:"tipping",level:2},{value:"Example",id:"example",level:3},{value:"Bounties Spending",id:"bounties-spending",level:2},{value:"Creating a Bounty Proposal",id:"creating-a-bounty-proposal",level:3},{value:"Closing a bounty",id:"closing-a-bounty",level:3},{value:"FAQ",id:"faq",level:2},{value:"What prevents the Treasury from being captured by a majority of the Council?",id:"what-prevents-the-treasury-from-being-captured-by-a-majority-of-the-council",level:3},{value:"Further Reading",id:"further-reading",level:2}],c={toc:d},m="wrapper";function f(e){var t=e.components,n=(0,o.Z)(e,s);return(0,r.kt)(m,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(i.Z,{message:"The content on this page is archived. For up-to-date information about treasury, see the\n[Polkadot OpenGov Treasury page](/docs/learn-polkadot-opengov-treasury).",mdxType:"MessageBox"}),(0,r.kt)("p",null,"The Treasury is a pot of funds collected through a portion of block production rewards, transaction\nfees, slashing, ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking#inflation"},"staking inefficiencies"),", etc."),(0,r.kt)("p",null,"The Treasury funds are held in a ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-account-advanced#system-accounts"},"system account")," not\naccessible by anyone; only the system internal logic can access it. Funds can be spent by making a\nspending proposal that, if approved by the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"Council"),", will enter a\nwaiting period before distribution. This waiting period is known as the ",(0,r.kt)("em",{parentName:"p"},"spend period"),", and its\nduration is subject to ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"governance"),", with the current default set to\n28 days. The Treasury attempts to spend as many\nproposals in the queue as it can without running out of funds."),(0,r.kt)("p",null,"Treasury payout is an automatic process:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"If the Treasury funds run out with approved proposals left to fund, those proposals are kept in\nthe approved queue, and will receive funding in the following spend period."),(0,r.kt)("li",{parentName:"ul"},"If the Treasury ends a spend period without spending all of its funds, it suffers a burn of a\npercentage of its funds - thereby causing deflationary pressure. This encourages the spending of\nthe funds in the Treasury by Polkadot's governance system.\nThis percentage is currently at 1% on Polkadot.\n","")),(0,r.kt)("p",null,"When a stakeholder wishes to propose a spend from the Treasury, they must reserve a deposit of at\nleast 5% of the proposed spend (see below for variations). This deposit will be slashed if the\nproposal is rejected, and returned if it is accepted."),(0,r.kt)("p",null,"Proposals may consist of (but are not limited to):"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Infrastructure deployment and continued operation."),(0,r.kt)("li",{parentName:"ul"},"Network security operations (monitoring services, continuous auditing)."),(0,r.kt)("li",{parentName:"ul"},"Ecosystem provisions (collaborations with friendly chains)."),(0,r.kt)("li",{parentName:"ul"},"Marketing activities (advertising, paid features, collaborations)."),(0,r.kt)("li",{parentName:"ul"},"Community events and outreach (meetups, pizza parties, hackerspaces)."),(0,r.kt)("li",{parentName:"ul"},"Software development (wallets and wallet integration, clients and client upgrades).")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"learn-governance#council"},"Council")," governs the Treasury and how the funds are spent is up to\ntheir judgment."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The Council does not approve or deny Treasury Proposals based on the available funds. Proposals are\nnot approved just because there are funds ready to spend but are subject to a burn.")),(0,r.kt)("h2",{id:"funding-the-treasury"},"Funding the Treasury"),(0,r.kt)("p",null,"The Treasury is funded from different sources:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Slashing: When a validator is slashed for any reason, the slashed amount is sent to the Treasury\nwith a reward going to the entity that reported the validator (another validator). The reward is\ntaken from the slash amount and varies per offence and number of reporters."),(0,r.kt)("li",{parentName:"ol"},"Transaction fees: A portion of each block's transaction fees goes to the Treasury, with the\nremainder going to the block author."),(0,r.kt)("li",{parentName:"ol"},"Staking inefficiency: ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-staking#inflation"},"Inflation")," is designed to be 10% in the\nfirst year, and the ideal staking ratio is set at 50%, meaning half of all tokens should be\nlocked in staking. Any deviation from this ratio will cause a proportional amount of the\ninflation to go to the Treasury. In other words, if 50% of all tokens are staked, then 100% of\nthe inflation goes to the validators as reward. If the staking rate is greater than or less than\n50%, then the validators will receive less, with the remainder going to the Treasury."),(0,r.kt)("li",{parentName:"ol"},"Parathreads: ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-parathreads"},"Parathreads")," participate in a per-block auction for block\ninclusion. Part of this bid goes to the validator that accepts the block and the remainder goes\nto the Treasury.")),(0,r.kt)("h2",{id:"tipping"},"Tipping"),(0,r.kt)("p",null,"Next to the proposals process, a separate system for making tips exists for the Treasury. Tips can\nbe suggested by anyone and are supported by members of the Council. Tips do not have any definite\nvalue, and the final value of the tip is decided based on the median of all tips issued by the\ntippers."),(0,r.kt)("p",null,"Currently, the tippers are the same as the members of the Council. However, being a tipper is not\nthe direct responsibility of the Council, and at some point the Council and the tippers may be\ndifferent groups of accounts."),(0,r.kt)("p",null,"A tip will enter a closing phase when more than a half plus one of the tipping group have endorsed a\ntip. During that time frame, the other members of the tipping group can still issue their tips, but\ndo not have to. Once the window closes, anyone can call the ",(0,r.kt)("inlineCode",{parentName:"p"},"close_tip")," extrinsic, and the tip will\nbe paid out."),(0,r.kt)("p",null,"There are two types of tips:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"public: A small bond is required to place them. This bond depends on the tip message length, and a\nfixed bond constant defined on chain, currently 1 DOT.\nPublic tips carry a finder's fee of\n20%, which is paid out from the total amount."),(0,r.kt)("li",{parentName:"ul"},"tipper-initiated: Tips that a Council member published, do not have a finder's fee or a bond.")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For information about how to submit a tip from the Treasury you can read\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181971"},"this support article"),".")),(0,r.kt)("p",null,"To better understand the process a tip goes through until it is paid out, let's consider the example\nbelow."),(0,r.kt)("h3",{id:"example"},"Example"),(0,r.kt)("p",null,"Bob has done something great for Polkadot.\nAlice has noticed this and decides to report Bob as deserving a tip from the Treasury. The Council\nis composed of three members Charlie, Dave, and Eve."),(0,r.kt)("p",null,"Alice begins the process by issuing the ",(0,r.kt)("inlineCode",{parentName:"p"},"report_awesome")," extrinsic. This extrinsic requires two\narguments, a reason and the beneficiary. Alice submits Bob's address with the reason being a UTF-8\nencoded URL to a post on ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io"},"Polkassembly"),"\n"," that explains her reasoning for\nwhy Bob deserves the tip."),(0,r.kt)("p",null,"As mentioned above, Alice must also lock up a deposit for making this report. The deposit is the\nbase deposit as set in the chain's parameter list, plus the additional deposit per byte contained in\nthe reason. This is why Alice submitted a URL as the reason instead of the explanation directly: it\nwas cheaper for her to do so. For her trouble, Alice is able to claim the eventual finder's fee if\nthe tip is approved by the tippers."),(0,r.kt)("p",null,"Since the tipper group is the same as the Council, the Council must now collectively (but also\nindependently) decide on the value of the tip that Bob deserves. Charlie, Dave, and Eve all review\nthe report and make tips according to their personal valuation of the benefit Bob has provided to\nPolkadot. Charlie tips\n10 DOT, Dave tips\n30 DOT, and Eve tips\n100 DOT."),(0,r.kt)("p",null,"The tip could have been closed out with only two of the three tippers. Once more than half of the\ntippers group have issued tip valuations, the countdown to close the tip will begin. In this case,\nthe third tipper issued their tip before the end of the closing period, so all three were able to\nmake their tip valuations known."),(0,r.kt)("p",null,"The actual tip that will be paid out to Bob is the median of these tips, so Bob will be paid out\n30 DOT from the Treasury. In order for Bob to\nbe paid his tip, some account must call the ",(0,r.kt)("inlineCode",{parentName:"p"},"close_tip")," extrinsic at the end of the closing period\nfor the tip. This extrinsic may be called by anyone."),(0,r.kt)("h2",{id:"bounties-spending"},"Bounties Spending"),(0,r.kt)("p",null,"There are practical limits to Council Members curation capabilities when it comes to treasury\nproposals: Council members likely do not have the expertise to make a proper assessment of the\nactivities described in all proposals. Even if individual Councillors have that expertise, it is\nhighly unlikely that a majority of members are capable in such diverse topics."),(0,r.kt)("p",null,"Bounties Spending proposals aim to delegate the curation activity of spending proposals to experts\ncalled Curators: They can be defined as addresses with agency over a portion of the Treasury with\nthe goal of fixing a bug or vulnerability, developing a strategy, or monitoring a set of tasks\nrelated to a specific topic: all for the benefit of the\nPolkadot ecosystem."),(0,r.kt)("p",null,"A proposer can submit a bounty proposal for the Council to pass, with a curator to be defined later,\nwhose background and expertise is such that they are capable of determining when the task is\ncomplete. Curators are selected by the Council after the bounty proposal passes, and need to add an\nupfront payment to take the position. This deposit can be used to punish them if they act\nmaliciously. However, if they are successful in their task of getting someone to complete the bounty\nwork, they will receive their deposit back and part of the bounty reward."),(0,r.kt)("p",null,"When submitting the value of the bounty, the proposer includes a reward for curators willing to\ninvest their time and expertise in the task: this amount is included in the total value of the\nbounty. In this sense, the curator's fee can be defined as the result of subtracting the value paid\nto the bounty rewardee from the total value of the bounty."),(0,r.kt)("p",null,"In general terms, curators are expected to have a well-balanced track record related to the issues\nthe bounty tries to resolve: they should be at least knowledgeable on the topics the bounty touches,\nand show project management skills or experience. These recommendations ensure an effective use of\nthe mechanism. A Bounty Spending is a reward for a specified body of work - or specified set of\nobjectives - that needs to be executed for a predefined treasury amount to be paid out. The\nresponsibility of assigning a payout address once the specified set of objectives is completed is\ndelegated to the curator."),(0,r.kt)("p",null,"After the Council has activated a bounty, it delegates the work that requires expertise to the\ncurator who gets to close the active bounty. Closing the active bounty enacts a delayed payout to\nthe payout address and a payout of the curator fee. The delay phase allows the Council to act if any\nissues arise."),(0,r.kt)("p",null,"To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will probably need to find an\noff-chain way to explain the proposal (any of the available community forums serve this purpose).\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing"},"This template"),"\ncan help as a checklist of all needed information for the Council to make an informed decision."),(0,r.kt)("p",null,"The bounty has a predetermined duration of 90 days with the possibility of being extended by the\ncurator. Aiming to maintain flexibility on the tasks\u2019 curation, the curator will be able to create\nsub-bounties for more granularity and allocation in the next iteration of the mechanism."),(0,r.kt)("h3",{id:"creating-a-bounty-proposal"},"Creating a Bounty Proposal"),(0,r.kt)("p",null,"Anyone can create a Bounty proposal using Polkadot-JS Apps: Users are able to submit a proposal on\nthe dedicated Bounty section under Governance. The development of a robust user interface to view\nand manage bounties in the Polkadot Apps is still under development and it will serve Council\nmembers, Curators and Beneficiaries of the bounties, as well as all users observing the on-chain\ntreasury governance. For now, the help of a Councillor is needed to open a bounty proposal as a\nmotion to be voted."),(0,r.kt)("p",null,"To submit a bounty, please visit ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS Apps")," and click on the\ngovernance tab in the options bar on the top of the site. After, click on 'Bounties' and find the\nbutton '+ Add Bounty' on the upper-right side of the interface. Complete the bounty title, the\nrequested allocation (including curator's fee) and confirm the call."),(0,r.kt)("p",null,"After this, a Council member will need to assist you to pass the bounty proposal for vote as a\nmotion. You can contact the Council by joining the\nPolkadot Direction ",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"channel"),"\n"," in\nElement or joining our\nPolkadot Discord ",(0,r.kt)("a",{parentName:"p",href:"https://parity.link/polkadot-discord"},"server"),"\n"," and publishing a\nshort description of your bounty, with a link to one of the ",(0,r.kt)("a",{parentName:"p",href:"#announcing-the-proposal"},"forums")," for\ncontextual information."),(0,r.kt)("p",null,"A bounty can be cancelled by deleting the earmark for a specific treasury amount or be closed if the\ntasks have been completed. On the opposite side, the 90 days life of a bounty can be extended by\namending the expiry block number of the bounty to stay active."),(0,r.kt)("h3",{id:"closing-a-bounty"},"Closing a bounty"),(0,r.kt)("p",null,"The curator can close the bounty once they approve the completion of its tasks. The curator should\nmake sure to set up the payout address on the active bounty beforehand. Closing the Active bounty\nenacts a delayed payout to the payout address and a payout of the curator fee."),(0,r.kt)("p",null,"A bounty can be closed by using the extrinsics tab and selecting the Treasury pallet, then\n",(0,r.kt)("inlineCode",{parentName:"p"},"Award_bounty"),", making sure the right bounty is to be closed and finally sign the transaction. It is\nimportant to note that those who received a reward after the bounty is completed, must claim the\nspecific amount of the payout from the payout address, by calling ",(0,r.kt)("inlineCode",{parentName:"p"},"Claim_bounty")," after the curator\nclosed the allocation."),(0,r.kt)("p",null,"To understand more about Bounties and how this new mechanism works, read this\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/kusama-and-polkadot-now-reward-curators-helping-to-scale-councils-functions-join-the-force-moving-the-community-forward/"},"Polkadot Blog post"),"."),(0,r.kt)("h2",{id:"faq"},"FAQ"),(0,r.kt)("h3",{id:"what-prevents-the-treasury-from-being-captured-by-a-majority-of-the-council"},"What prevents the Treasury from being captured by a majority of the Council?"),(0,r.kt)("p",null,"The majority of the Council can decide the outcome of a treasury spend proposal. In an adversarial\nmindset, we may consider the possibility that the Council may at some point go rogue and attempt to\nsteal all of the treasury funds. It is a possibility that the treasury pot becomes so great, that a\nlarge financial incentive would present itself."),(0,r.kt)("p",null,"For one, the Treasury has deflationary pressure due to the burn that is suffered every spend period.\nThe burn aims to incentivize the complete spend of all treasury funds at every burn period, so\nideally the treasury pot doesn't have time to accumulate mass amounts of wealth. However, it is the\ncase that the burn on the Treasury could be so little that it does not matter - as is the case\ncurrently on Kusama with a 0.2% burn."),(0,r.kt)("p",null,"However, it is the case on Kusama that the Council is composed of mainly well-known members of the\ncommunity. Remember, the Council is voted in by the token holders, so they must do some campaigning\nor otherwise be recognized to earn votes. In the scenario of an attack, the Council members would\nlose their social credibility. Furthermore, members of the Council are usually externally motivated\nby the proper operation of the chain. This external motivation is either because they run businesses\nthat depend on the chain, or they have direct financial gain (through their holdings) of the token\nvalue remaining steady."),(0,r.kt)("p",null,"Concretely, there are a couple on-chain methods that resist this kind of attack. One, the Council\nmajority may not be the token majority of the chain. This means that the token majority could vote\nto replace the Council if they attempted this attack - or even reverse the treasury spend. They\nwould do this through a normal referendum. Two, there are time delays to treasury spends. They are\nonly enacted every spend period. This means that there will be some time to observe this attack is\ntaking place. The time delay then allows chain participants time to respond. The response may take\nthe form of governance measures or - in the most extreme cases a liquidation of their holdings and a\nmigration to a minority fork. However, the possibility of this scenario is quite low."),(0,r.kt)("h2",{id:"further-reading"},"Further Reading"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/frame/treasury/src/lib.rs"},"Substrate's Treasury Pallet"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_treasury/index.html"},"Documentation of the Rust implementation of the Treasury")))))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/06597bc8.109d1bb8.js b/assets/js/06597bc8.109d1bb8.js deleted file mode 100644 index 9169ae9417ab..000000000000 --- a/assets/js/06597bc8.109d1bb8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9856],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=p(n),c=o,m=h["".concat(l,".").concat(c)]||h[c]||d[c]||r;return n?a.createElement(m,i(i({ref:t},u),{},{components:n})):a.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>p,toc:()=>h});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),i=["components"],s={id:"learn-treasury",title:"Governance v1 Treasury",sidebar_label:"Gov1 Treasury",description:"The Polkadot's On-chain Treasury during Gov1.",keywords:["treasury","funds","funding","tips","tipping"],slug:"../learn-treasury"},l=void 0,p={unversionedId:"learn/archive/learn-treasury",id:"learn/archive/learn-treasury",title:"Governance v1 Treasury",description:"The Polkadot's On-chain Treasury during Gov1.",source:"@site/../docs/learn/archive/learn-treasury.md",sourceDirName:"learn/archive",slug:"/learn/learn-treasury",permalink:"/docs/learn/learn-treasury",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-treasury.md",tags:[],version:"current",lastUpdatedBy:"gui",lastUpdatedAt:1712067554,formattedLastUpdatedAt:"Apr 2, 2024",frontMatter:{id:"learn-treasury",title:"Governance v1 Treasury",sidebar_label:"Gov1 Treasury",description:"The Polkadot's On-chain Treasury during Gov1.",keywords:["treasury","funds","funding","tips","tipping"],slug:"../learn-treasury"},sidebar:"docs",previous:{title:"Governance V1",permalink:"/docs/learn/learn-governance"},next:{title:"Polkadot Launch Phases",permalink:"/docs/learn/learn-launch"}},u={},h=[{value:"Funding the Treasury",id:"funding-the-treasury",level:2},{value:"Tipping",id:"tipping",level:2},{value:"Example",id:"example",level:3},{value:"Bounties Spending",id:"bounties-spending",level:2},{value:"Creating a Bounty Proposal",id:"creating-a-bounty-proposal",level:3},{value:"Closing a bounty",id:"closing-a-bounty",level:3},{value:"FAQ",id:"faq",level:2},{value:"What prevents the Treasury from being captured by a majority of the Council?",id:"what-prevents-the-treasury-from-being-captured-by-a-majority-of-the-council",level:3},{value:"Further Reading",id:"further-reading",level:2}],d={toc:h},c="wrapper";function m(e){var t=e.components,n=(0,o.Z)(e,i);return(0,r.kt)(c,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"The content on this page is archived. For up-to-date information about treasury, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury"},"Polkadot OpenGov Treasury page"),".")),(0,r.kt)("p",null,"The Treasury is a pot of funds collected through a portion of block production rewards, transaction\nfees, slashing, ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking#inflation"},"staking inefficiencies"),", etc."),(0,r.kt)("p",null,"The Treasury funds are held in a ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-account-advanced#system-accounts"},"system account")," not\naccessible by anyone; only the system internal logic can access it. Funds can be spent by making a\nspending proposal that, if approved by the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"Council"),", will enter a\nwaiting period before distribution. This waiting period is known as the ",(0,r.kt)("em",{parentName:"p"},"spend period"),", and its\nduration is subject to ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"governance"),", with the current default set to\n28 days. The Treasury attempts to spend as many\nproposals in the queue as it can without running out of funds."),(0,r.kt)("p",null,"Treasury payout is an automatic process:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"If the Treasury funds run out with approved proposals left to fund, those proposals are kept in\nthe approved queue, and will receive funding in the following spend period."),(0,r.kt)("li",{parentName:"ul"},"If the Treasury ends a spend period without spending all of its funds, it suffers a burn of a\npercentage of its funds - thereby causing deflationary pressure. This encourages the spending of\nthe funds in the Treasury by Polkadot's governance system.\nThis percentage is currently at 1% on Polkadot.\n","")),(0,r.kt)("p",null,"When a stakeholder wishes to propose a spend from the Treasury, they must reserve a deposit of at\nleast 5% of the proposed spend (see below for variations). This deposit will be slashed if the\nproposal is rejected, and returned if it is accepted."),(0,r.kt)("p",null,"Proposals may consist of (but are not limited to):"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Infrastructure deployment and continued operation."),(0,r.kt)("li",{parentName:"ul"},"Network security operations (monitoring services, continuous auditing)."),(0,r.kt)("li",{parentName:"ul"},"Ecosystem provisions (collaborations with friendly chains)."),(0,r.kt)("li",{parentName:"ul"},"Marketing activities (advertising, paid features, collaborations)."),(0,r.kt)("li",{parentName:"ul"},"Community events and outreach (meetups, pizza parties, hackerspaces)."),(0,r.kt)("li",{parentName:"ul"},"Software development (wallets and wallet integration, clients and client upgrades).")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"learn-governance#council"},"Council")," governs the Treasury and how the funds are spent is up to\ntheir judgment."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The Council does not approve or deny Treasury Proposals based on the available funds. Proposals are\nnot approved just because there are funds ready to spend but are subject to a burn.")),(0,r.kt)("h2",{id:"funding-the-treasury"},"Funding the Treasury"),(0,r.kt)("p",null,"The Treasury is funded from different sources:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Slashing: When a validator is slashed for any reason, the slashed amount is sent to the Treasury\nwith a reward going to the entity that reported the validator (another validator). The reward is\ntaken from the slash amount and varies per offence and number of reporters."),(0,r.kt)("li",{parentName:"ol"},"Transaction fees: A portion of each block's transaction fees goes to the Treasury, with the\nremainder going to the block author."),(0,r.kt)("li",{parentName:"ol"},"Staking inefficiency: ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-staking#inflation"},"Inflation")," is designed to be 10% in the\nfirst year, and the ideal staking ratio is set at 50%, meaning half of all tokens should be\nlocked in staking. Any deviation from this ratio will cause a proportional amount of the\ninflation to go to the Treasury. In other words, if 50% of all tokens are staked, then 100% of\nthe inflation goes to the validators as reward. If the staking rate is greater than or less than\n50%, then the validators will receive less, with the remainder going to the Treasury."),(0,r.kt)("li",{parentName:"ol"},"Parathreads: ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-parathreads"},"Parathreads")," participate in a per-block auction for block\ninclusion. Part of this bid goes to the validator that accepts the block and the remainder goes\nto the Treasury.")),(0,r.kt)("h2",{id:"tipping"},"Tipping"),(0,r.kt)("p",null,"Next to the proposals process, a separate system for making tips exists for the Treasury. Tips can\nbe suggested by anyone and are supported by members of the Council. Tips do not have any definite\nvalue, and the final value of the tip is decided based on the median of all tips issued by the\ntippers."),(0,r.kt)("p",null,"Currently, the tippers are the same as the members of the Council. However, being a tipper is not\nthe direct responsibility of the Council, and at some point the Council and the tippers may be\ndifferent groups of accounts."),(0,r.kt)("p",null,"A tip will enter a closing phase when more than a half plus one of the tipping group have endorsed a\ntip. During that time frame, the other members of the tipping group can still issue their tips, but\ndo not have to. Once the window closes, anyone can call the ",(0,r.kt)("inlineCode",{parentName:"p"},"close_tip")," extrinsic, and the tip will\nbe paid out."),(0,r.kt)("p",null,"There are two types of tips:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"public: A small bond is required to place them. This bond depends on the tip message length, and a\nfixed bond constant defined on chain, currently 1 DOT.\nPublic tips carry a finder's fee of\n20%, which is paid out from the total amount."),(0,r.kt)("li",{parentName:"ul"},"tipper-initiated: Tips that a Council member published, do not have a finder's fee or a bond.")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For information about how to submit a tip from the Treasury you can read\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181971"},"this support article"),".")),(0,r.kt)("p",null,"To better understand the process a tip goes through until it is paid out, let's consider the example\nbelow."),(0,r.kt)("h3",{id:"example"},"Example"),(0,r.kt)("p",null,"Bob has done something great for Polkadot.\nAlice has noticed this and decides to report Bob as deserving a tip from the Treasury. The Council\nis composed of three members Charlie, Dave, and Eve."),(0,r.kt)("p",null,"Alice begins the process by issuing the ",(0,r.kt)("inlineCode",{parentName:"p"},"report_awesome")," extrinsic. This extrinsic requires two\narguments, a reason and the beneficiary. Alice submits Bob's address with the reason being a UTF-8\nencoded URL to a post on ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io"},"Polkassembly"),"\n"," that explains her reasoning for\nwhy Bob deserves the tip."),(0,r.kt)("p",null,"As mentioned above, Alice must also lock up a deposit for making this report. The deposit is the\nbase deposit as set in the chain's parameter list, plus the additional deposit per byte contained in\nthe reason. This is why Alice submitted a URL as the reason instead of the explanation directly: it\nwas cheaper for her to do so. For her trouble, Alice is able to claim the eventual finder's fee if\nthe tip is approved by the tippers."),(0,r.kt)("p",null,"Since the tipper group is the same as the Council, the Council must now collectively (but also\nindependently) decide on the value of the tip that Bob deserves. Charlie, Dave, and Eve all review\nthe report and make tips according to their personal valuation of the benefit Bob has provided to\nPolkadot. Charlie tips\n10 DOT, Dave tips\n30 DOT, and Eve tips\n100 DOT."),(0,r.kt)("p",null,"The tip could have been closed out with only two of the three tippers. Once more than half of the\ntippers group have issued tip valuations, the countdown to close the tip will begin. In this case,\nthe third tipper issued their tip before the end of the closing period, so all three were able to\nmake their tip valuations known."),(0,r.kt)("p",null,"The actual tip that will be paid out to Bob is the median of these tips, so Bob will be paid out\n30 DOT from the Treasury. In order for Bob to\nbe paid his tip, some account must call the ",(0,r.kt)("inlineCode",{parentName:"p"},"close_tip")," extrinsic at the end of the closing period\nfor the tip. This extrinsic may be called by anyone."),(0,r.kt)("h2",{id:"bounties-spending"},"Bounties Spending"),(0,r.kt)("p",null,"There are practical limits to Council Members curation capabilities when it comes to treasury\nproposals: Council members likely do not have the expertise to make a proper assessment of the\nactivities described in all proposals. Even if individual Councillors have that expertise, it is\nhighly unlikely that a majority of members are capable in such diverse topics."),(0,r.kt)("p",null,"Bounties Spending proposals aim to delegate the curation activity of spending proposals to experts\ncalled Curators: They can be defined as addresses with agency over a portion of the Treasury with\nthe goal of fixing a bug or vulnerability, developing a strategy, or monitoring a set of tasks\nrelated to a specific topic: all for the benefit of the\nPolkadot ecosystem."),(0,r.kt)("p",null,"A proposer can submit a bounty proposal for the Council to pass, with a curator to be defined later,\nwhose background and expertise is such that they are capable of determining when the task is\ncomplete. Curators are selected by the Council after the bounty proposal passes, and need to add an\nupfront payment to take the position. This deposit can be used to punish them if they act\nmaliciously. However, if they are successful in their task of getting someone to complete the bounty\nwork, they will receive their deposit back and part of the bounty reward."),(0,r.kt)("p",null,"When submitting the value of the bounty, the proposer includes a reward for curators willing to\ninvest their time and expertise in the task: this amount is included in the total value of the\nbounty. In this sense, the curator's fee can be defined as the result of subtracting the value paid\nto the bounty rewardee from the total value of the bounty."),(0,r.kt)("p",null,"In general terms, curators are expected to have a well-balanced track record related to the issues\nthe bounty tries to resolve: they should be at least knowledgeable on the topics the bounty touches,\nand show project management skills or experience. These recommendations ensure an effective use of\nthe mechanism. A Bounty Spending is a reward for a specified body of work - or specified set of\nobjectives - that needs to be executed for a predefined treasury amount to be paid out. The\nresponsibility of assigning a payout address once the specified set of objectives is completed is\ndelegated to the curator."),(0,r.kt)("p",null,"After the Council has activated a bounty, it delegates the work that requires expertise to the\ncurator who gets to close the active bounty. Closing the active bounty enacts a delayed payout to\nthe payout address and a payout of the curator fee. The delay phase allows the Council to act if any\nissues arise."),(0,r.kt)("p",null,"To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will probably need to find an\noff-chain way to explain the proposal (any of the available community forums serve this purpose).\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing"},"This template"),"\ncan help as a checklist of all needed information for the Council to make an informed decision."),(0,r.kt)("p",null,"The bounty has a predetermined duration of 90 days with the possibility of being extended by the\ncurator. Aiming to maintain flexibility on the tasks\u2019 curation, the curator will be able to create\nsub-bounties for more granularity and allocation in the next iteration of the mechanism."),(0,r.kt)("h3",{id:"creating-a-bounty-proposal"},"Creating a Bounty Proposal"),(0,r.kt)("p",null,"Anyone can create a Bounty proposal using Polkadot-JS Apps: Users are able to submit a proposal on\nthe dedicated Bounty section under Governance. The development of a robust user interface to view\nand manage bounties in the Polkadot Apps is still under development and it will serve Council\nmembers, Curators and Beneficiaries of the bounties, as well as all users observing the on-chain\ntreasury governance. For now, the help of a Councillor is needed to open a bounty proposal as a\nmotion to be voted."),(0,r.kt)("p",null,"To submit a bounty, please visit ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS Apps")," and click on the\ngovernance tab in the options bar on the top of the site. After, click on 'Bounties' and find the\nbutton '+ Add Bounty' on the upper-right side of the interface. Complete the bounty title, the\nrequested allocation (including curator's fee) and confirm the call."),(0,r.kt)("p",null,"After this, a Council member will need to assist you to pass the bounty proposal for vote as a\nmotion. You can contact the Council by joining the\nPolkadot Direction ",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"channel"),"\n"," in\nElement or joining our\nPolkadot Discord ",(0,r.kt)("a",{parentName:"p",href:"https://parity.link/polkadot-discord"},"server"),"\n"," and publishing a\nshort description of your bounty, with a link to one of the ",(0,r.kt)("a",{parentName:"p",href:"#announcing-the-proposal"},"forums")," for\ncontextual information."),(0,r.kt)("p",null,"A bounty can be cancelled by deleting the earmark for a specific treasury amount or be closed if the\ntasks have been completed. On the opposite side, the 90 days life of a bounty can be extended by\namending the expiry block number of the bounty to stay active."),(0,r.kt)("h3",{id:"closing-a-bounty"},"Closing a bounty"),(0,r.kt)("p",null,"The curator can close the bounty once they approve the completion of its tasks. The curator should\nmake sure to set up the payout address on the active bounty beforehand. Closing the Active bounty\nenacts a delayed payout to the payout address and a payout of the curator fee."),(0,r.kt)("p",null,"A bounty can be closed by using the extrinsics tab and selecting the Treasury pallet, then\n",(0,r.kt)("inlineCode",{parentName:"p"},"Award_bounty"),", making sure the right bounty is to be closed and finally sign the transaction. It is\nimportant to note that those who received a reward after the bounty is completed, must claim the\nspecific amount of the payout from the payout address, by calling ",(0,r.kt)("inlineCode",{parentName:"p"},"Claim_bounty")," after the curator\nclosed the allocation."),(0,r.kt)("p",null,"To understand more about Bounties and how this new mechanism works, read this\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/kusama-and-polkadot-now-reward-curators-helping-to-scale-councils-functions-join-the-force-moving-the-community-forward/"},"Polkadot Blog post"),"."),(0,r.kt)("h2",{id:"faq"},"FAQ"),(0,r.kt)("h3",{id:"what-prevents-the-treasury-from-being-captured-by-a-majority-of-the-council"},"What prevents the Treasury from being captured by a majority of the Council?"),(0,r.kt)("p",null,"The majority of the Council can decide the outcome of a treasury spend proposal. In an adversarial\nmindset, we may consider the possibility that the Council may at some point go rogue and attempt to\nsteal all of the treasury funds. It is a possibility that the treasury pot becomes so great, that a\nlarge financial incentive would present itself."),(0,r.kt)("p",null,"For one, the Treasury has deflationary pressure due to the burn that is suffered every spend period.\nThe burn aims to incentivize the complete spend of all treasury funds at every burn period, so\nideally the treasury pot doesn't have time to accumulate mass amounts of wealth. However, it is the\ncase that the burn on the Treasury could be so little that it does not matter - as is the case\ncurrently on Kusama with a 0.2% burn."),(0,r.kt)("p",null,"However, it is the case on Kusama that the Council is composed of mainly well-known members of the\ncommunity. Remember, the Council is voted in by the token holders, so they must do some campaigning\nor otherwise be recognized to earn votes. In the scenario of an attack, the Council members would\nlose their social credibility. Furthermore, members of the Council are usually externally motivated\nby the proper operation of the chain. This external motivation is either because they run businesses\nthat depend on the chain, or they have direct financial gain (through their holdings) of the token\nvalue remaining steady."),(0,r.kt)("p",null,"Concretely, there are a couple on-chain methods that resist this kind of attack. One, the Council\nmajority may not be the token majority of the chain. This means that the token majority could vote\nto replace the Council if they attempted this attack - or even reverse the treasury spend. They\nwould do this through a normal referendum. Two, there are time delays to treasury spends. They are\nonly enacted every spend period. This means that there will be some time to observe this attack is\ntaking place. The time delay then allows chain participants time to respond. The response may take\nthe form of governance measures or - in the most extreme cases a liquidation of their holdings and a\nmigration to a minority fork. However, the possibility of this scenario is quite low."),(0,r.kt)("h2",{id:"further-reading"},"Further Reading"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/frame/treasury/src/lib.rs"},"Substrate's Treasury Pallet"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_treasury/index.html"},"Documentation of the Rust implementation of the Treasury")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/078895e8.42600545.js b/assets/js/078895e8.42600545.js deleted file mode 100644 index d91f59a833c8..000000000000 --- a/assets/js/078895e8.42600545.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[740],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}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 s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),i=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=i(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=i(n),h=o,g=u["".concat(c,".").concat(h)]||u[h]||p[h]||a;return n?r.createElement(g,s(s({ref:t},d),{},{components:n})):r.createElement(g,s({ref:t},d))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:o,s[1]=l;for(var i=2;i{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>g,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var r=n(87462),o=n(63366),a=(n(67294),n(3905)),s=["components"],l={id:"learn-controller",title:"Controller Accounts",sidebar_label:"Controller Accounts",description:"Controller Accounts used in Staking.",keywords:["nominated proof of stake","staking","controller"],slug:"../learn-controller"},c=void 0,i={unversionedId:"learn/archive/learn-controller",id:"learn/archive/learn-controller",title:"Controller Accounts",description:"Controller Accounts used in Staking.",source:"@site/../docs/learn/archive/learn-controller.md",sourceDirName:"learn/archive",slug:"/learn/learn-controller",permalink:"/docs/learn/learn-controller",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-controller.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"learn-controller",title:"Controller Accounts",sidebar_label:"Controller Accounts",description:"Controller Accounts used in Staking.",keywords:["nominated proof of stake","staking","controller"],slug:"../learn-controller"},sidebar:"docs",previous:{title:"Redenomination of DOT",permalink:"/docs/learn/learn-redenomination"},next:{title:"Polkadot Developer Portal",permalink:"/docs/build-guide"}},d={},u=[{value:"Stash as Controller",id:"stash-as-controller",level:2},{value:"Stash not as Controller",id:"stash-not-as-controller",level:2}],p={toc:u},h="wrapper";function g(e){var t=e.components,l=(0,o.Z)(e,s);return(0,a.kt)(h,(0,r.Z)({},p,l,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"sticky",style:{zIndex:1}},(0,a.kt)("br",null),(0,a.kt)("p",null,"The content on this page is archived. Controller accounts are deprecated. For more information, see\n",(0,a.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748"},"this discussion"),".")),(0,a.kt)("p",null,'Controller accounts were used for staking and were a "less-powerful" version of staking proxies.\nControllers could only sign for unbonding and rebonding funds, nominating and changing the reward\ndestination. The stash account was still used to bond more funds and change the controller.\nController accounts became redundant and added unnecessary complexity to the staking mechanics.'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"controller-accounts",src:n(2203).Z,width:"1920",height:"800"})),(0,a.kt)("p",null,"With the setup shown above, the stash account was not entirely isolated. More complicated designs to\nfully isolate the stash account included having both controller and staking proxies (see below)."),(0,a.kt)("h2",{id:"stash-as-controller"},"Stash as Controller"),(0,a.kt)("p",null,"It was unnecessary to have a controller if you had a staking proxy. In this case the stash was also\nset to be the controller, and the account security would not have been compromised. The staking\nproxy was used to sign all staking-relate transactions. Note that you needed to sign with the stash\nto change the staking proxy."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"stash-as-controller",src:n(55602).Z,width:"1920",height:"800"})),(0,a.kt)("p",null,'This past situation was similar to the present setup, except that now there is no option to set the\nstash as controller and that the action of "changing the controller" is missing. From a practical\nperspective, we need to use only one account and remember one password to sign for all\nstaking-related transactions. From a security perspective, who controls the staking proxy controls\nour staking actions.'),(0,a.kt)("h2",{id:"stash-not-as-controller"},"Stash not as Controller"),(0,a.kt)("p",null,"If the stash and controller were different accounts, the staking proxy was used to bond more funds\nand change the controller. Thus the staking proxy was used to sign for those transactions that were\nused less often and usually signed by the stash."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"stash-not-as-controller",src:n(62776).Z,width:"1920",height:"800"})),(0,a.kt)("p",null,"From a practical perspective, there were two accounts, and we needed to remember two passwords. From\na security perspective, the party who wanted to control our staking actions was required to control\ntwo accounts."))}g.isMDXComponent=!0},55602:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/stash-as-controller-b9840d38c845fce713390da24c60e4a4.png"},2203:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/stash-controller-978875461a51b1f2689c22bdadfde1e4.png"},62776:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/stash-not-as-controller-8a6c27ea620379446da133a42f860029.png"}}]); \ No newline at end of file diff --git a/assets/js/078895e8.fe6b97e6.js b/assets/js/078895e8.fe6b97e6.js new file mode 100644 index 000000000000..e4932432ba53 --- /dev/null +++ b/assets/js/078895e8.fe6b97e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[740],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}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 s(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),i=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=i(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=i(n),h=o,m=u["".concat(c,".").concat(h)]||u[h]||p[h]||a;return n?r.createElement(m,s(s({ref:t},d),{},{components:n})):r.createElement(m,s({ref:t},d))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:o,s[1]=l;for(var i=2;i{n.d(t,{Z:()=>o});var r=n(67294);const o=function(e){var t,n=e.message,o=(0,r.useState)(!0),a=o[0],s=o[1];return r.createElement(r.Fragment,null,a&&r.createElement("div",{className:"message-box"},r.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),r.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},82681:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>g,frontMatter:()=>c,metadata:()=>d,toc:()=>p});var r=n(87462),o=n(63366),a=(n(67294),n(3905)),s=n(35703),l=["components"],c={id:"learn-controller",title:"Controller Accounts",sidebar_label:"Controller Accounts",description:"Controller Accounts used in Staking.",keywords:["nominated proof of stake","staking","controller"],slug:"../learn-controller"},i=void 0,d={unversionedId:"learn/archive/learn-controller",id:"learn/archive/learn-controller",title:"Controller Accounts",description:"Controller Accounts used in Staking.",source:"@site/../docs/learn/archive/learn-controller.md",sourceDirName:"learn/archive",slug:"/learn/learn-controller",permalink:"/docs/learn/learn-controller",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-controller.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-controller",title:"Controller Accounts",sidebar_label:"Controller Accounts",description:"Controller Accounts used in Staking.",keywords:["nominated proof of stake","staking","controller"],slug:"../learn-controller"},sidebar:"docs",previous:{title:"Redenomination of DOT",permalink:"/docs/learn/learn-redenomination"},next:{title:"Polkadot Developer Portal",permalink:"/docs/build-guide"}},u={},p=[{value:"Stash as Controller",id:"stash-as-controller",level:2},{value:"Stash not as Controller",id:"stash-not-as-controller",level:2}],h={toc:p},m="wrapper";function g(e){var t=e.components,c=(0,o.Z)(e,l);return(0,a.kt)(m,(0,r.Z)({},h,c,{components:t,mdxType:"MDXLayout"}),(0,a.kt)(s.Z,{message:"The content on this page is archived. Controller accounts are deprecated. For more information, see\n[this discussion](https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748).",mdxType:"MessageBox"}),(0,a.kt)("p",null,'Controller accounts were used for staking and were a "less-powerful" version of staking proxies.\nControllers could only sign for unbonding and rebonding funds, nominating and changing the reward\ndestination. The stash account was still used to bond more funds and change the controller.\nController accounts became redundant and added unnecessary complexity to the staking mechanics.'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"controller-accounts",src:n(2203).Z,width:"1920",height:"800"})),(0,a.kt)("p",null,"With the setup shown above, the stash account was not entirely isolated. More complicated designs to\nfully isolate the stash account included having both controller and staking proxies (see below)."),(0,a.kt)("h2",{id:"stash-as-controller"},"Stash as Controller"),(0,a.kt)("p",null,"It was unnecessary to have a controller if you had a staking proxy. In this case the stash was also\nset to be the controller, and the account security would not have been compromised. The staking\nproxy was used to sign all staking-relate transactions. Note that you needed to sign with the stash\nto change the staking proxy."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"stash-as-controller",src:n(55602).Z,width:"1920",height:"800"})),(0,a.kt)("p",null,'This past situation was similar to the present setup, except that now there is no option to set the\nstash as controller and that the action of "changing the controller" is missing. From a practical\nperspective, we need to use only one account and remember one password to sign for all\nstaking-related transactions. From a security perspective, who controls the staking proxy controls\nour staking actions.'),(0,a.kt)("h2",{id:"stash-not-as-controller"},"Stash not as Controller"),(0,a.kt)("p",null,"If the stash and controller were different accounts, the staking proxy was used to bond more funds\nand change the controller. Thus the staking proxy was used to sign for those transactions that were\nused less often and usually signed by the stash."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"stash-not-as-controller",src:n(62776).Z,width:"1920",height:"800"})),(0,a.kt)("p",null,"From a practical perspective, there were two accounts, and we needed to remember two passwords. From\na security perspective, the party who wanted to control our staking actions was required to control\ntwo accounts."))}g.isMDXComponent=!0},55602:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/stash-as-controller-b9840d38c845fce713390da24c60e4a4.png"},2203:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/stash-controller-978875461a51b1f2689c22bdadfde1e4.png"},62776:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/stash-not-as-controller-8a6c27ea620379446da133a42f860029.png"}}]); \ No newline at end of file diff --git a/assets/js/0eeb7a68.31115489.js b/assets/js/0eeb7a68.31115489.js deleted file mode 100644 index e0eec447249f..000000000000 --- a/assets/js/0eeb7a68.31115489.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1713],{3905:(e,t,s)=>{s.d(t,{Zo:()=>c,kt:()=>b});var a=s(67294);function n(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function r(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,a)}return s}function o(e){for(var t=1;t=0||(n[s]=e[s]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,s)&&(n[s]=e[s])}return n}var d=a.createContext({}),u=function(e){var t=a.useContext(d),s=t;return e&&(s="function"==typeof e?e(t):o(o({},t),e)),s},c=function(e){var t=u(e.components);return a.createElement(d.Provider,{value:t},e.children)},l="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var s=e.components,n=e.mdxType,r=e.originalType,d=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),l=u(s),h=n,b=l["".concat(d,".").concat(h)]||l[h]||p[h]||r;return s?a.createElement(b,o(o({ref:t},c),{},{components:s})):a.createElement(b,o({ref:t},c))}));function b(e,t){var s=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=s.length,o=new Array(r);o[0]=h;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i[l]="string"==typeof e?e:n,o[1]=i;for(var u=2;u{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>b,frontMatter:()=>i,metadata:()=>u,toc:()=>l});var a=s(87462),n=s(63366),r=(s(67294),s(3905)),o=["components"],i={id:"learn-guides-dot-ksm-bridge",title:"Polkadot and Kusama Bridge Guides",sidebar_label:"DOT <> KSM Bridge",description:"Polkadot-JS Guides about Polkadot and Kusama Bridge.",keywords:["Bridge","XCM","Bridge Hub","polkadot-js"],slug:"../learn-guides-dot-ksm-bridge"},d=void 0,u={unversionedId:"learn/learn-guides-dot-ksm-bridge",id:"learn/learn-guides-dot-ksm-bridge",title:"Polkadot and Kusama Bridge Guides",description:"Polkadot-JS Guides about Polkadot and Kusama Bridge.",source:"@site/../docs/learn/learn-guides-DOT-KSM-bridge.md",sourceDirName:"learn",slug:"/learn-guides-dot-ksm-bridge",permalink:"/docs/learn-guides-dot-ksm-bridge",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-DOT-KSM-bridge.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1713771917,formattedLastUpdatedAt:"Apr 22, 2024",frontMatter:{id:"learn-guides-dot-ksm-bridge",title:"Polkadot and Kusama Bridge Guides",sidebar_label:"DOT <> KSM Bridge",description:"Polkadot-JS Guides about Polkadot and Kusama Bridge.",keywords:["Bridge","XCM","Bridge Hub","polkadot-js"],slug:"../learn-guides-dot-ksm-bridge"},sidebar:"docs",previous:{title:"Bridge Hub Guides",permalink:"/docs/learn-guides-bridges"},next:{title:"Architecture",permalink:"/docs/learn-architecture"}},c={},l=[{value:"Transfer DOT to Kusama Asset Hub",id:"transfer-dot-to-kusama-asset-hub",level:2},{value:"Transfer KSM to Polkadot Asset Hub",id:"transfer-ksm-to-polkadot-asset-hub",level:2},{value:"Transfer of arbitrary assets between Polkadot Asset Hub and Kusama Asset Hub",id:"transfer-of-arbitrary-assets-between-polkadot-asset-hub-and-kusama-asset-hub",level:2}],p={toc:l},h="wrapper";function b(e){var t=e.components,i=(0,n.Z)(e,o);return(0,r.kt)(h,(0,a.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"These guides are for developers and power users only.")),(0,r.kt)("p",null,"The fully functional Polkadot < > Kusama bridge facilitates secure asset transfers between the\nchains in both the ecosystems. The progress of Polkadot < > Kusama bridge implementation can be\ntracked ",(0,r.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/polkadot-kusama-bridge/2971/1"},"here"),"."),(0,r.kt)("h2",{id:"transfer-dot-to-kusama-asset-hub"},"Transfer DOT to Kusama Asset Hub"),(0,r.kt)("p",null,"This tutorial shows how to transfer DOT on Polkadot Asset Hub to Kusama Asset Hub. The first step is\nto ensure that your account on Polkadot Asset Hub has enough DOT to cover the XCM transfer fee and\nthe bridge fee (which is around 2 DOT). The next step is to craft an XCM message to be sent from\nPolkadot Asset Hub."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://xcmsend.com/#/builder"},"BagPipes (formerly called xcmsend)")," is an opensource application\nthat lets you create workflows in a drag and drop style interface in order to build execution flows\nof cross chain assets transfers using XCM. Check\n",(0,r.kt)("a",{parentName:"p",href:"https://xcmsend.github.io/workflows/dotksm.html"},"Bagpipes docs")," for more information on how to\ncreate workflows for crafting XCM transfers. The snapshot below shows a workflow on BagPipes that is\ndesigned to send 3 DOT from an account Polkadot Asset Hub to Kusama Asset Hub."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BagPipes Snapshot DOT Transfer",src:s(531).Z,width:"2035",height:"962"})),(0,r.kt)("p",null,"This workflow crafts an XCM transfer as shown below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "isSigned": false,\n "method": {\n "args": {\n "dest": {\n "V3": {\n "parents": "2",\n "interior": {\n "X2": [\n {\n "GlobalConsensus": "Kusama"\n },\n {\n "Parachain": "1,000"\n }\n ]\n }\n }\n },\n "beneficiary": {\n "V3": {\n "parents": "0",\n "interior": {\n "X1": {\n "AccountId32": {\n "network": null,\n "id": "0x9e4e7009937c56d267338762a60ed004293afd40e7c2081847c12cb63c76a818"\n }\n }\n }\n }\n },\n "assets": {\n "V3": [\n {\n "id": {\n "Concrete": {\n "parents": "1",\n "interior": "Here"\n }\n },\n "fun": {\n "Fungible": "30,000,000,000"\n }\n }\n ]\n },\n "fee_asset_item": "0",\n "weight_limit": "Unlimited"\n },\n "method": "limitedReserveTransferAssets",\n "section": "polkadotXcm"\n }\n}\n')),(0,r.kt)("p",null,"Once this ",(0,r.kt)("a",{parentName:"p",href:"https://assethub-polkadot.subscan.io/extrinsic/6028374-2"},"extrinsic")," is signed and\nsubmitted, it is broadcast to Polkadot Asset Hub nodes. As this is a reserve asset transfer, the DOT\nis transferred to the destination's sovereign account on Polkadot Asset Hub and\n",(0,r.kt)("a",{parentName:"p",href:"https://assethub-kusama.subscan.io/extrinsic/6758392-0?event=6758392-1"},"the wrapped DOT is issued"),"\nas a foreign asset and deposited onto the destination account on Kusama Asset Hub. The foreign asset\nbalances of any account on Kusama Asset Hub can be queried on-chain through the\n",(0,r.kt)("inlineCode",{parentName:"p"},"foreignAssets"),"pallet as shown below."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Wrapped DOT Balance",src:s(72760).Z,width:"2820",height:"1874"})),(0,r.kt)("h2",{id:"transfer-ksm-to-polkadot-asset-hub"},"Transfer KSM to Polkadot Asset Hub"),(0,r.kt)("p",null,"This tutorial shows how to transfer KSM on Kusama Asset Hub to Polkadot Asset Hub. The first step is\nto ensure that your account on Kusama Asset Hub has enough KSM to cover the XCM transfer fee and the\nbridge fee (which is around 0.4 KSM). The next step is to craft an XCM message to be sent from\nKusama Asset Hub."),(0,r.kt)("p",null,"The XCM transfer extrinsic shown below can be accessed\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-asset-hub-rpc.polkadot.io#/extrinsics/decode/0x1f08030202090200a10f03000101008479c8ea5480acca5a847133cd97a87801b6e698a98f2eab0e8e9d5c51b14a33030400010000070088526a740000000000"},"here."),"\nIf you plan on reusing this extrinsic, ensure that you change the Account ID and the transfer amount\nhighlighted in the snapshot below."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"PJS Snapshot KSM Transfer",src:s(27441).Z,width:"2858",height:"4398"})),(0,r.kt)("p",null,"Once this ",(0,r.kt)("a",{parentName:"p",href:"https://assethub-kusama.subscan.io/extrinsic/6761480-2"},"extrinsic")," is signed and\nsubmitted, it is broadcast to Kusama Asset Hub nodes. As this is a reserve asset transfer, the KSM\nis transferred to the sovereign account on Kusama Asset Hub and\n",(0,r.kt)("a",{parentName:"p",href:"https://assethub-polkadot.subscan.io/extrinsic/6031467-0?event=6031467-6"},"the wrapped KSM is issued"),"\nas a foreign asset and deposited onto the destination account on Kusama Asset Hub. The foreign asset\nbalances of any account on Kusama Asset Hub can be queried on-chain through the\n",(0,r.kt)("inlineCode",{parentName:"p"},"foreignAssets"),"pallet as shown below."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Wrapped KSM Balance",src:s(53380).Z,width:"2854",height:"1960"})),(0,r.kt)("h2",{id:"transfer-of-arbitrary-assets-between-polkadot-asset-hub-and-kusama-asset-hub"},"Transfer of arbitrary assets between Polkadot Asset Hub and Kusama Asset Hub"),(0,r.kt)("p",null,"Transfer functionality of assets other than DOT and KSM between Asset Hubs is yet to be enabled.\nOnce this functionality is enabled, assets which are sufficient or non-sufficient on the Asset Hubs\ncan be bridged."),(0,r.kt)("admonition",{title:"Avoid Asset Traps",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"To avoid issues on the receiving side for non-sufficient assets, make sure to call\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/0ef37c75401b78b61ed35ce27af8b964da27bb3c/substrate/frame/assets/src/lib.rs#L1531"},"pallet_assets::touch()"),"\nor\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/0ef37c75401b78b61ed35ce27af8b964da27bb3c/substrate/frame/assets/src/lib.rs#L1616"},"pallet_assets::touch_other()"),"\neffectively guaranteeing the ability to successfully receive and accept the bridged assets in your\naccount on the destination chain. This eliminates issues like your account on destination not\nexisting or not having enough ED or having reached the maximum limit of different assets it can\nhold. Without this sanity step, you risk that the bridged assets will make their way to the\ndestination chain but will not be accepted by your account, and instead get trapped in the Asset\nTrap on the destination chain.")),(0,r.kt)("p",null,"Once arbitrary asset transfers are enabled by the Asset Hubs, a guide will be posted to this Wiki\npage."))}b.isMDXComponent=!0},72760:(e,t,s)=>{s.d(t,{Z:()=>a});const a=s.p+"assets/images/KAH-DOT-Balance-f587755f88564c19d1578f162d9dd0ff.png"},27441:(e,t,s)=>{s.d(t,{Z:()=>a});const a=s.p+"assets/images/KAH-PAH-KSM-Transfer-PJS-Extrinsic-55c8a01313cec43f8119b6aca8904e23.png"},53380:(e,t,s)=>{s.d(t,{Z:()=>a});const a=s.p+"assets/images/PAH-KSM-Balance-ffa6f6093f73aa45b0c1bc7b6d0c78c7.png"},531:(e,t,s)=>{s.d(t,{Z:()=>a});const a=s.p+"assets/images/PAH-to-KAH-DOT-transfer-b97431dce4c4cd85c5dc17007357fb9a.png"}}]); \ No newline at end of file diff --git a/assets/js/0eeb7a68.3a2b7735.js b/assets/js/0eeb7a68.3a2b7735.js new file mode 100644 index 000000000000..7560aad37696 --- /dev/null +++ b/assets/js/0eeb7a68.3a2b7735.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1713],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>b});var s=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,s)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(s=0;s=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=s.createContext({}),l=function(e){var t=s.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=l(e.components);return s.createElement(d.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return s.createElement(s.Fragment,{},t)}},h=s.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,d=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=l(a),h=n,b=c["".concat(d,".").concat(h)]||c[h]||p[h]||r;return a?s.createElement(b,o(o({ref:t},u),{},{components:a})):s.createElement(b,o({ref:t},u))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,o=new Array(r);o[0]=h;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i[c]="string"==typeof e?e:n,o[1]=i;for(var l=2;l{a.d(t,{Z:()=>n});var s=a(67294);const n=function(e){var t,a=e.message,n=(0,s.useState)(!0),r=n[0],o=n[1];return s.createElement(s.Fragment,null,r&&s.createElement("div",{className:"message-box"},s.createElement("button",{className:"close-button",onClick:function(){o(!1)}},"\u2716 "),s.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},51846:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>f,frontMatter:()=>d,metadata:()=>u,toc:()=>p});var s=a(87462),n=a(63366),r=(a(67294),a(3905)),o=a(35703),i=["components"],d={id:"learn-guides-dot-ksm-bridge",title:"Polkadot and Kusama Bridge Guides",sidebar_label:"DOT <> KSM Bridge",description:"Polkadot-JS Guides about Polkadot and Kusama Bridge.",keywords:["Bridge","XCM","Bridge Hub","polkadot-js"],slug:"../learn-guides-dot-ksm-bridge"},l=void 0,u={unversionedId:"learn/learn-guides-dot-ksm-bridge",id:"learn/learn-guides-dot-ksm-bridge",title:"Polkadot and Kusama Bridge Guides",description:"Polkadot-JS Guides about Polkadot and Kusama Bridge.",source:"@site/../docs/learn/learn-guides-DOT-KSM-bridge.md",sourceDirName:"learn",slug:"/learn-guides-dot-ksm-bridge",permalink:"/docs/learn-guides-dot-ksm-bridge",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-DOT-KSM-bridge.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-dot-ksm-bridge",title:"Polkadot and Kusama Bridge Guides",sidebar_label:"DOT <> KSM Bridge",description:"Polkadot-JS Guides about Polkadot and Kusama Bridge.",keywords:["Bridge","XCM","Bridge Hub","polkadot-js"],slug:"../learn-guides-dot-ksm-bridge"},sidebar:"docs",previous:{title:"Bridge Hub Guides",permalink:"/docs/learn-guides-bridges"},next:{title:"Architecture",permalink:"/docs/learn-architecture"}},c={},p=[{value:"Transfer DOT to Kusama Asset Hub",id:"transfer-dot-to-kusama-asset-hub",level:2},{value:"Transfer KSM to Polkadot Asset Hub",id:"transfer-ksm-to-polkadot-asset-hub",level:2},{value:"Transfer of arbitrary assets between Polkadot Asset Hub and Kusama Asset Hub",id:"transfer-of-arbitrary-assets-between-polkadot-asset-hub-and-kusama-asset-hub",level:2}],h={toc:p},b="wrapper";function f(e){var t=e.components,d=(0,n.Z)(e,i);return(0,r.kt)(b,(0,s.Z)({},h,d,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(o.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)("p",null,"The fully functional Polkadot < > Kusama bridge facilitates secure asset transfers between the\nchains in both the ecosystems. The progress of Polkadot < > Kusama bridge implementation can be\ntracked ",(0,r.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/polkadot-kusama-bridge/2971/1"},"here"),"."),(0,r.kt)("h2",{id:"transfer-dot-to-kusama-asset-hub"},"Transfer DOT to Kusama Asset Hub"),(0,r.kt)("p",null,"This tutorial shows how to transfer DOT on Polkadot Asset Hub to Kusama Asset Hub. The first step is\nto ensure that your account on Polkadot Asset Hub has enough DOT to cover the XCM transfer fee and\nthe bridge fee (which is around 2 DOT). The next step is to craft an XCM message to be sent from\nPolkadot Asset Hub."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://xcmsend.com/#/builder"},"BagPipes (formerly called xcmsend)")," is an opensource application\nthat lets you create workflows in a drag and drop style interface in order to build execution flows\nof cross chain assets transfers using XCM. Check\n",(0,r.kt)("a",{parentName:"p",href:"https://xcmsend.github.io/workflows/dotksm.html"},"Bagpipes docs")," for more information on how to\ncreate workflows for crafting XCM transfers. The snapshot below shows a workflow on BagPipes that is\ndesigned to send 3 DOT from an account Polkadot Asset Hub to Kusama Asset Hub."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BagPipes Snapshot DOT Transfer",src:a(531).Z,width:"2035",height:"962"})),(0,r.kt)("p",null,"This workflow crafts an XCM transfer as shown below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'{\n "isSigned": false,\n "method": {\n "args": {\n "dest": {\n "V3": {\n "parents": "2",\n "interior": {\n "X2": [\n {\n "GlobalConsensus": "Kusama"\n },\n {\n "Parachain": "1,000"\n }\n ]\n }\n }\n },\n "beneficiary": {\n "V3": {\n "parents": "0",\n "interior": {\n "X1": {\n "AccountId32": {\n "network": null,\n "id": "0x9e4e7009937c56d267338762a60ed004293afd40e7c2081847c12cb63c76a818"\n }\n }\n }\n }\n },\n "assets": {\n "V3": [\n {\n "id": {\n "Concrete": {\n "parents": "1",\n "interior": "Here"\n }\n },\n "fun": {\n "Fungible": "30,000,000,000"\n }\n }\n ]\n },\n "fee_asset_item": "0",\n "weight_limit": "Unlimited"\n },\n "method": "limitedReserveTransferAssets",\n "section": "polkadotXcm"\n }\n}\n')),(0,r.kt)("p",null,"Once this ",(0,r.kt)("a",{parentName:"p",href:"https://assethub-polkadot.subscan.io/extrinsic/6028374-2"},"extrinsic")," is signed and\nsubmitted, it is broadcast to Polkadot Asset Hub nodes. As this is a reserve asset transfer, the DOT\nis transferred to the destination's sovereign account on Polkadot Asset Hub and\n",(0,r.kt)("a",{parentName:"p",href:"https://assethub-kusama.subscan.io/extrinsic/6758392-0?event=6758392-1"},"the wrapped DOT is issued"),"\nas a foreign asset and deposited onto the destination account on Kusama Asset Hub. The foreign asset\nbalances of any account on Kusama Asset Hub can be queried on-chain through the\n",(0,r.kt)("inlineCode",{parentName:"p"},"foreignAssets"),"pallet as shown below."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Wrapped DOT Balance",src:a(72760).Z,width:"2820",height:"1874"})),(0,r.kt)("h2",{id:"transfer-ksm-to-polkadot-asset-hub"},"Transfer KSM to Polkadot Asset Hub"),(0,r.kt)("p",null,"This tutorial shows how to transfer KSM on Kusama Asset Hub to Polkadot Asset Hub. The first step is\nto ensure that your account on Kusama Asset Hub has enough KSM to cover the XCM transfer fee and the\nbridge fee (which is around 0.4 KSM). The next step is to craft an XCM message to be sent from\nKusama Asset Hub."),(0,r.kt)("p",null,"The XCM transfer extrinsic shown below can be accessed\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-asset-hub-rpc.polkadot.io#/extrinsics/decode/0x1f08030202090200a10f03000101008479c8ea5480acca5a847133cd97a87801b6e698a98f2eab0e8e9d5c51b14a33030400010000070088526a740000000000"},"here."),"\nIf you plan on reusing this extrinsic, ensure that you change the Account ID and the transfer amount\nhighlighted in the snapshot below."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"PJS Snapshot KSM Transfer",src:a(27441).Z,width:"2858",height:"4398"})),(0,r.kt)("p",null,"Once this ",(0,r.kt)("a",{parentName:"p",href:"https://assethub-kusama.subscan.io/extrinsic/6761480-2"},"extrinsic")," is signed and\nsubmitted, it is broadcast to Kusama Asset Hub nodes. As this is a reserve asset transfer, the KSM\nis transferred to the sovereign account on Kusama Asset Hub and\n",(0,r.kt)("a",{parentName:"p",href:"https://assethub-polkadot.subscan.io/extrinsic/6031467-0?event=6031467-6"},"the wrapped KSM is issued"),"\nas a foreign asset and deposited onto the destination account on Kusama Asset Hub. The foreign asset\nbalances of any account on Kusama Asset Hub can be queried on-chain through the\n",(0,r.kt)("inlineCode",{parentName:"p"},"foreignAssets"),"pallet as shown below."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Wrapped KSM Balance",src:a(53380).Z,width:"2854",height:"1960"})),(0,r.kt)("h2",{id:"transfer-of-arbitrary-assets-between-polkadot-asset-hub-and-kusama-asset-hub"},"Transfer of arbitrary assets between Polkadot Asset Hub and Kusama Asset Hub"),(0,r.kt)("p",null,"Transfer functionality of assets other than DOT and KSM between Asset Hubs is yet to be enabled.\nOnce this functionality is enabled, assets which are sufficient or non-sufficient on the Asset Hubs\ncan be bridged."),(0,r.kt)("admonition",{title:"Avoid Asset Traps",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"To avoid issues on the receiving side for non-sufficient assets, make sure to call\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/0ef37c75401b78b61ed35ce27af8b964da27bb3c/substrate/frame/assets/src/lib.rs#L1531"},"pallet_assets::touch()"),"\nor\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/0ef37c75401b78b61ed35ce27af8b964da27bb3c/substrate/frame/assets/src/lib.rs#L1616"},"pallet_assets::touch_other()"),"\neffectively guaranteeing the ability to successfully receive and accept the bridged assets in your\naccount on the destination chain. This eliminates issues like your account on destination not\nexisting or not having enough ED or having reached the maximum limit of different assets it can\nhold. Without this sanity step, you risk that the bridged assets will make their way to the\ndestination chain but will not be accepted by your account, and instead get trapped in the Asset\nTrap on the destination chain.")),(0,r.kt)("p",null,"Once arbitrary asset transfers are enabled by the Asset Hubs, a guide will be posted to this Wiki\npage."))}f.isMDXComponent=!0},72760:(e,t,a)=>{a.d(t,{Z:()=>s});const s=a.p+"assets/images/KAH-DOT-Balance-f587755f88564c19d1578f162d9dd0ff.png"},27441:(e,t,a)=>{a.d(t,{Z:()=>s});const s=a.p+"assets/images/KAH-PAH-KSM-Transfer-PJS-Extrinsic-55c8a01313cec43f8119b6aca8904e23.png"},53380:(e,t,a)=>{a.d(t,{Z:()=>s});const s=a.p+"assets/images/PAH-KSM-Balance-ffa6f6093f73aa45b0c1bc7b6d0c78c7.png"},531:(e,t,a)=>{a.d(t,{Z:()=>s});const s=a.p+"assets/images/PAH-to-KAH-DOT-transfer-b97431dce4c4cd85c5dc17007357fb9a.png"}}]); \ No newline at end of file diff --git a/assets/js/113faa87.3524d0b4.js b/assets/js/113faa87.3524d0b4.js new file mode 100644 index 000000000000..63879a5229be --- /dev/null +++ b/assets/js/113faa87.3524d0b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7738],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(r),m=a,f=d["".concat(l,".").concat(m)]||d[m]||p[m]||s;return r?n.createElement(f,o(o({ref:t},u),{},{components:r})):n.createElement(f,o({ref:t},u))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:a,o[1]=i;for(var c=2;c{r.d(t,{Z:()=>a});var n=r(67294);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),s=a[0],o=a[1];return n.createElement(n.Fragment,null,s&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){o(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52991:(e,t,r)=>{r.d(t,{Z:()=>g});var n=r(67294),a=r(86010),s=r(53438),o=r(39960),i=r(13919),l=r(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){var t=e.href,r=e.children;return n.createElement(o.Z,{href:t,className:(0,a.Z)("card padding--lg",c.cardContainer)},r)}function d(e){var t=e.href,r=e.icon,s=e.title,o=e.description;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",c.cardTitle),title:s},r," ",s),o&&n.createElement("p",{className:(0,a.Z)("text--truncate",c.cardDescription),title:o},o))}function p(e){var t,r=e.item,a=(0,s.Wl)(r);return a?n.createElement(d,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,o=(0,i.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,s.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(d,{href:a.href,icon:o,title:a.label,description:null!=(r=a.description)?r:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function b(e){var t=e.className,r=(0,s.jA)();return n.createElement(g,{items:r.items,className:t})}function g(e){var t=e.items,r=e.className;if(!t)return n.createElement(b,e);var o=(0,s.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},o.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},30998:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>g,frontMatter:()=>c,metadata:()=>d,toc:()=>m});var n=r(87462),a=r(63366),s=(r(67294),r(3905)),o=r(35703),i=r(52991),l=["components"],c={id:"learn-guides-assets",title:"Polkadot-JS Guides about Asset Hub",sidebar_label:"Asset Hub Guides",description:"Polkadot-JS Guides about Asset Hub.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets"},u=void 0,d={unversionedId:"learn/learn-guides-assets",id:"learn/learn-guides-assets",title:"Polkadot-JS Guides about Asset Hub",description:"Polkadot-JS Guides about Asset Hub.",source:"@site/../docs/learn/learn-guides-assets.md",sourceDirName:"learn",slug:"/learn-guides-assets",permalink:"/docs/learn-guides-assets",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-assets",title:"Polkadot-JS Guides about Asset Hub",sidebar_label:"Asset Hub Guides",description:"Polkadot-JS Guides about Asset Hub.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets"},sidebar:"docs",previous:{title:"Polkadot Vault Guides",permalink:"/docs/learn-guides-vault"},next:{title:"Create Asset Guides",permalink:"/docs/learn-guides-assets-create"}},p={},m=[],f={toc:m},b="wrapper";function g(e){var t=e.components,r=(0,a.Z)(e,l);return(0,s.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,s.kt)(o.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,s.kt)(i.Z,{mdxType:"DocCardList"}))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/113faa87.8278d46b.js b/assets/js/113faa87.8278d46b.js deleted file mode 100644 index 3ba014ef971f..000000000000 --- a/assets/js/113faa87.8278d46b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7738],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=c(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||p[m]||s;return r?n.createElement(f,o(o({ref:t},d),{},{components:r})):n.createElement(f,o({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,o=new Array(s);o[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:a,o[1]=i;for(var c=2;c{r.d(t,{Z:()=>y});var n=r(67294),a=r(86010),s=r(53438),o=r(39960),i=r(13919),l=r(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var t=e.href,r=e.children;return n.createElement(o.Z,{href:t,className:(0,a.Z)("card padding--lg",c.cardContainer)},r)}function u(e){var t=e.href,r=e.icon,s=e.title,o=e.description;return n.createElement(d,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",c.cardTitle),title:s},r," ",s),o&&n.createElement("p",{className:(0,a.Z)("text--truncate",c.cardDescription),title:o},o))}function p(e){var t,r=e.item,a=(0,s.Wl)(r);return a?n.createElement(u,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,o=(0,i.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,s.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(u,{href:a.href,icon:o,title:a.label,description:null!=(r=a.description)?r:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function b(e){var t=e.className,r=(0,s.jA)();return n.createElement(y,{items:r.items,className:t})}function y(e){var t=e.items,r=e.className;if(!t)return n.createElement(b,e);var o=(0,s.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},o.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},30998:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>b,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var n=r(87462),a=r(63366),s=(r(67294),r(3905)),o=r(52991),i=["components"],l={id:"learn-guides-assets",title:"Polkadot-JS Guides about Asset Hub",sidebar_label:"Asset Hub Guides",description:"Polkadot-JS Guides about Asset Hub.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets"},c=void 0,d={unversionedId:"learn/learn-guides-assets",id:"learn/learn-guides-assets",title:"Polkadot-JS Guides about Asset Hub",description:"Polkadot-JS Guides about Asset Hub.",source:"@site/../docs/learn/learn-guides-assets.md",sourceDirName:"learn",slug:"/learn-guides-assets",permalink:"/docs/learn-guides-assets",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-assets",title:"Polkadot-JS Guides about Asset Hub",sidebar_label:"Asset Hub Guides",description:"Polkadot-JS Guides about Asset Hub.",keywords:["asset hub","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets"},sidebar:"docs",previous:{title:"Polkadot Vault Guides",permalink:"/docs/learn-guides-vault"},next:{title:"Create Asset Guides",permalink:"/docs/learn-guides-assets-create"}},u={},p=[],m={toc:p},f="wrapper";function b(e){var t=e.components,r=(0,a.Z)(e,i);return(0,s.kt)(f,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("div",{className:"sticky",style:{zIndex:1}},(0,s.kt)("br",null),(0,s.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,s.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,s.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,s.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,s.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,s.kt)(o.Z,{mdxType:"DocCardList"}))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/12331e8b.27119ba5.js b/assets/js/12331e8b.27119ba5.js deleted file mode 100644 index 0dbb53ed265b..000000000000 --- a/assets/js/12331e8b.27119ba5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8270],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>k});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,s=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),u=o,k=c["".concat(l,".").concat(u)]||c[u]||h[u]||s;return a?n.createElement(k,r(r({ref:t},d),{},{components:a})):n.createElement(k,r({ref:t},d))}));function k(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=a.length,r=new Array(s);r[0]=u;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:o,r[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>k,frontMatter:()=>i,metadata:()=>p,toc:()=>c});var n=a(87462),o=a(63366),s=(a(67294),a(3905)),r=["components"],i={id:"polkadotjs",title:"Polkadot-JS Tooling",sidebar_label:"Polkadot-JS Tooling",description:"The Polkadot-JS Tool Collection.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs"},l=void 0,p={unversionedId:"general/polkadotjs",id:"general/polkadotjs",title:"Polkadot-JS Tooling",description:"The Polkadot-JS Tool Collection.",source:"@site/../docs/general/polkadotjs.md",sourceDirName:"general",slug:"/polkadotjs",permalink:"/docs/polkadotjs",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadotjs.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"polkadotjs",title:"Polkadot-JS Tooling",sidebar_label:"Polkadot-JS Tooling",description:"The Polkadot-JS Tool Collection.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs"},sidebar:"docs",previous:{title:"Polkadot-JS",permalink:"/docs/learn-polkadotjs"},next:{title:"Polkadot-JS UI",permalink:"/docs/polkadotjs-ui"}},d={},c=[{value:"Polkadot-JS UI",id:"polkadot-js-ui",level:2},{value:"Polkadot-JS UI Desktop App",id:"polkadot-js-ui-desktop-app",level:3},{value:"Polkadot-JS Extension",id:"polkadot-js-extension",level:2},{value:"Polkadot-JS Phishing List",id:"polkadot-js-phishing-list",level:2},{value:"Polkadot-JS API",id:"polkadot-js-api",level:2},{value:"Querying On-chain Data",id:"querying-on-chain-data",level:3},{value:"Issuing Extrinsics",id:"issuing-extrinsics",level:3}],h={toc:c},u="wrapper";function k(e){var t=e.components,i=(0,o.Z)(e,r);return(0,s.kt)(u,(0,n.Z)({},h,i,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("div",{className:"sticky",style:{zIndex:1}},(0,s.kt)("br",null),(0,s.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,s.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,s.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,s.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,s.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS"))," is a collection of tools that interfaces with the\nPolkadot blockchain in a granular way. Below\nwe describe the different components of Polkadot-JS. For more information about Polkadot-JS you can\nconsult the ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/"},(0,s.kt)("strong",{parentName:"a"},"official documentation")),"."),(0,s.kt)("h2",{id:"polkadot-js-ui"},"Polkadot-JS UI"),(0,s.kt)("admonition",{title:"For Developers and Power Users Only",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"Please note that this wallet UI is oriented toward developers and power users. Explore Polkadot with\na secure and user-friendly wallets listed on the\n",(0,s.kt)("a",{parentName:"p",href:"https://www.polkadot.network/ecosystem/wallets/"},"Polkadot website"),". If you need help using the\nPolkadot-JS UI you can contact the\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},(0,s.kt)("strong",{parentName:"a"},"Polkadot Support Team")),".")),(0,s.kt)("p",null,"The Polkadot-JS UI is an application that loads in your browser. There is a standard DNS\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/"},(0,s.kt)("strong",{parentName:"a"},"hosted version")),", which always has the latest features, and an\n",(0,s.kt)("a",{parentName:"p",href:"https://dotapps.io/"},(0,s.kt)("strong",{parentName:"a"},"IPFS version"))," that is less frequently updated but is more decentralized.\nThis is also often referred to as Polkadot-JS Apps, UI or the Apps UI. In the Wiki pages we will\nalways refer to Polkadot-JS UI."),(0,s.kt)("p",null,"Polkadot-JS Apps has many capabilities that go beyond basic wallet functions such as account\ncreation and sending or receiving transactions. See the ",(0,s.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},(0,s.kt)("strong",{parentName:"a"},"dedicated section")),"\nfor more information about the UI."),(0,s.kt)("h3",{id:"polkadot-js-ui-desktop-app"},"Polkadot-JS UI Desktop App"),(0,s.kt)("p",null,"The Polkadot-JS UI also exists as a\n",(0,s.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/releases/"},(0,s.kt)("strong",{parentName:"a"},"desktop application"))," for Windows, Mac and Linux.\nThe main advantage of using it is that by default it stores encrypted accounts on the filesystem\ninstead of browser's local storage. Local storage is susceptible to attacks using XSS (Cross-Site\nScripting). There's no such risk when with files stored on disk."),(0,s.kt)("p",null,"The desktop app uses the ",(0,s.kt)("a",{parentName:"p",href:"https://www.electronjs.org/"},(0,s.kt)("strong",{parentName:"a"},"Electron"))," framework. It provides the same\nfeatures as web app, the only difference being different account storage."),(0,s.kt)("admonition",{title:"Ledger not supported",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"The desktop application does not support Ledger accounts. If you need a cold storage solution you\ncan try Parity Signer (aka Polkadot Vault).")),(0,s.kt)("h2",{id:"polkadot-js-extension"},"Polkadot-JS Extension"),(0,s.kt)("p",null,"The ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/extension/"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS browser extension"))," is not a wallet ",(0,s.kt)("em",{parentName:"p"},"per se"),"\nbut an account management tool. It allows you to create accounts and also import accounts from\n",(0,s.kt)("a",{parentName:"p",href:"/docs/ledger"},(0,s.kt)("strong",{parentName:"a"},"Ledger"))," devices or Parity Signer, allowing the signing of\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-transactions"},(0,s.kt)("strong",{parentName:"a"},"extrinsics"))," using these accounts. It also allows you export\nexisting accounts and restore accounts (given you have the required information to restore them)."),(0,s.kt)("p",null,"The extension is a robust key storage tool, i.e. even if you clear the cache of your browser your\naccounts will be retained. The extension will recognize any websites that have been flagged for\nmalicious activity. For additional security, the extension will always ask if you want a specific\nwebsite to access the account information on it."),(0,s.kt)("p",null,"The extension does not let users interact directly with on-chain functions as one would find on a\nwallet app like Metamask, i.e. it does not allow you to transact or do anything else other than\nadding and managing accounts. However, it provides a simple interface for interacting with\nextension-compliant dApps such as the ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS UI")),"\nand the ",(0,s.kt)("a",{parentName:"p",href:"https://staking.polkadot.network/#/overview"},(0,s.kt)("strong",{parentName:"a"},"Polkadot Staking Dashboard")),". Check\n",(0,s.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions"},"wallets and extensions")," page for wallets that are capable of\ntransacting on-chain directly."),(0,s.kt)("admonition",{title:"Metadata Updates",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"The browser extension is a tool that interacts with the Polkadot network, but it is disconnected\nfrom it when it is not in use. It is important you\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-guides-accounts#metadata-updates-with-the-polkadot-js-browser-extension"},(0,s.kt)("strong",{parentName:"a"},"always check for metadata updates")),"\nbefore using the extension or other account management tools such as Parity Signer (aka Polkadot\nVault).")),(0,s.kt)("h2",{id:"polkadot-js-phishing-list"},"Polkadot-JS Phishing List"),(0,s.kt)("p",null,"The ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/phishing/"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS phishing list"))," website is a community-driven\ncuration of malicious actors and operators. The Polkadot-JS extension uses this list to warn a user\nabout suspicious URLs and addresses that are part of the list, and automatically blocks the account\naddress."),(0,s.kt)("h2",{id:"polkadot-js-api"},"Polkadot-JS API"),(0,s.kt)("p",null,"The ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/api"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS API"))," is a JavaScript API allowing for\nprograms to interface with the functionalities of\nPolkadot."),(0,s.kt)("p",null,"While interacting with the underlying\n",(0,s.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/@polkadot/api"},(0,s.kt)("strong",{parentName:"a"},"@polkadot/api")),", most interfaces are generated\nautomatically when connecting to an available node. This is quite a departure from many other API\ndesigns where the interfaces are commonly static."),(0,s.kt)("p",null,"When the API connects to a node, it initially retrieves the\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/runtime"},(0,s.kt)("strong",{parentName:"a"},"metadata")),' which is used to "decorate" the API based on\nits contents. The metadata provides data in the form of ',(0,s.kt)("inlineCode",{parentName:"p"},"api...
")," where ",(0,s.kt)("inlineCode",{parentName:"p"},"type"),"\nfits into one of the following categories:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"consts")," - runtime constants (these are not functions so the values are returned directly as they\nare defined by the endpoint)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"query")," - chain state values"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"tx")," - all extrinsics")),(0,s.kt)("p",null,"The metadata also provides information on\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/substrate/events/"},(0,s.kt)("strong",{parentName:"a"},"events")),", which can be queried using the\n",(0,s.kt)("inlineCode",{parentName:"p"},"api.query.system.events()")," interface."),(0,s.kt)("p",null,"None of the information contained within the ",(0,s.kt)("inlineCode",{parentName:"p"},"api.{consts, query, tx}..")," endpoints\nare hard-coded in the API. These values are defined by the decoration applied from the initial\nmetadata response and are therefore completely dynamic. This suggests that when you connect to\ndifferent parachains, the metadata and API decoration will change and provide varying interfaces\nbased on the chain."),(0,s.kt)("p",null,"A developer can use Polkadot-JS Apps to test code's functionality. Interacting with the Polkadot-JS\ncomes down to either ",(0,s.kt)("a",{parentName:"p",href:"#querying-on-chain-data"},(0,s.kt)("strong",{parentName:"a"},"querying on-chain data"))," or\n",(0,s.kt)("a",{parentName:"p",href:"#issuing-extrinsics"},(0,s.kt)("strong",{parentName:"a"},"issuing an extrinsic")),"."),(0,s.kt)("h3",{id:"querying-on-chain-data"},"Querying On-chain Data"),(0,s.kt)("p",null,"To populate the Apps UI, the web app queries the Polkadot-JS API. The API then queries a\nPolkadot node and uses JavaScript to return\ninformation that the UI will display on the screen. You can choose which node to connect to by\nchanging it in the upper-left-hand corner of the screen."),(0,s.kt)("p",null,"Let's see how we can query on-chain data with Polkadot-JS UI on the Polkadot network with an\nexample. To find out the current value for existential deposit, navigate to Developer > Chain\nstate > Constants and query the balances pallet for existential deposit as shown in the snapshot\nbelow. You need to click on the plus button to execute the query. The value displayed is in\n",(0,s.kt)("a",{parentName:"p",href:"learn-DOT#polkadot"},"plancks")),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"query chain state",src:a(75506).Z,width:"1728",height:"380"})),(0,s.kt)("h3",{id:"issuing-extrinsics"},"Issuing Extrinsics"),(0,s.kt)("p",null,"Extrinsics are pieces of information that come from outside the chain and are included in a block.\nExtrinsics can be one of three types: inherents, signed, and unsigned transactions."),(0,s.kt)("p",null,"Most extrinsics displayed on Polkadot-JS Apps are signed transactions. Inherits are non-signed and\nnon-gossiped pieces of information included in blocks by the block author, such as timestamps, which\nare \u201ctrue\u201d because a sufficient number of validators have agreed about validity."),(0,s.kt)("p",null,"Unsigned transactions are information that does not require a signature but will require some sort\nof spam prevention, whereas signed transactions are issued by the originator account of a\ntransaction which contains a signature of that account, which will be subject to a fee to include it\non the chain."))}k.isMDXComponent=!0},75506:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/chain-state-constant-8663ba40c98411da3308fdaf40cb13ee.png"}}]); \ No newline at end of file diff --git a/assets/js/12331e8b.f30c3f90.js b/assets/js/12331e8b.f30c3f90.js new file mode 100644 index 000000000000..c6e5575cfc3d --- /dev/null +++ b/assets/js/12331e8b.f30c3f90.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8270],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>k});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,s=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),u=o,k=c["".concat(l,".").concat(u)]||c[u]||h[u]||s;return a?n.createElement(k,r(r({ref:t},d),{},{components:a})):n.createElement(k,r({ref:t},d))}));function k(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=a.length,r=new Array(s);r[0]=u;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[c]="string"==typeof e?e:o,r[1]=i;for(var p=2;p{a.d(t,{Z:()=>o});var n=a(67294);const o=function(e){var t,a=e.message,o=(0,n.useState)(!0),s=o[0],r=o[1];return n.createElement(n.Fragment,null,s&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},67881:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>p,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>h});var n=a(87462),o=a(63366),s=(a(67294),a(3905)),r=a(35703),i=["components"],l={id:"polkadotjs",title:"Polkadot-JS Tooling",sidebar_label:"Polkadot-JS Tooling",description:"The Polkadot-JS Tool Collection.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs"},p=void 0,d={unversionedId:"general/polkadotjs",id:"general/polkadotjs",title:"Polkadot-JS Tooling",description:"The Polkadot-JS Tool Collection.",source:"@site/../docs/general/polkadotjs.md",sourceDirName:"general",slug:"/polkadotjs",permalink:"/docs/polkadotjs",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadotjs.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"polkadotjs",title:"Polkadot-JS Tooling",sidebar_label:"Polkadot-JS Tooling",description:"The Polkadot-JS Tool Collection.",keywords:["polkadotjs","polkadotjs apps","apps UI","extension"],slug:"../polkadotjs"},sidebar:"docs",previous:{title:"Polkadot-JS",permalink:"/docs/learn-polkadotjs"},next:{title:"Polkadot-JS UI",permalink:"/docs/polkadotjs-ui"}},c={},h=[{value:"Polkadot-JS UI",id:"polkadot-js-ui",level:2},{value:"Polkadot-JS UI Desktop App",id:"polkadot-js-ui-desktop-app",level:3},{value:"Polkadot-JS Extension",id:"polkadot-js-extension",level:2},{value:"Polkadot-JS Phishing List",id:"polkadot-js-phishing-list",level:2},{value:"Polkadot-JS API",id:"polkadot-js-api",level:2},{value:"Querying On-chain Data",id:"querying-on-chain-data",level:3},{value:"Issuing Extrinsics",id:"issuing-extrinsics",level:3}],u={toc:h},k="wrapper";function m(e){var t=e.components,l=(0,o.Z)(e,i);return(0,s.kt)(k,(0,n.Z)({},u,l,{components:t,mdxType:"MDXLayout"}),(0,s.kt)(r.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS"))," is a collection of tools that interfaces with the\nPolkadot blockchain in a granular way. Below\nwe describe the different components of Polkadot-JS. For more information about Polkadot-JS you can\nconsult the ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/"},(0,s.kt)("strong",{parentName:"a"},"official documentation")),"."),(0,s.kt)("h2",{id:"polkadot-js-ui"},"Polkadot-JS UI"),(0,s.kt)("admonition",{title:"For Developers and Power Users Only",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"Please note that this wallet UI is oriented toward developers and power users. Explore Polkadot with\na secure and user-friendly wallets listed on the\n",(0,s.kt)("a",{parentName:"p",href:"https://www.polkadot.network/ecosystem/wallets/"},"Polkadot website"),". If you need help using the\nPolkadot-JS UI you can contact the\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},(0,s.kt)("strong",{parentName:"a"},"Polkadot Support Team")),".")),(0,s.kt)("p",null,"The Polkadot-JS UI is an application that loads in your browser. There is a standard DNS\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/"},(0,s.kt)("strong",{parentName:"a"},"hosted version")),", which always has the latest features, and an\n",(0,s.kt)("a",{parentName:"p",href:"https://dotapps.io/"},(0,s.kt)("strong",{parentName:"a"},"IPFS version"))," that is less frequently updated but is more decentralized.\nThis is also often referred to as Polkadot-JS Apps, UI or the Apps UI. In the Wiki pages we will\nalways refer to Polkadot-JS UI."),(0,s.kt)("p",null,"Polkadot-JS Apps has many capabilities that go beyond basic wallet functions such as account\ncreation and sending or receiving transactions. See the ",(0,s.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},(0,s.kt)("strong",{parentName:"a"},"dedicated section")),"\nfor more information about the UI."),(0,s.kt)("h3",{id:"polkadot-js-ui-desktop-app"},"Polkadot-JS UI Desktop App"),(0,s.kt)("p",null,"The Polkadot-JS UI also exists as a\n",(0,s.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/releases/"},(0,s.kt)("strong",{parentName:"a"},"desktop application"))," for Windows, Mac and Linux.\nThe main advantage of using it is that by default it stores encrypted accounts on the filesystem\ninstead of browser's local storage. Local storage is susceptible to attacks using XSS (Cross-Site\nScripting). There's no such risk when with files stored on disk."),(0,s.kt)("p",null,"The desktop app uses the ",(0,s.kt)("a",{parentName:"p",href:"https://www.electronjs.org/"},(0,s.kt)("strong",{parentName:"a"},"Electron"))," framework. It provides the same\nfeatures as web app, the only difference being different account storage."),(0,s.kt)("admonition",{title:"Ledger not supported",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"The desktop application does not support Ledger accounts. If you need a cold storage solution you\ncan try Parity Signer (aka Polkadot Vault).")),(0,s.kt)("h2",{id:"polkadot-js-extension"},"Polkadot-JS Extension"),(0,s.kt)("p",null,"The ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/extension/"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS browser extension"))," is not a wallet ",(0,s.kt)("em",{parentName:"p"},"per se"),"\nbut an account management tool. It allows you to create accounts and also import accounts from\n",(0,s.kt)("a",{parentName:"p",href:"/docs/ledger"},(0,s.kt)("strong",{parentName:"a"},"Ledger"))," devices or Parity Signer, allowing the signing of\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-transactions"},(0,s.kt)("strong",{parentName:"a"},"extrinsics"))," using these accounts. It also allows you export\nexisting accounts and restore accounts (given you have the required information to restore them)."),(0,s.kt)("p",null,"The extension is a robust key storage tool, i.e. even if you clear the cache of your browser your\naccounts will be retained. The extension will recognize any websites that have been flagged for\nmalicious activity. For additional security, the extension will always ask if you want a specific\nwebsite to access the account information on it."),(0,s.kt)("p",null,"The extension does not let users interact directly with on-chain functions as one would find on a\nwallet app like Metamask, i.e. it does not allow you to transact or do anything else other than\nadding and managing accounts. However, it provides a simple interface for interacting with\nextension-compliant dApps such as the ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS UI")),"\nand the ",(0,s.kt)("a",{parentName:"p",href:"https://staking.polkadot.network/#/overview"},(0,s.kt)("strong",{parentName:"a"},"Polkadot Staking Dashboard")),". Check\n",(0,s.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions"},"wallets and extensions")," page for wallets that are capable of\ntransacting on-chain directly."),(0,s.kt)("admonition",{title:"Metadata Updates",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"The browser extension is a tool that interacts with the Polkadot network, but it is disconnected\nfrom it when it is not in use. It is important you\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-guides-accounts#metadata-updates-with-the-polkadot-js-browser-extension"},(0,s.kt)("strong",{parentName:"a"},"always check for metadata updates")),"\nbefore using the extension or other account management tools such as Parity Signer (aka Polkadot\nVault).")),(0,s.kt)("h2",{id:"polkadot-js-phishing-list"},"Polkadot-JS Phishing List"),(0,s.kt)("p",null,"The ",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/phishing/"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS phishing list"))," website is a community-driven\ncuration of malicious actors and operators. The Polkadot-JS extension uses this list to warn a user\nabout suspicious URLs and addresses that are part of the list, and automatically blocks the account\naddress."),(0,s.kt)("h2",{id:"polkadot-js-api"},"Polkadot-JS API"),(0,s.kt)("p",null,"The ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/api"},(0,s.kt)("strong",{parentName:"a"},"Polkadot-JS API"))," is a JavaScript API allowing for\nprograms to interface with the functionalities of\nPolkadot."),(0,s.kt)("p",null,"While interacting with the underlying\n",(0,s.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/@polkadot/api"},(0,s.kt)("strong",{parentName:"a"},"@polkadot/api")),", most interfaces are generated\nautomatically when connecting to an available node. This is quite a departure from many other API\ndesigns where the interfaces are commonly static."),(0,s.kt)("p",null,"When the API connects to a node, it initially retrieves the\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/runtime"},(0,s.kt)("strong",{parentName:"a"},"metadata")),' which is used to "decorate" the API based on\nits contents. The metadata provides data in the form of ',(0,s.kt)("inlineCode",{parentName:"p"},"api...
")," where ",(0,s.kt)("inlineCode",{parentName:"p"},"type"),"\nfits into one of the following categories:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"consts")," - runtime constants (these are not functions so the values are returned directly as they\nare defined by the endpoint)"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"query")," - chain state values"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"tx")," - all extrinsics")),(0,s.kt)("p",null,"The metadata also provides information on\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/substrate/events/"},(0,s.kt)("strong",{parentName:"a"},"events")),", which can be queried using the\n",(0,s.kt)("inlineCode",{parentName:"p"},"api.query.system.events()")," interface."),(0,s.kt)("p",null,"None of the information contained within the ",(0,s.kt)("inlineCode",{parentName:"p"},"api.{consts, query, tx}..")," endpoints\nare hard-coded in the API. These values are defined by the decoration applied from the initial\nmetadata response and are therefore completely dynamic. This suggests that when you connect to\ndifferent parachains, the metadata and API decoration will change and provide varying interfaces\nbased on the chain."),(0,s.kt)("p",null,"A developer can use Polkadot-JS Apps to test code's functionality. Interacting with the Polkadot-JS\ncomes down to either ",(0,s.kt)("a",{parentName:"p",href:"#querying-on-chain-data"},(0,s.kt)("strong",{parentName:"a"},"querying on-chain data"))," or\n",(0,s.kt)("a",{parentName:"p",href:"#issuing-extrinsics"},(0,s.kt)("strong",{parentName:"a"},"issuing an extrinsic")),"."),(0,s.kt)("h3",{id:"querying-on-chain-data"},"Querying On-chain Data"),(0,s.kt)("p",null,"To populate the Apps UI, the web app queries the Polkadot-JS API. The API then queries a\nPolkadot node and uses JavaScript to return\ninformation that the UI will display on the screen. You can choose which node to connect to by\nchanging it in the upper-left-hand corner of the screen."),(0,s.kt)("p",null,"Let's see how we can query on-chain data with Polkadot-JS UI on the Polkadot network with an\nexample. To find out the current value for existential deposit, navigate to Developer > Chain\nstate > Constants and query the balances pallet for existential deposit as shown in the snapshot\nbelow. You need to click on the plus button to execute the query. The value displayed is in\n",(0,s.kt)("a",{parentName:"p",href:"learn-DOT#polkadot"},"plancks")),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"query chain state",src:a(75506).Z,width:"1728",height:"380"})),(0,s.kt)("h3",{id:"issuing-extrinsics"},"Issuing Extrinsics"),(0,s.kt)("p",null,"Extrinsics are pieces of information that come from outside the chain and are included in a block.\nExtrinsics can be one of three types: inherents, signed, and unsigned transactions."),(0,s.kt)("p",null,"Most extrinsics displayed on Polkadot-JS Apps are signed transactions. Inherits are non-signed and\nnon-gossiped pieces of information included in blocks by the block author, such as timestamps, which\nare \u201ctrue\u201d because a sufficient number of validators have agreed about validity."),(0,s.kt)("p",null,"Unsigned transactions are information that does not require a signature but will require some sort\nof spam prevention, whereas signed transactions are issued by the originator account of a\ntransaction which contains a signature of that account, which will be subject to a fee to include it\non the chain."))}m.isMDXComponent=!0},75506:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/chain-state-constant-8663ba40c98411da3308fdaf40cb13ee.png"}}]); \ No newline at end of file diff --git a/assets/js/2be0d940.ce15ac27.js b/assets/js/2be0d940.ce15ac27.js deleted file mode 100644 index c2caab888ba1..000000000000 --- a/assets/js/2be0d940.ce15ac27.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[2914],{47940:(t,e,n)=>{"use strict";n.d(e,{Z:()=>c});var a=n(74165),i=n(15861),o=n(67294),s=n(87152),r=n(9712),d=n(67425);function l(t,e,n){return u.apply(this,arguments)}function u(){return(u=(0,i.Z)((0,a.Z)().mark((function t(e,n,i){var o,d,l,u,p;return(0,a.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=void 0,d=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return o="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return o="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return o="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return o="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==o){t.next=18;break}return t.abrupt("return");case 18:return l=new s.U(o),t.next=21,r.G.create({provider:l});case 21:u=t.sent,(p=n.split(".")).forEach((function(t){t in u&&(u=u[t])})),t.t1=p[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return d=u.toString(),t.abrupt("break",35);case 29:return t.next=31,u();case 31:return d=(d=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+n);case 35:return t.abrupt("return",d);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function p(t,e,n,a){switch(e){case"humanReadable":(0,d.HumanReadable)(t,n,a);break;case"precise":(0,d.Precise)(t,n,a);break;case"blocksToDays":(0,d.BlocksToDays)(t,a);break;case"erasToDays":(0,d.ErasToDays)(t,a,n);break;case"percentage":(0,d.Percentage)(t,a);break;case"permillToPercent":(0,d.PermillToPercent)(t,a);break;case"arrayLength":(0,d.ArrayLength)(t,a);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(t){var e=t.network,n=t.path,s=t.defaultValue,r=t.filter,d=void 0===r?void 0:r,u=(0,o.useState)(""),c=u[0],h=u[1];return e=e.toLowerCase(),(0,o.useEffect)((function(){void 0!==d?p(s.toString(),d,e,h):h(s.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":t="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var o=function(){var t=(0,i.Z)((0,a.Z)().mark((function t(){var i;return(0,a.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l(e,n,h);case 2:if(void 0!==(i=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==d?p(i,d,e,h):h(i);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{o()}catch(r){console.log(r)}}}),[]),c}},67425:t=>{var e="polkadot",n="kusama",a="statemine",i="statemint",o={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,s,r){var d=void 0;if(s===e||s===i)d=3;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");d=6}t=parseFloat(t),r((t=Number.isInteger(t/o[s].precision)?t/o[s].precision+" "+o[s].symbol:(t/o[s].precision).toFixed(d)+" "+o[s].symbol).toString())},Precise:function(t,e,n){n(t=(t=parseFloat(t))/o[e].precision+" "+o[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,o,s){var r=void 0;if(s===e||s===i)r=1;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}o((t/=r).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},77078:(t,e,n)=>{"use strict";n.r(e),n.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>k,frontMatter:()=>d,metadata:()=>u,toc:()=>c});var a=n(87462),i=n(63366),o=(n(67294),n(3905)),s=n(47940),r=["components"],d={id:"learn-guides-identity",title:"Polkadot-JS Guides about Identity",sidebar_label:"Identity Guides",description:"Polkadot-JS Guides about Identity.",keywords:["registrar","identity","sub-identity","polkadot-js"],slug:"../learn-guides-identity"},l=void 0,u={unversionedId:"learn/learn-guides-identity",id:"learn/learn-guides-identity",title:"Polkadot-JS Guides about Identity",description:"Polkadot-JS Guides about Identity.",source:"@site/../docs/learn/learn-guides-identity.md",sourceDirName:"learn",slug:"/learn-guides-identity",permalink:"/docs/learn-guides-identity",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-identity.md",tags:[],version:"current",lastUpdatedBy:"divdeploy",lastUpdatedAt:1712340071,formattedLastUpdatedAt:"Apr 5, 2024",frontMatter:{id:"learn-guides-identity",title:"Polkadot-JS Guides about Identity",sidebar_label:"Identity Guides",description:"Polkadot-JS Guides about Identity.",keywords:["registrar","identity","sub-identity","polkadot-js"],slug:"../learn-guides-identity"},sidebar:"docs",previous:{title:"Bounty Guides",permalink:"/docs/learn-guides-bounties"},next:{title:"Ledger Guides",permalink:"/docs/learn-guides-ledger"}},p={},c=[{value:"Setting an Identity",id:"setting-an-identity",level:2},{value:"Format Caveat",id:"format-caveat",level:3},{value:"Request Judgement",id:"request-judgement",level:2},{value:"Clearing and Killing an Identity",id:"clearing-and-killing-an-identity",level:2},{value:"Setting Sub-Identities",id:"setting-sub-identities",level:2},{value:"Setting Sub-Identity (Sub-ID) for your Ledger Account",id:"setting-sub-identity-sub-id-for-your-ledger-account",level:3},{value:"Registrars",id:"registrars",level:2},{value:"Becoming a Registrar",id:"becoming-a-registrar",level:3}],h={toc:c},m="wrapper";function k(t){var e=t.components,d=(0,i.Z)(t,r);return(0,o.kt)(m,(0,a.Z)({},h,d,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"sticky",style:{zIndex:1}},(0,o.kt)("br",null),(0,o.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,o.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,o.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,o.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,o.kt)("p",null,"This is an advanced guide that is relevant for entities that would like to become registrars or\nwould like to set sub-identities to an existing account with an identity. See\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-identity"},"this page")," to learn about how to set an identity and have it verified."),(0,o.kt)("h2",{id:"setting-an-identity"},"Setting an Identity"),(0,o.kt)("p",null,"Users can set an identity by registering through default fields such as legal name, display name,\nwebsite, Twitter handle, Riot handle, etc. along with some extra, custom fields for which they would\nlike attestations (see ",(0,o.kt)("a",{parentName:"p",href:"#judgements"},"Judgements"),")."),(0,o.kt)("admonition",{title:"Instructions for setting and clearing Identities",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The procedure to set and clear identities is explained in detail in this support article -\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181981-how-to-set-and-clear-an-identity"},"How to set and clear an Identity"))),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"The Ledger app on ",(0,o.kt)("strong",{parentName:"p"},"Nano S")," doesn't support the extrinsic for setting identity. As a workaround,\ncreate a primary identity with an on-chain account and then using that primary identity, assign a\n",(0,o.kt)("a",{parentName:"p",href:"#sub-accounts"},"sub-identity")," to the Ledger stash.")),(0,o.kt)("h3",{id:"format-caveat"},"Format Caveat"),(0,o.kt)("p",null,"Please note the following caveat: because the fields support different formats, from raw bytes to\nvarious hashes, a UI has no way of telling how to encode a given field it encounters. The\nPolkadot-JS UI currently encodes the raw bytes it encounters as UTF8 strings, which makes these\nvalues readable on-screen. However, given that there are no restrictions on the values that can be\nplaced into these fields, a different UI may interpret them as, for example, IPFS hashes or encoded\nbitmaps. This means any field stored as raw bytes will become unreadable by that specific UI. As\nfield standards crystallize, things will become easier to use but for now, every custom\nimplementation of displaying user information will likely have to make a conscious decision on the\napproach to take, or support multiple formats and then attempt multiple encodings until the output\nmakes sense."),(0,o.kt)("h2",{id:"request-judgement"},"Request Judgement"),(0,o.kt)("admonition",{title:"Instructions for requesting and cancelling Identity judgments",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The procedure to request and cancel identity judgments is explained in detail in this\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181990-how-to-request-and-cancel-identity-judgement"},"support article"))),(0,o.kt)("p",null,"To be judged after submitting your identity information, go to the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics tab in the Polkadot-JS UI")," and select the\n",(0,o.kt)("inlineCode",{parentName:"p"},"identity")," pallet, then ",(0,o.kt)("inlineCode",{parentName:"p"},"requestJudgement"),". For the ",(0,o.kt)("inlineCode",{parentName:"p"},"reg_index")," put the index of the registrar you\nwant to be judged by, and for the ",(0,o.kt)("inlineCode",{parentName:"p"},"max_fee")," put the maximum you're willing to pay for these\nconfirmations."),(0,o.kt)("p",null,"If you don't know which registrar to pick, first check the available registrars by going to\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Chain State tab in the Polkadot-JS UI")," and selecting\n",(0,o.kt)("inlineCode",{parentName:"p"},"identity.registrars()")," to get the full list."),(0,o.kt)("p",null,"To find out how to contact the registrar after the application for judgement or to learn who they\nare, you can check their identity by adding them to your Address Book. Their identity will be\nautomatically loaded."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Chevdor is registrar #1",src:n(65494).Z,width:"579",height:"217"})),(0,o.kt)("admonition",{title:"Requesting judgement through Web3 Foundation Registrar",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"If you requested judgement for your on-chain identity through the Web3 Foundation Registrar (i.e.\nRegistrar #0) you will need to complete a few additional tasks. For more information visit\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179747-how-to-use-the-w3f-registrar-page"},"this support article"),".")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The set identity calls go on-chain. Hence, the contact information is available publicly, for both\nlegitimate entities, like registrars or validators, but also scammers who might impersonate them.\nThe strings in the identity fields are good candidates for homograph attacks, as someone could list\na fraudulent website (web3.f0undation instead of web3.foundation for example) and still get verified\nby the registrar (if the checks are automated)!"),(0,o.kt)("p",{parentName:"admonition"},"In a decentralized network, one should be cautious making transactions with accounts solely based on\ntheir identity. If an account on-chain claims to be of Web3 Foundation, it is wise to verify its\nauthenticity by checking directly with Web3 Foundation or examining the established history of that\naccount on-chain.")),(0,o.kt)("h2",{id:"clearing-and-killing-an-identity"},"Clearing and Killing an Identity"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},'Visit the section "Clear an Identity" on\n',(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181981"},"this support article")," for\nguidelines about clearing identities.")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Clearing:")," Users can clear their identity information and have their deposit returned. Clearing\nan identity also clears all sub accounts and returns their deposits."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Killing:")," The Council can kill an identity that it deems erroneous. This results in a slash of\nthe deposit."),(0,o.kt)("h2",{id:"setting-sub-identities"},"Setting Sub-Identities"),(0,o.kt)("p",null,"To set up sub-identities with Polkadot-JS see the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181991-how-to-set-identities-for-sub-accounts"},"how to set sub-identities"),"\nsupport article and this ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=0Yh1JYg3ZKU"},"video tutorial"),"."),(0,o.kt)("h3",{id:"setting-sub-identity-sub-id-for-your-ledger-account"},"Setting Sub-Identity (Sub-ID) for your Ledger Account"),(0,o.kt)("p",null,"Setting an Identity is not possible on Ledger app yet, but as a workaround, you can\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-identity#setting-an-identity"},"set the identity for an on-chain account ")," and then\nuse it to set a sub-identity to your Ledger account."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Go to ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"https://polkadot.js.org/apps/#/accounts"),". Click on the three vertical dots corresponding to\nthe account to which you already set identity. You should see an option to set onchain\nsub-identities. Click on it."),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{alt:"Add sub-identity in PolkadotJS",src:n(6865).Z,width:"520",height:"338"}))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"In the pop-up window, select your Ledger account from the dropdown and enter text in sub name\nfield. Then, click on set subs button.\n",(0,o.kt)("img",{alt:"Set sub-identity in PolkadotJS",src:n(34440).Z,width:"2155",height:"554"}))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Sign and submit the transaction from the parent account with the identity"))),(0,o.kt)("p",null,"You should now see the sub-identity displayed on-chain. You need to be aware that\n",(0,o.kt)(s.Z,{network:"kusama",path:"consts.identity.basicDeposit",defaultValue:33333e6,filter:"humanReadable",mdxType:"RPC"}),"\n","\nis reserved for setting identity and\n",(0,o.kt)(s.Z,{network:"kusama",path:"consts.identity.subAccountDeposit",defaultValue:6666e6,filter:"humanReadable",mdxType:"RPC"}),"\n","\nfor each sub-identity. This reserved account balance is freed once you\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-identity#clearing-and-killing-an-identity"},"clear the identities")," on the account."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Sub-identity example",src:n(31495).Z,width:"370",height:"554"})),(0,o.kt)("h2",{id:"registrars"},"Registrars"),(0,o.kt)("h3",{id:"becoming-a-registrar"},"Becoming a Registrar"),(0,o.kt)("p",null,"To become a registrar, submit a pre-image and proposal on\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"OpenGov"),", then wait for people to vote on it. For best\nresults, write a post about your identity and intentions beforehand, and once the proposal is in the\nqueue ask people to endorse it so that it gets ahead in the referendum queue."),(0,o.kt)("p",null,"Here's how to submit a proposal to become a registrar:"),(0,o.kt)("p",null,'Go to the Democracy tab, select "Submit preimage", and input the information for this motion -\nnotably which account you\'re nominating to be a registrar in the ',(0,o.kt)("inlineCode",{parentName:"p"},"identity.setRegistrar")," function."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Setting a registrar",src:n(59097).Z,width:"841",height:"417"})),(0,o.kt)("p",null,"Copy the preimage hash. In the above image, that's\n",(0,o.kt)("inlineCode",{parentName:"p"},"0x90a1b2f648fc4eaff4f236b9af9ead77c89ecac953225c5fafb069d27b7131b7"),". Submit the preimage by signing\na transaction."),(0,o.kt)("p",null,'Next, select "Submit Proposal" and enter the previously copied preimage hash. The ',(0,o.kt)("inlineCode",{parentName:"p"},"locked balance"),"\nfield needs to be at least\n",(0,o.kt)(s.Z,{network:"polkadot",path:"consts.identity.basicDeposit",defaultValue:20258e7,filter:"humanReadable",mdxType:"RPC"}),".\n","\nYou can find out the minimum by querying the chain state under\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Chain State")," -> Constants -> democracy ->\nminimumDeposit."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Submitting a proposal",src:n(45208).Z,width:"852",height:"337"})),(0,o.kt)("p",null,"At this point, DOT holders can endorse the motion. With enough endorsements, the motion will become\na referendum, which is then voted on. If it passes, users will be able to request judgement from\nthis registrar."))}k.isMDXComponent=!0},59097:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const a=n.p+"assets/images/12-0b101bf170ff7602551199f625c54b7d.jpg"},45208:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const a=n.p+"assets/images/13-df6ee832e734da72fd9461f4446ea3b9.jpg"},65494:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const a=n.p+"assets/images/16-95dc969648d23cdfdd68bf04135818bb.jpg"},6865:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const a=n.p+"assets/images/sub-id-1-18df099d5c97fdff246815ad91922e32.png"},34440:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const a=n.p+"assets/images/sub-id-2-40b39041ca30296d805003d186f66763.png"},31495:(t,e,n)=>{"use strict";n.d(e,{Z:()=>a});const a=n.p+"assets/images/sub-id-3-a650cce50e6bfef97c03ebd7b463419c.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/2be0d940.d821b959.js b/assets/js/2be0d940.d821b959.js new file mode 100644 index 000000000000..b41558d44a3b --- /dev/null +++ b/assets/js/2be0d940.d821b959.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[2914],{35703:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var a=n(67294);const i=function(e){var t,n=e.message,i=(0,a.useState)(!0),o=i[0],s=i[1];return a.createElement(a.Fragment,null,o&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var a=n(74165),i=n(15861),o=n(67294),s=n(87152),r=n(9712),d=n(67425);function l(e,t,n){return u.apply(this,arguments)}function u(){return(u=(0,i.Z)((0,a.Z)().mark((function e(t,n,i){var o,d,l,u,p;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=void 0,d=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return o="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return o="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return o="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return o="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==o){e.next=18;break}return e.abrupt("return");case 18:return l=new s.U(o),e.next=21,r.G.create({provider:l});case 21:u=e.sent,(p=n.split(".")).forEach((function(e){e in u&&(u=u[e])})),e.t1=p[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return d=u.toString(),e.abrupt("break",35);case 29:return e.next=31,u();case 31:return d=(d=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+n);case 35:return e.abrupt("return",d);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,n,a){switch(t){case"humanReadable":(0,d.HumanReadable)(e,n,a);break;case"precise":(0,d.Precise)(e,n,a);break;case"blocksToDays":(0,d.BlocksToDays)(e,a);break;case"erasToDays":(0,d.ErasToDays)(e,a,n);break;case"percentage":(0,d.Percentage)(e,a);break;case"permillToPercent":(0,d.PermillToPercent)(e,a);break;case"arrayLength":(0,d.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,n=e.path,s=e.defaultValue,r=e.filter,d=void 0===r?void 0:r,u=(0,o.useState)(""),c=u[0],h=u[1];return t=t.toLowerCase(),(0,o.useEffect)((function(){void 0!==d?p(s.toString(),d,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var o=function(){var e=(0,i.Z)((0,a.Z)().mark((function e(){var i;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l(t,n,h);case 2:if(void 0!==(i=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==d?p(i,d,t,h):h(i);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{o()}catch(r){console.log(r)}}}),[]),c}},67425:e=>{var t="polkadot",n="kusama",a="statemine",i="statemint",o={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,r){var d=void 0;if(s===t||s===i)d=3;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");d=6}e=parseFloat(e),r((e=Number.isInteger(e/o[s].precision)?e/o[s].precision+" "+o[s].symbol:(e/o[s].precision).toFixed(d)+" "+o[s].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/o[t].precision+" "+o[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,o,s){var r=void 0;if(s===t||s===i)r=1;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}o((e/=r).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())}}},77078:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>k,frontMatter:()=>l,metadata:()=>p,toc:()=>h});var a=n(87462),i=n(63366),o=(n(67294),n(3905)),s=n(47940),r=n(35703),d=["components"],l={id:"learn-guides-identity",title:"Polkadot-JS Guides about Identity",sidebar_label:"Identity Guides",description:"Polkadot-JS Guides about Identity.",keywords:["registrar","identity","sub-identity","polkadot-js"],slug:"../learn-guides-identity"},u=void 0,p={unversionedId:"learn/learn-guides-identity",id:"learn/learn-guides-identity",title:"Polkadot-JS Guides about Identity",description:"Polkadot-JS Guides about Identity.",source:"@site/../docs/learn/learn-guides-identity.md",sourceDirName:"learn",slug:"/learn-guides-identity",permalink:"/docs/learn-guides-identity",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-identity.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-identity",title:"Polkadot-JS Guides about Identity",sidebar_label:"Identity Guides",description:"Polkadot-JS Guides about Identity.",keywords:["registrar","identity","sub-identity","polkadot-js"],slug:"../learn-guides-identity"},sidebar:"docs",previous:{title:"Bounty Guides",permalink:"/docs/learn-guides-bounties"},next:{title:"Ledger Guides",permalink:"/docs/learn-guides-ledger"}},c={},h=[{value:"Setting an Identity",id:"setting-an-identity",level:2},{value:"Format Caveat",id:"format-caveat",level:3},{value:"Request Judgement",id:"request-judgement",level:2},{value:"Clearing and Killing an Identity",id:"clearing-and-killing-an-identity",level:2},{value:"Setting Sub-Identities",id:"setting-sub-identities",level:2},{value:"Setting Sub-Identity (Sub-ID) for your Ledger Account",id:"setting-sub-identity-sub-id-for-your-ledger-account",level:3},{value:"Registrars",id:"registrars",level:2},{value:"Becoming a Registrar",id:"becoming-a-registrar",level:3}],m={toc:h},g="wrapper";function k(e){var t=e.components,l=(0,i.Z)(e,d);return(0,o.kt)(g,(0,a.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(r.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)("p",null,"This is an advanced guide that is relevant for entities that would like to become registrars or\nwould like to set sub-identities to an existing account with an identity. See\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-identity"},"this page")," to learn about how to set an identity and have it verified."),(0,o.kt)("h2",{id:"setting-an-identity"},"Setting an Identity"),(0,o.kt)("p",null,"Users can set an identity by registering through default fields such as legal name, display name,\nwebsite, Twitter handle, Riot handle, etc. along with some extra, custom fields for which they would\nlike attestations (see ",(0,o.kt)("a",{parentName:"p",href:"#judgements"},"Judgements"),")."),(0,o.kt)("admonition",{title:"Instructions for setting and clearing Identities",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The procedure to set and clear identities is explained in detail in this support article -\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181981-how-to-set-and-clear-an-identity"},"How to set and clear an Identity"))),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"The Ledger app on ",(0,o.kt)("strong",{parentName:"p"},"Nano S")," doesn't support the extrinsic for setting identity. As a workaround,\ncreate a primary identity with an on-chain account and then using that primary identity, assign a\n",(0,o.kt)("a",{parentName:"p",href:"#sub-accounts"},"sub-identity")," to the Ledger stash.")),(0,o.kt)("h3",{id:"format-caveat"},"Format Caveat"),(0,o.kt)("p",null,"Please note the following caveat: because the fields support different formats, from raw bytes to\nvarious hashes, a UI has no way of telling how to encode a given field it encounters. The\nPolkadot-JS UI currently encodes the raw bytes it encounters as UTF8 strings, which makes these\nvalues readable on-screen. However, given that there are no restrictions on the values that can be\nplaced into these fields, a different UI may interpret them as, for example, IPFS hashes or encoded\nbitmaps. This means any field stored as raw bytes will become unreadable by that specific UI. As\nfield standards crystallize, things will become easier to use but for now, every custom\nimplementation of displaying user information will likely have to make a conscious decision on the\napproach to take, or support multiple formats and then attempt multiple encodings until the output\nmakes sense."),(0,o.kt)("h2",{id:"request-judgement"},"Request Judgement"),(0,o.kt)("admonition",{title:"Instructions for requesting and cancelling Identity judgments",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The procedure to request and cancel identity judgments is explained in detail in this\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181990-how-to-request-and-cancel-identity-judgement"},"support article"))),(0,o.kt)("p",null,"To be judged after submitting your identity information, go to the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics tab in the Polkadot-JS UI")," and select the\n",(0,o.kt)("inlineCode",{parentName:"p"},"identity")," pallet, then ",(0,o.kt)("inlineCode",{parentName:"p"},"requestJudgement"),". For the ",(0,o.kt)("inlineCode",{parentName:"p"},"reg_index")," put the index of the registrar you\nwant to be judged by, and for the ",(0,o.kt)("inlineCode",{parentName:"p"},"max_fee")," put the maximum you're willing to pay for these\nconfirmations."),(0,o.kt)("p",null,"If you don't know which registrar to pick, first check the available registrars by going to\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Chain State tab in the Polkadot-JS UI")," and selecting\n",(0,o.kt)("inlineCode",{parentName:"p"},"identity.registrars()")," to get the full list."),(0,o.kt)("p",null,"To find out how to contact the registrar after the application for judgement or to learn who they\nare, you can check their identity by adding them to your Address Book. Their identity will be\nautomatically loaded."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Chevdor is registrar #1",src:n(65494).Z,width:"579",height:"217"})),(0,o.kt)("admonition",{title:"Requesting judgement through Web3 Foundation Registrar",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"If you requested judgement for your on-chain identity through the Web3 Foundation Registrar (i.e.\nRegistrar #0) you will need to complete a few additional tasks. For more information visit\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179747-how-to-use-the-w3f-registrar-page"},"this support article"),".")),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The set identity calls go on-chain. Hence, the contact information is available publicly, for both\nlegitimate entities, like registrars or validators, but also scammers who might impersonate them.\nThe strings in the identity fields are good candidates for homograph attacks, as someone could list\na fraudulent website (web3.f0undation instead of web3.foundation for example) and still get verified\nby the registrar (if the checks are automated)!"),(0,o.kt)("p",{parentName:"admonition"},"In a decentralized network, one should be cautious making transactions with accounts solely based on\ntheir identity. If an account on-chain claims to be of Web3 Foundation, it is wise to verify its\nauthenticity by checking directly with Web3 Foundation or examining the established history of that\naccount on-chain.")),(0,o.kt)("h2",{id:"clearing-and-killing-an-identity"},"Clearing and Killing an Identity"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},'Visit the section "Clear an Identity" on\n',(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181981"},"this support article")," for\nguidelines about clearing identities.")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Clearing:")," Users can clear their identity information and have their deposit returned. Clearing\nan identity also clears all sub accounts and returns their deposits."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Killing:")," The Council can kill an identity that it deems erroneous. This results in a slash of\nthe deposit."),(0,o.kt)("h2",{id:"setting-sub-identities"},"Setting Sub-Identities"),(0,o.kt)("p",null,"To set up sub-identities with Polkadot-JS see the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181991-how-to-set-identities-for-sub-accounts"},"how to set sub-identities"),"\nsupport article and this ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=0Yh1JYg3ZKU"},"video tutorial"),"."),(0,o.kt)("h3",{id:"setting-sub-identity-sub-id-for-your-ledger-account"},"Setting Sub-Identity (Sub-ID) for your Ledger Account"),(0,o.kt)("p",null,"Setting an Identity is not possible on Ledger app yet, but as a workaround, you can\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-identity#setting-an-identity"},"set the identity for an on-chain account ")," and then\nuse it to set a sub-identity to your Ledger account."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Go to ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"https://polkadot.js.org/apps/#/accounts"),". Click on the three vertical dots corresponding to\nthe account to which you already set identity. You should see an option to set onchain\nsub-identities. Click on it."),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{alt:"Add sub-identity in PolkadotJS",src:n(6865).Z,width:"520",height:"338"}))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"In the pop-up window, select your Ledger account from the dropdown and enter text in sub name\nfield. Then, click on set subs button.\n",(0,o.kt)("img",{alt:"Set sub-identity in PolkadotJS",src:n(34440).Z,width:"2155",height:"554"}))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Sign and submit the transaction from the parent account with the identity"))),(0,o.kt)("p",null,"You should now see the sub-identity displayed on-chain. You need to be aware that\n",(0,o.kt)(s.Z,{network:"kusama",path:"consts.identity.basicDeposit",defaultValue:33333e6,filter:"humanReadable",mdxType:"RPC"}),"\n","\nis reserved for setting identity and\n",(0,o.kt)(s.Z,{network:"kusama",path:"consts.identity.subAccountDeposit",defaultValue:6666e6,filter:"humanReadable",mdxType:"RPC"}),"\n","\nfor each sub-identity. This reserved account balance is freed once you\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-identity#clearing-and-killing-an-identity"},"clear the identities")," on the account."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Sub-identity example",src:n(31495).Z,width:"370",height:"554"})),(0,o.kt)("h2",{id:"registrars"},"Registrars"),(0,o.kt)("h3",{id:"becoming-a-registrar"},"Becoming a Registrar"),(0,o.kt)("p",null,"To become a registrar, submit a pre-image and proposal on\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"OpenGov"),", then wait for people to vote on it. For best\nresults, write a post about your identity and intentions beforehand, and once the proposal is in the\nqueue ask people to endorse it so that it gets ahead in the referendum queue."),(0,o.kt)("p",null,"Here's how to submit a proposal to become a registrar:"),(0,o.kt)("p",null,'Go to the Democracy tab, select "Submit preimage", and input the information for this motion -\nnotably which account you\'re nominating to be a registrar in the ',(0,o.kt)("inlineCode",{parentName:"p"},"identity.setRegistrar")," function."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Setting a registrar",src:n(59097).Z,width:"841",height:"417"})),(0,o.kt)("p",null,"Copy the preimage hash. In the above image, that's\n",(0,o.kt)("inlineCode",{parentName:"p"},"0x90a1b2f648fc4eaff4f236b9af9ead77c89ecac953225c5fafb069d27b7131b7"),". Submit the preimage by signing\na transaction."),(0,o.kt)("p",null,'Next, select "Submit Proposal" and enter the previously copied preimage hash. The ',(0,o.kt)("inlineCode",{parentName:"p"},"locked balance"),"\nfield needs to be at least\n",(0,o.kt)(s.Z,{network:"polkadot",path:"consts.identity.basicDeposit",defaultValue:20258e7,filter:"humanReadable",mdxType:"RPC"}),".\n","\nYou can find out the minimum by querying the chain state under\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Chain State")," -> Constants -> democracy ->\nminimumDeposit."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Submitting a proposal",src:n(45208).Z,width:"852",height:"337"})),(0,o.kt)("p",null,"At this point, DOT holders can endorse the motion. With enough endorsements, the motion will become\na referendum, which is then voted on. If it passes, users will be able to request judgement from\nthis registrar."))}k.isMDXComponent=!0},59097:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/12-0b101bf170ff7602551199f625c54b7d.jpg"},45208:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/13-df6ee832e734da72fd9461f4446ea3b9.jpg"},65494:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/16-95dc969648d23cdfdd68bf04135818bb.jpg"},6865:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/sub-id-1-18df099d5c97fdff246815ad91922e32.png"},34440:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/sub-id-2-40b39041ca30296d805003d186f66763.png"},31495:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/sub-id-3-a650cce50e6bfef97c03ebd7b463419c.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/3184af97.60e20614.js b/assets/js/3184af97.60e20614.js new file mode 100644 index 000000000000..b8d3066ce1b7 --- /dev/null +++ b/assets/js/3184af97.60e20614.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1125],{3905:(e,o,t)=>{t.d(o,{Zo:()=>u,kt:()=>h});var n=t(67294);function r(e,o,t){return o in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}function a(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var o=1;o=0||(r[t]=e[t]);return r}(e,o);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=n.createContext({}),s=function(e){var o=n.useContext(c),t=o;return e&&(t="function"==typeof e?e(o):i(i({},o),e)),t},u=function(e){var o=s(e.components);return n.createElement(c.Provider,{value:o},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var o=e.children;return n.createElement(n.Fragment,{},o)}},m=n.forwardRef((function(e,o){var t=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(t),m=r,h=d["".concat(c,".").concat(m)]||d[m]||p[m]||a;return t?n.createElement(h,i(i({ref:o},u),{},{components:t})):n.createElement(h,i({ref:o},u))}));function h(e,o){var t=arguments,r=o&&o.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=m;var l={};for(var c in o)hasOwnProperty.call(o,c)&&(l[c]=o[c]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{t.d(o,{Z:()=>r});var n=t(67294);const r=function(e){var o,t=e.message,r=(0,n.useState)(!0),a=r[0],i=r[1];return n.createElement(n.Fragment,null,a&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(o=t,o.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},43335:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>d,contentTitle:()=>s,default:()=>v,frontMatter:()=>c,metadata:()=>u,toc:()=>p});var n=t(87462),r=t(63366),a=(t(67294),t(3905)),i=t(35703),l=["components"],c={id:"maintain-guides-how-to-vote-councillor",title:"Voting for Councillors",sidebar_label:"Voting for Councillors",description:"Steps on how to vote for councillors.",keywords:["council","vote","councillors"],slug:"../maintain-guides-how-to-vote-councillor"},s=void 0,u={unversionedId:"maintain/archive/maintain-guides-how-to-vote-councillor",id:"maintain/archive/maintain-guides-how-to-vote-councillor",title:"Voting for Councillors",description:"Steps on how to vote for councillors.",source:"@site/../docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",sourceDirName:"maintain/archive",slug:"/maintain/maintain-guides-how-to-vote-councillor",permalink:"/docs/maintain/maintain-guides-how-to-vote-councillor",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"maintain-guides-how-to-vote-councillor",title:"Voting for Councillors",sidebar_label:"Voting for Councillors",description:"Steps on how to vote for councillors.",keywords:["council","vote","councillors"],slug:"../maintain-guides-how-to-vote-councillor"},sidebar:"docs",previous:{title:"Join the Council",permalink:"/docs/maintain/maintain-guides-how-to-join-council"}},d={},p=[{value:"Voting for Councillors",id:"voting-for-councillors",level:2},{value:"Removing your Vote",id:"removing-your-vote",level:2}],m={toc:p},h="wrapper";function v(e){var o=e.components,c=(0,r.Z)(e,l);return(0,a.kt)(h,(0,n.Z)({},m,c,{components:o,mdxType:"MDXLayout"}),(0,a.kt)(i.Z,{message:"The content on this page is archived. For up-to-date information about governance, see the\n[Polkadot OpenGov page](/docs/learn-polkadot-opengov).",mdxType:"MessageBox"}),(0,a.kt)("p",null,"The council is an elected body of on-chain accounts that are intended to represent the passive\nstakeholders of Polkadot and/or Kusama. The council has two major tasks in governance: proposing\nreferenda and vetoing dangerous or malicious referenda. For more information on the council, see the\n",(0,a.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"governance page"),". This guide will walk you through\nvoting for councillors in the elections."),(0,a.kt)("h2",{id:"voting-for-councillors"},"Voting for Councillors"),(0,a.kt)("p",null,"Voting for councillors requires you to reserve\n20.064 DOT as a base amount and an amount\nof 0.032 DOT per vote. You can then bond\nwhatever amount you wish to put behind your vote. See the\n",(0,a.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy"},"democracy guide")," for more information."),(0,a.kt)("admonition",{title:"Voting and staking locks can overlap",type:"info"},(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},"A user can use staked funds to vote for Councillors (and/or use those funds in referenda)."),(0,a.kt)("li",{parentName:"ul"},"A user is only prohibited from transferring these funds to another account."))),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"If your balance is vesting, you cannot use unvested tokens for this lock. You will have to wait\nuntil you have at least that many ",(0,a.kt)("strong",{parentName:"p"},"free")," tokens to vote.")),(0,a.kt)("p",null,"Like the validator elections, you can approve up to 16 different councillors and your vote will be\nequalized among the chosen group. Unlike validator elections, there is no unbonding period for your\nreserved tokens. Once you remove your vote, your tokens will be liquid again."),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"It is your responsibility not to put your entire balance into the reserved value when you make a\nvote for councillors. It's best to keep ",(0,a.kt)("em",{parentName:"p"},"at least")," enough DOT/KSM to pay for transaction fees.")),(0,a.kt)("p",null,"Go to the ",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS Apps Dashboard"),' and click on the "Council" tab.\nOn the right side of the window there are two blue buttons, click on the one that says "Vote."'),(0,a.kt)("p",null,'Since the council uses approval voting, when you vote you signal which of the candidates you approve\nof and your voted tokens will be equalized among the selected candidates. Select up to 16 council\ncandidates by moving the slider to "Aye" for each one that you want to be elected. When you\'ve made\nthe proper configuration submit your transaction.'),(0,a.kt)("p",null,"You should see your vote appear in the interface immediately after your transaction is included."),(0,a.kt)("h2",{id:"removing-your-vote"},"Removing your Vote"),(0,a.kt)("p",null,"In order to get your reserved tokens back, you will need to remove your vote. Only remove your vote\nwhen you're done participating in elections and you no longer want your reserved tokens to count for\nthe councillors that you approve."),(0,a.kt)("p",null,'Go to the "Governance" > "Council" tab on the\n',(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS Apps Dashboard"),"."),(0,a.kt)("p",null,'Under the "Council overview" tab, click on "Vote".'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"polkadotjs_removeVoter",src:t(30301).Z,width:"1878",height:"361"})),(0,a.kt)("p",null,'Issue the "Unvote all" option.'),(0,a.kt)("p",null,"When the transaction is included in a block you should have your reserved tokens made liquid again\nand your vote will no longer be counting for any councillors in the elections starting in the next\nterm."))}v.isMDXComponent=!0},30301:(e,o,t)=>{t.d(o,{Z:()=>n});const n=t.p+"assets/images/polkadotjs_removeVoter-b66eb203df51ecdb1d926990120aa76b.png"}}]); \ No newline at end of file diff --git a/assets/js/3184af97.a375fcd6.js b/assets/js/3184af97.a375fcd6.js deleted file mode 100644 index 61634ecb18e1..000000000000 --- a/assets/js/3184af97.a375fcd6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1125],{3905:(e,o,t)=>{t.d(o,{Zo:()=>s,kt:()=>m});var n=t(67294);function r(e,o,t){return o in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}function i(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o&&(n=n.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var o=1;o=0||(r[t]=e[t]);return r}(e,o);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=n.createContext({}),u=function(e){var o=n.useContext(c),t=o;return e&&(t="function"==typeof e?e(o):a(a({},o),e)),t},s=function(e){var o=u(e.components);return n.createElement(c.Provider,{value:o},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var o=e.children;return n.createElement(n.Fragment,{},o)}},h=n.forwardRef((function(e,o){var t=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=u(t),h=r,m=d["".concat(c,".").concat(h)]||d[h]||p[h]||i;return t?n.createElement(m,a(a({ref:o},s),{},{components:t})):n.createElement(m,a({ref:o},s))}));function m(e,o){var t=arguments,r=o&&o.mdxType;if("string"==typeof e||r){var i=t.length,a=new Array(i);a[0]=h;var l={};for(var c in o)hasOwnProperty.call(o,c)&&(l[c]=o[c]);l.originalType=e,l[d]="string"==typeof e?e:r,a[1]=l;for(var u=2;u{t.r(o),t.d(o,{assets:()=>s,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>u,toc:()=>d});var n=t(87462),r=t(63366),i=(t(67294),t(3905)),a=["components"],l={id:"maintain-guides-how-to-vote-councillor",title:"Voting for Councillors",sidebar_label:"Voting for Councillors",description:"Steps on how to vote for councillors.",keywords:["council","vote","councillors"],slug:"../maintain-guides-how-to-vote-councillor"},c=void 0,u={unversionedId:"maintain/archive/maintain-guides-how-to-vote-councillor",id:"maintain/archive/maintain-guides-how-to-vote-councillor",title:"Voting for Councillors",description:"Steps on how to vote for councillors.",source:"@site/../docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",sourceDirName:"maintain/archive",slug:"/maintain/maintain-guides-how-to-vote-councillor",permalink:"/docs/maintain/maintain-guides-how-to-vote-councillor",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"maintain-guides-how-to-vote-councillor",title:"Voting for Councillors",sidebar_label:"Voting for Councillors",description:"Steps on how to vote for councillors.",keywords:["council","vote","councillors"],slug:"../maintain-guides-how-to-vote-councillor"},sidebar:"docs",previous:{title:"Join the Council",permalink:"/docs/maintain/maintain-guides-how-to-join-council"}},s={},d=[{value:"Voting for Councillors",id:"voting-for-councillors",level:2},{value:"Removing your Vote",id:"removing-your-vote",level:2}],p={toc:d},h="wrapper";function m(e){var o=e.components,l=(0,r.Z)(e,a);return(0,i.kt)(h,(0,n.Z)({},p,l,{components:o,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"The content on this page is archived. For up-to-date information about governance, see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Polkadot OpenGov page"),".")),(0,i.kt)("p",null,"The council is an elected body of on-chain accounts that are intended to represent the passive\nstakeholders of Polkadot and/or Kusama. The council has two major tasks in governance: proposing\nreferenda and vetoing dangerous or malicious referenda. For more information on the council, see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"governance page"),". This guide will walk you through\nvoting for councillors in the elections."),(0,i.kt)("h2",{id:"voting-for-councillors"},"Voting for Councillors"),(0,i.kt)("p",null,"Voting for councillors requires you to reserve\n20.064 DOT as a base amount and an amount\nof 0.032 DOT per vote. You can then bond\nwhatever amount you wish to put behind your vote. See the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy"},"democracy guide")," for more information."),(0,i.kt)("admonition",{title:"Voting and staking locks can overlap",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"A user can use staked funds to vote for Councillors (and/or use those funds in referenda)."),(0,i.kt)("li",{parentName:"ul"},"A user is only prohibited from transferring these funds to another account."))),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},"If your balance is vesting, you cannot use unvested tokens for this lock. You will have to wait\nuntil you have at least that many ",(0,i.kt)("strong",{parentName:"p"},"free")," tokens to vote.")),(0,i.kt)("p",null,"Like the validator elections, you can approve up to 16 different councillors and your vote will be\nequalized among the chosen group. Unlike validator elections, there is no unbonding period for your\nreserved tokens. Once you remove your vote, your tokens will be liquid again."),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},"It is your responsibility not to put your entire balance into the reserved value when you make a\nvote for councillors. It's best to keep ",(0,i.kt)("em",{parentName:"p"},"at least")," enough DOT/KSM to pay for transaction fees.")),(0,i.kt)("p",null,"Go to the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS Apps Dashboard"),' and click on the "Council" tab.\nOn the right side of the window there are two blue buttons, click on the one that says "Vote."'),(0,i.kt)("p",null,'Since the council uses approval voting, when you vote you signal which of the candidates you approve\nof and your voted tokens will be equalized among the selected candidates. Select up to 16 council\ncandidates by moving the slider to "Aye" for each one that you want to be elected. When you\'ve made\nthe proper configuration submit your transaction.'),(0,i.kt)("p",null,"You should see your vote appear in the interface immediately after your transaction is included."),(0,i.kt)("h2",{id:"removing-your-vote"},"Removing your Vote"),(0,i.kt)("p",null,"In order to get your reserved tokens back, you will need to remove your vote. Only remove your vote\nwhen you're done participating in elections and you no longer want your reserved tokens to count for\nthe councillors that you approve."),(0,i.kt)("p",null,'Go to the "Governance" > "Council" tab on the\n',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS Apps Dashboard"),"."),(0,i.kt)("p",null,'Under the "Council overview" tab, click on "Vote".'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"polkadotjs_removeVoter",src:t(30301).Z,width:"1878",height:"361"})),(0,i.kt)("p",null,'Issue the "Unvote all" option.'),(0,i.kt)("p",null,"When the transaction is included in a block you should have your reserved tokens made liquid again\nand your vote will no longer be counting for any councillors in the elections starting in the next\nterm."))}m.isMDXComponent=!0},30301:(e,o,t)=>{t.d(o,{Z:()=>n});const n=t.p+"assets/images/polkadotjs_removeVoter-b66eb203df51ecdb1d926990120aa76b.png"}}]); \ No newline at end of file diff --git a/assets/js/390ca211.074fdbce.js b/assets/js/390ca211.074fdbce.js deleted file mode 100644 index fcd0db51b31a..000000000000 --- a/assets/js/390ca211.074fdbce.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9596],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=c(n),h=o,m=u["".concat(s,".").concat(h)]||u[h]||p[h]||r;return n?a.createElement(m,l(l({ref:t},d),{},{components:n})):a.createElement(m,l({ref:t},d))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=h;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:o,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>u});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),l=["components"],i={id:"learn-launch",title:"Polkadot Launch Phases",sidebar_label:"Polkadot Launch Phases",description:"Polkadot's Launch Process and its Individual Phases.",keyword:["launch","phases","polkadot","DOT","claim","token sale","redenomination"],slug:"../learn-launch"},s=void 0,c={unversionedId:"learn/archive/learn-launch",id:"learn/archive/learn-launch",title:"Polkadot Launch Phases",description:"Polkadot's Launch Process and its Individual Phases.",source:"@site/../docs/learn/archive/learn-launch.md",sourceDirName:"learn/archive",slug:"/learn/learn-launch",permalink:"/docs/learn/learn-launch",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-launch.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"learn-launch",title:"Polkadot Launch Phases",sidebar_label:"Polkadot Launch Phases",description:"Polkadot's Launch Process and its Individual Phases.",keyword:["launch","phases","polkadot","DOT","claim","token sale","redenomination"],slug:"../learn-launch"},sidebar:"docs",previous:{title:"Gov1 Treasury",permalink:"/docs/learn/learn-treasury"},next:{title:"Redenomination of DOT",permalink:"/docs/learn/learn-redenomination"}},d={},u=[{value:"The PoA Launch",id:"the-poa-launch",level:2},{value:"Nominated Proof of Stake",id:"nominated-proof-of-stake",level:2},{value:"Governance",id:"governance",level:2},{value:"Removal of Sudo",id:"removal-of-sudo",level:2},{value:"Balance Transfers",id:"balance-transfers",level:2},{value:"Core Functionality",id:"core-functionality",level:2}],p={toc:u},h="wrapper";function m(e){var t=e.components,n=(0,o.Z)(e,l);return(0,r.kt)(h,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"The content on this page is archived.")),(0,r.kt)("p",null,"The Polkadot network has a phased roll-out plan, with important milestones toward decentralization\nmarking each phase. Keep up-to-date with the Polkadot's phased roll-out plan at by viewing the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/launch-roadmap/"},"roadmap")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Current Phase: Post-launch Upgrades")),(0,r.kt)("admonition",{title:"Claims",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For the most update-to-date information on DOT claims (if you bought your DOTs before Polkadot went\nlive), check out the following claiming resources and tutorials:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000063553-why-do-i-need-to-claim-my-dot-tokens-and-is-there-a-deadline-"},"Why do I need to claim my DOT tokens, and is there a deadline?")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000063667-i-claimed-my-dot-before-polkadot-went-live-but-still-see-zero-balance-"},"I claimed my DOT before Polkadot went live, but still see zero balance!")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000138217-how-to-claim-your-dot-tutorial"},"How to claim your DOT - Tutorial")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000103605-how-do-i-know-my-claim-worked-"},"How do I know my claim worked?")))),(0,r.kt)("h2",{id:"the-poa-launch"},"The PoA Launch"),(0,r.kt)("p",null,"The Genesis block of the Polkadot network was launched on May 26, 2020, as a Proof of Authority\n(PoA) network. Governance was restricted to the single Sudo (super-user) key, which was held by Web3\nFoundation to issue the commands and upgrades necessary to complete the launch process. During this\ntime, validators started joining the network and signaling their intention to participate in\nconsensus."),(0,r.kt)("h2",{id:"nominated-proof-of-stake"},"Nominated Proof of Stake"),(0,r.kt)("p",null,"Once Web3 Foundation was confident in the stability of the network and there was a sufficient number\nof validator intentions, Web3 Foundation used ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/InekMjJpVdo"},"Sudo")," ","\u2014"," a\nsuperuser account with access to governance functions ","\u2014"," to initiate the first validator\nelection. Following this election, the network transitioned from PoA into its second phase,\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"Nominated Proof of Stake (NPoS)"),", on June 18, 2020."),(0,r.kt)("h2",{id:"governance"},"Governance"),(0,r.kt)("p",null,"After the chain had been running well with the validator set, the Sudo key issued a runtime upgrade\nthat enabled the suite of governance modules in Polkadot; namely, the modules to enable a\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"Council"),", a\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#technical-committee"},"Technical Committee"),", and\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#public-referenda"},"public referenda"),"."),(0,r.kt)("h2",{id:"removal-of-sudo"},"Removal of Sudo"),(0,r.kt)("p",null,"The Sudo module was removed by a runtime upgrade on July 20, 2020, transitioning the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"governance")," of the chain into the hands of the token (DOT) holders."),(0,r.kt)("p",null,"From this point, the network has been entirely in the hands of the token holders and is no longer\nunder control of any centralized authority."),(0,r.kt)("h2",{id:"balance-transfers"},"Balance Transfers"),(0,r.kt)("p",null,"To enable balance transfers, the community made a public proposal for a runtime upgrade that lifted\nthe restriction on balance transfers. Transfer functionality was subsequently enabled on Polkadot at\nblock number 1_205_128 on August 18, 2020, at 16:39 UTC."),(0,r.kt)("h2",{id:"core-functionality"},"Core Functionality"),(0,r.kt)("p",null,"After five years of research and development and a multi-stage launch that began in May 2020,\nPolkadot launch was completed on December 18, 2021, with all auction-winning parachains producing\nblocks on the network."),(0,r.kt)("p",null,"Check out these resources for further information:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network/blog/parachains-are-live-polkadot-launch-is-now-complete/"},"Polkadot Network blog"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/Polkadot/comments/s3yb3d/l_for_polkadot_launch_polkadot_a_to_z/"},"Polkadot A to Z: L for Polkadot Launch"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/390ca211.5b750b89.js b/assets/js/390ca211.5b750b89.js new file mode 100644 index 000000000000..bfa432f6a4a8 --- /dev/null +++ b/assets/js/390ca211.5b750b89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9596],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(n),h=o,m=d["".concat(s,".").concat(h)]||d[h]||p[h]||r;return n?a.createElement(m,l(l({ref:t},u),{},{components:n})):a.createElement(m,l({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=h;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:o,l[1]=i;for(var c=2;c{n.d(t,{Z:()=>o});var a=n(67294);const o=function(e){var t,n=e.message,o=(0,a.useState)(!0),r=o[0],l=o[1];return a.createElement(a.Fragment,null,r&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){l(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},5355:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>k,frontMatter:()=>s,metadata:()=>u,toc:()=>p});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),l=n(35703),i=["components"],s={id:"learn-launch",title:"Polkadot Launch Phases",sidebar_label:"Polkadot Launch Phases",description:"Polkadot's Launch Process and its Individual Phases.",keyword:["launch","phases","polkadot","DOT","claim","token sale","redenomination"],slug:"../learn-launch"},c=void 0,u={unversionedId:"learn/archive/learn-launch",id:"learn/archive/learn-launch",title:"Polkadot Launch Phases",description:"Polkadot's Launch Process and its Individual Phases.",source:"@site/../docs/learn/archive/learn-launch.md",sourceDirName:"learn/archive",slug:"/learn/learn-launch",permalink:"/docs/learn/learn-launch",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-launch.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-launch",title:"Polkadot Launch Phases",sidebar_label:"Polkadot Launch Phases",description:"Polkadot's Launch Process and its Individual Phases.",keyword:["launch","phases","polkadot","DOT","claim","token sale","redenomination"],slug:"../learn-launch"},sidebar:"docs",previous:{title:"Gov1 Treasury",permalink:"/docs/learn/learn-treasury"},next:{title:"Redenomination of DOT",permalink:"/docs/learn/learn-redenomination"}},d={},p=[{value:"The PoA Launch",id:"the-poa-launch",level:2},{value:"Nominated Proof of Stake",id:"nominated-proof-of-stake",level:2},{value:"Governance",id:"governance",level:2},{value:"Removal of Sudo",id:"removal-of-sudo",level:2},{value:"Balance Transfers",id:"balance-transfers",level:2},{value:"Core Functionality",id:"core-functionality",level:2}],h={toc:p},m="wrapper";function k(e){var t=e.components,n=(0,o.Z)(e,i);return(0,r.kt)(m,(0,a.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(l.Z,{message:"The content on this page is archived.",mdxType:"MessageBox"}),(0,r.kt)("p",null,"The Polkadot network has a phased roll-out plan, with important milestones toward decentralization\nmarking each phase. Keep up-to-date with the Polkadot's phased roll-out plan at by viewing the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/launch-roadmap/"},"roadmap")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Current Phase: Post-launch Upgrades")),(0,r.kt)("admonition",{title:"Claims",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For the most update-to-date information on DOT claims (if you bought your DOTs before Polkadot went\nlive), check out the following claiming resources and tutorials:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000063553-why-do-i-need-to-claim-my-dot-tokens-and-is-there-a-deadline-"},"Why do I need to claim my DOT tokens, and is there a deadline?")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000063667-i-claimed-my-dot-before-polkadot-went-live-but-still-see-zero-balance-"},"I claimed my DOT before Polkadot went live, but still see zero balance!")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000138217-how-to-claim-your-dot-tutorial"},"How to claim your DOT - Tutorial")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000103605-how-do-i-know-my-claim-worked-"},"How do I know my claim worked?")))),(0,r.kt)("h2",{id:"the-poa-launch"},"The PoA Launch"),(0,r.kt)("p",null,"The Genesis block of the Polkadot network was launched on May 26, 2020, as a Proof of Authority\n(PoA) network. Governance was restricted to the single Sudo (super-user) key, which was held by Web3\nFoundation to issue the commands and upgrades necessary to complete the launch process. During this\ntime, validators started joining the network and signaling their intention to participate in\nconsensus."),(0,r.kt)("h2",{id:"nominated-proof-of-stake"},"Nominated Proof of Stake"),(0,r.kt)("p",null,"Once Web3 Foundation was confident in the stability of the network and there was a sufficient number\nof validator intentions, Web3 Foundation used ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/InekMjJpVdo"},"Sudo")," ","\u2014"," a\nsuperuser account with access to governance functions ","\u2014"," to initiate the first validator\nelection. Following this election, the network transitioned from PoA into its second phase,\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"Nominated Proof of Stake (NPoS)"),", on June 18, 2020."),(0,r.kt)("h2",{id:"governance"},"Governance"),(0,r.kt)("p",null,"After the chain had been running well with the validator set, the Sudo key issued a runtime upgrade\nthat enabled the suite of governance modules in Polkadot; namely, the modules to enable a\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"Council"),", a\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#technical-committee"},"Technical Committee"),", and\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#public-referenda"},"public referenda"),"."),(0,r.kt)("h2",{id:"removal-of-sudo"},"Removal of Sudo"),(0,r.kt)("p",null,"The Sudo module was removed by a runtime upgrade on July 20, 2020, transitioning the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"governance")," of the chain into the hands of the token (DOT) holders."),(0,r.kt)("p",null,"From this point, the network has been entirely in the hands of the token holders and is no longer\nunder control of any centralized authority."),(0,r.kt)("h2",{id:"balance-transfers"},"Balance Transfers"),(0,r.kt)("p",null,"To enable balance transfers, the community made a public proposal for a runtime upgrade that lifted\nthe restriction on balance transfers. Transfer functionality was subsequently enabled on Polkadot at\nblock number 1_205_128 on August 18, 2020, at 16:39 UTC."),(0,r.kt)("h2",{id:"core-functionality"},"Core Functionality"),(0,r.kt)("p",null,"After five years of research and development and a multi-stage launch that began in May 2020,\nPolkadot launch was completed on December 18, 2021, with all auction-winning parachains producing\nblocks on the network."),(0,r.kt)("p",null,"Check out these resources for further information:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network/blog/parachains-are-live-polkadot-launch-is-now-complete/"},"Polkadot Network blog"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/Polkadot/comments/s3yb3d/l_for_polkadot_launch_polkadot_a_to_z/"},"Polkadot A to Z: L for Polkadot Launch"),".")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/41f7224c.94f077ac.js b/assets/js/41f7224c.94f077ac.js new file mode 100644 index 000000000000..dc818a241c6c --- /dev/null +++ b/assets/js/41f7224c.94f077ac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3274],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,c=e.originalType,l=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=s(r),p=a,f=d["".concat(l,".").concat(p)]||d[p]||m[p]||c;return r?n.createElement(f,i(i({ref:t},u),{},{components:r})):n.createElement(f,i({ref:t},u))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var c=r.length,i=new Array(c);i[0]=p;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:a,i[1]=o;for(var s=2;s{r.d(t,{Z:()=>a});var n=r(67294);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),c=a[0],i=a[1];return n.createElement(n.Fragment,null,c&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52991:(e,t,r)=>{r.d(t,{Z:()=>h});var n=r(67294),a=r(86010),c=r(53438),i=r(39960),o=r(13919),l=r(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){var t=e.href,r=e.children;return n.createElement(i.Z,{href:t,className:(0,a.Z)("card padding--lg",s.cardContainer)},r)}function d(e){var t=e.href,r=e.icon,c=e.title,i=e.description;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:c},r," ",c),i&&n.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:i},i))}function m(e){var t,r=e.item,a=(0,c.Wl)(r);return a?n.createElement(d,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function p(e){var t,r,a=e.item,i=(0,o.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,c.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(d,{href:a.href,icon:i,title:a.label,description:null!=(r=a.description)?r:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(p,{item:t});case"category":return n.createElement(m,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function v(e){var t=e.className,r=(0,c.jA)();return n.createElement(h,{items:r.items,className:t})}function h(e){var t=e.items,r=e.className;if(!t)return n.createElement(v,e);var i=(0,c.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},i.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},48659:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>m,contentTitle:()=>u,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var n=r(87462),a=r(63366),c=(r(67294),r(3905)),i=r(35703),o=r(52991),l=["components"],s={id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},u=void 0,d={unversionedId:"learn/learn-archive",id:"learn/learn-archive",title:"Learn Archive",description:"Archive for the Learn Section.",source:"@site/../docs/learn/learn-archive.md",sourceDirName:"learn",slug:"/learn-archive",permalink:"/docs/learn-archive",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-archive.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},sidebar:"docs",previous:{title:"JAM FAQ",permalink:"/docs/learn-jam-faq"},next:{title:"Governance V1",permalink:"/docs/learn/learn-governance"}},m={},p=[],f={toc:p},v="wrapper";function h(e){var t=e.components,r=(0,a.Z)(e,l);return(0,c.kt)(v,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,c.kt)(i.Z,{message:"This section contains archived pages. The content in them no longer applies to Polkadot but can\nstill be relevant for parachains and related projects.",mdxType:"MessageBox"}),(0,c.kt)(o.Z,{mdxType:"DocCardList"}))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/41f7224c.a7823687.js b/assets/js/41f7224c.a7823687.js deleted file mode 100644 index 55bd8a169645..000000000000 --- a/assets/js/41f7224c.a7823687.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3274],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>f});var n=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=n.createContext({}),s=function(e){var r=n.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},d=function(e){var r=s(e.components);return n.createElement(l.Provider,{value:r},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=s(t),m=a,f=u["".concat(l,".").concat(m)]||u[m]||p[m]||i;return t?n.createElement(f,c(c({ref:r},d),{},{components:t})):n.createElement(f,c({ref:r},d))}));function f(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,c=new Array(i);c[0]=m;var o={};for(var l in r)hasOwnProperty.call(r,l)&&(o[l]=r[l]);o.originalType=e,o[u]="string"==typeof e?e:a,c[1]=o;for(var s=2;s{t.d(r,{Z:()=>h});var n=t(67294),a=t(86010),i=t(53438),c=t(39960),o=t(13919),l=t(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var r=e.href,t=e.children;return n.createElement(c.Z,{href:r,className:(0,a.Z)("card padding--lg",s.cardContainer)},t)}function u(e){var r=e.href,t=e.icon,i=e.title,c=e.description;return n.createElement(d,{href:r},n.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:i},t," ",i),c&&n.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:c},c))}function p(e){var r,t=e.item,a=(0,i.Wl)(t);return a?n.createElement(u,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:null!=(r=t.description)?r:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){var r,t,a=e.item,c=(0,o.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,i.xz)(null!=(r=a.docId)?r:void 0);return n.createElement(u,{href:a.href,icon:c,title:a.label,description:null!=(t=a.description)?t:null==l?void 0:l.description})}function f(e){var r=e.item;switch(r.type){case"link":return n.createElement(m,{item:r});case"category":return n.createElement(p,{item:r});default:throw new Error("unknown item type "+JSON.stringify(r))}}function v(e){var r=e.className,t=(0,i.jA)();return n.createElement(h,{items:t.items,className:r})}function h(e){var r=e.items,t=e.className;if(!r)return n.createElement(v,e);var c=(0,i.MN)(r);return n.createElement("section",{className:(0,a.Z)("row",t)},c.map((function(e,r){return n.createElement("article",{key:r,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},48659:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>s,default:()=>v,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var n=t(87462),a=t(63366),i=(t(67294),t(3905)),c=t(52991),o=["components"],l={id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},s=void 0,d={unversionedId:"learn/learn-archive",id:"learn/learn-archive",title:"Learn Archive",description:"Archive for the Learn Section.",source:"@site/../docs/learn/learn-archive.md",sourceDirName:"learn",slug:"/learn-archive",permalink:"/docs/learn-archive",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-archive.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},sidebar:"docs",previous:{title:"JAM FAQ",permalink:"/docs/learn-jam-faq"},next:{title:"Governance V1",permalink:"/docs/learn/learn-governance"}},u={},p=[],m={toc:p},f="wrapper";function v(e){var r=e.components,t=(0,a.Z)(e,o);return(0,i.kt)(f,(0,n.Z)({},m,t,{components:r,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"This section contains archived pages. The content in them no longer applies to Polkadot but can\nstill be relevant for parachains and related projects.")),(0,i.kt)(c.Z,{mdxType:"DocCardList"}))}v.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/43cda9e8.4fb9d9ea.js b/assets/js/43cda9e8.4fb9d9ea.js new file mode 100644 index 000000000000..342bbc7e024b --- /dev/null +++ b/assets/js/43cda9e8.4fb9d9ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6357],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),d=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=d(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=d(n),h=a,g=p["".concat(l,".").concat(h)]||p[h]||c[h]||r;return n?o.createElement(g,i(i({ref:t},u),{},{components:n})):o.createElement(g,i({ref:t},u))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var d=2;d{n.d(t,{Z:()=>a});var o=n(67294);const a=function(e){var t,n=e.message,a=(0,o.useState)(!0),r=a[0],i=a[1];return o.createElement(o.Fragment,null,r&&o.createElement("div",{className:"message-box"},o.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),o.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},96736:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>k,frontMatter:()=>l,metadata:()=>u,toc:()=>c});var o=n(87462),a=n(63366),r=(n(67294),n(3905)),i=n(35703),s=["components"],l={id:"learn-guides-assets-ledger",title:"Polkadot-JS Guides about Asset Hub Ledger App",sidebar_label:"Asset Hub Ledger Guides",description:"Polkadot-JS Guides about Ledger and the Asset Hub.",keywords:["asset hub","ledger","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-ledger"},d=void 0,u={unversionedId:"learn/learn-guides-assets-ledger",id:"learn/learn-guides-assets-ledger",title:"Polkadot-JS Guides about Asset Hub Ledger App",description:"Polkadot-JS Guides about Ledger and the Asset Hub.",source:"@site/../docs/learn/learn-guides-assets-ledger.md",sourceDirName:"learn",slug:"/learn-guides-assets-ledger",permalink:"/docs/learn-guides-assets-ledger",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets-ledger.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-assets-ledger",title:"Polkadot-JS Guides about Asset Hub Ledger App",sidebar_label:"Asset Hub Ledger Guides",description:"Polkadot-JS Guides about Ledger and the Asset Hub.",keywords:["asset hub","ledger","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-ledger"},sidebar:"docs",previous:{title:"Create Asset Guides",permalink:"/docs/learn-guides-assets-create"},next:{title:"Asset Conversion Tutorials",permalink:"/docs/learn-guides-asset-conversion"}},p={},c=[{value:"Requirements",id:"requirements",level:2},{value:"Installing the Ledger Application",id:"installing-the-ledger-application",level:2},{value:"Using Ledger Live",id:"using-ledger-live",level:3},{value:"Using on Polkadot-JS Apps UI",id:"using-on-polkadot-js-apps-ui",level:2},{value:"Adding Your Account",id:"adding-your-account",level:3},{value:"Working on Relay Chains and Asset Hubs",id:"working-on-relay-chains-and-asset-hubs",level:3},{value:"Confirming the Address on your Device",id:"confirming-the-address-on-your-device",level:3},{value:"Using Polkadot-JS Apps",id:"using-polkadot-js-apps",level:4},{value:"Sending a Transfer",id:"sending-a-transfer",level:3},{value:"Receiving a Transfer",id:"receiving-a-transfer",level:3},{value:"Teleporting",id:"teleporting",level:3},{value:"Support",id:"support",level:2}],h={toc:c},g="wrapper";function k(e){var t=e.components,l=(0,a.Z)(e,s);return(0,r.kt)(g,(0,o.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Because of required WebUSB support, Ledger wallets currently only work on Chromium-based browsers\nlike Brave, Chrome or Edge.")),(0,r.kt)("p",null,"The Asset Hub has a ",(0,r.kt)("a",{parentName:"p",href:"https://www.ledger.com/"},"Ledger")," application that is compatible with the Ledger\nNano S and Ledger Nano X devices. The Ledger devices are hardware wallets that keep your private key\nsecured on a physical device that does not get directly exposed to your computer or the internet."),(0,r.kt)("p",null,"The Statemine application allows you to manage your KSM and other tokens on the Asset Hub parachain.\nIt supports most of the available transaction types of the network in the XL version of the app\n(details ",(0,r.kt)("a",{parentName:"p",href:"#installing-the-ledger-application"},"below"),")."),(0,r.kt)("p",null,"If you have trouble using Ledger or following the directions below, you can try searching for your\nissue on the ",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/"},"Polkadot Support page"),"."),(0,r.kt)("admonition",{title:"Intro to Ledger Explainer",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Please check out our\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/7VlTncHCGPc"},"intro to Ledger video on YouTube for more information"),".")),(0,r.kt)("h2",{id:"requirements"},"Requirements"),(0,r.kt)("p",null,"Here is a list of what you will need before starting:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A Ledger Nano S or a Ledger Nano X."),(0,r.kt)("li",{parentName:"ul"},"The latest firmware installed."),(0,r.kt)("li",{parentName:"ul"},"Ledger Live is installed and at version 2.29 or newer (see settings -> about to find out if you're\nup to date)."),(0,r.kt)("li",{parentName:"ul"},"A web browser is installed that you can use to access\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),".")),(0,r.kt)("h2",{id:"installing-the-ledger-application"},"Installing the Ledger Application"),(0,r.kt)("h3",{id:"using-ledger-live"},"Using Ledger Live"),(0,r.kt)("admonition",{title:"Ledger Nano S",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"There are two versions of the Statemine app: the normal (light) version and the XL version. The\nlight version has smaller size but it supports only basic functionality. If you want access to all\nthe supported extrinsics, you need to install the XL version of the app. You can see\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Zondax/ledger-statemine"},"here")," a full list of the extrinsics supported by both\nversions.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Open the "Manager" tab in Ledger Live.'),(0,r.kt)("li",{parentName:"ul"},"Connect and unlock your Ledger device."),(0,r.kt)("li",{parentName:"ul"},"If asked, allow the manager on your device by pressing both buttons on the YES screen."),(0,r.kt)("li",{parentName:"ul"},"Search for Statemine in the app catalog."),(0,r.kt)("li",{parentName:"ul"},"If you are using a Ledger Nano S, install either the normal (light) version or the XL version. For\nLedger Nano X, there will only be one app available.")),(0,r.kt)("p",null,"Please proceed to the ",(0,r.kt)("a",{parentName:"p",href:"#using-on-polkadot-js-apps"},"usage instructions")," below."),(0,r.kt)("h2",{id:"using-on-polkadot-js-apps-ui"},"Using on Polkadot-JS Apps UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot extension doesn't support Statemine Ledger accounts at this point, so you need to add\nyour account on Polkadot-JS UI as described below.")),(0,r.kt)("h3",{id:"adding-your-account"},"Adding Your Account"),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"These instructions will guide you on how to add a Ledger account that's ",(0,r.kt)("strong",{parentName:"p"},"only")," available on the\nAsset Hub. If you want to use the same Ledger account on both\nPolkadot ",(0,r.kt)("strong",{parentName:"p"},"and")," the Asset Hub check the\ninstructions ",(0,r.kt)("a",{parentName:"p",href:"#working-on-relay-chains-and-asset-hubs"},"below"),".")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI")," already has an integration with the\nLedger application so that your device will work with the browser interface after installation. The\nfunctionality is currently gated behind a feature setting that you will need to turn on."),(0,r.kt)("p",null,'In order to turn on the interoperability with the Statemine Ledger application, go to the "Settings"\ntab in ',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),'. Find the option for attaching\nLedger devices and switch the option from the default "Do not attach Ledger devices" to "Attach\nLedger via WebUSB" (',(0,r.kt)("strong",{parentName:"p"},"but see note above"),")."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Dropdown selector for allowing Ledger connections in Polkadot-JS Apps UI Settings",src:n(54035).Z,width:"531",height:"235"})),(0,r.kt)("p",null,'Click "Save" to keep your settings.'),(0,r.kt)("p",null,'Now when you go to the "Accounts" tab you will see a new button that says "Add via Ledger". Ensure\nthat your Ledger device is unlocked, Ledger Live is ',(0,r.kt)("strong",{parentName:"p"},"closed")," and you have\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169778-how-to-switch-network-nodes"},"switched over"),"\nto the Statemine application, then click this button."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Add Ledger button in Polkadot-JS Apps UI",src:n(26789).Z,width:"488",height:"83"})),(0,r.kt)("p",null,"A popup will appear asking you to select an account and derivation path."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Picking an account and derivation path",src:n(33414).Z,width:"1894",height:"643"})),(0,r.kt)("p",null,"The first option lets you select an account. You can have multiple accounts on a single Ledger\ndevice. The second dropdown lets you pick a derivation path - think of it like a formula from which\nchild accounts are generated. If in doubt, pick the default option for both."),(0,r.kt)("p",null,"Once you confirm your selection, depending on your browser and its security settings, you might need\nto confirm the USB connection through a popup like the one below when adding the Ledger device for\nthe first time:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Display the device connection popup",src:n(57302).Z,width:"468",height:"461"})),(0,r.kt)("p",null,'You should now be able to scroll down and find a new account on the page with the type "ledger".'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Displaying the Ledger account in the list",src:n(78465).Z,width:"867",height:"70"})),(0,r.kt)("p",null,"You can now use this account to interact with the Asset Hub on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI")," and it will prompt your ledger for\nconfirmation when you initiate a transaction."),(0,r.kt)("h3",{id:"working-on-relay-chains-and-asset-hubs"},"Working on Relay Chains and Asset Hubs"),(0,r.kt)("p",null,"Polkadot and Kusama accounts from the ",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},"extension"),"\nwill show up in the Asset Hub, even if they're not set to be used on all chains. The Asset Hub is a\nsystem parachains on Polkadot :polkadot}}"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"However"),", as mentioned above, the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},"Polkadot extension")," does not support Statemine\nLedger accounts at the moment, but the Polkadot-JS UI does. So, if your Kusama account is in the\nPolkadot extension, you'll need to remove it from there and re-add it on Polkadot-JS UI directly\n",(0,r.kt)("strong",{parentName:"p"},"as a Kusama account"),", as described\n",(0,r.kt)("a",{parentName:"p",href:"https://guide.kusama.network/docs/kusama-ledger#using-on-polkadot-js-apps-ui"},"here"),". After that,\nyou will be able to make transactions with that account."),(0,r.kt)("p",null,"To remove an account from the Polkadot extension:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Open the extension"),(0,r.kt)("li",{parentName:"ol"},"Click on the three dots next to the account"),(0,r.kt)("li",{parentName:"ol"},'Select "Forget account".')),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"As mentioned above, a Polkadot :polkadot}}")),(0,r.kt)("h3",{id:"confirming-the-address-on-your-device"},"Confirming the Address on your Device"),(0,r.kt)("p",null,'On the "Accounts" tab, find your Ledger-connected account. Click on the three vertical dots at the\nend of the row. This will open a new menu, here you can click the "Show address on hardware device"\noption to display the address on your device.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Options menu of an account in the Accounts screen of Polkadot-JS Apps UI",src:n(83566).Z,width:"419",height:"478"})),(0,r.kt)("p",null,"Here you can scroll through and make sure the address matches to what is displayed on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),"."),(0,r.kt)("h4",{id:"using-polkadot-js-apps"},"Using Polkadot-JS Apps"),(0,r.kt)("p",null,'Once you have your account loaded on the "Accounts" tab it should show a row with your Ledger\naccount. At the far right of the row is located your account\'s DOT balance. If you expand the\nbalance arrow, it will show details of your balance such as locks or reserved amounts.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Account row showing empty balance",src:n(78465).Z,width:"867",height:"70"})),(0,r.kt)("h3",{id:"sending-a-transfer"},"Sending a Transfer"),(0,r.kt)("p",null,"If you would like to send a transfer from your account housed on the Ledger device, the easiest\nmethod is to use ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),"."),(0,r.kt)("admonition",{title:"Transfers",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Transferring in this way sends tokens to another account on the Asset Hub parachain. If you need to\ntransfer KSM between the Asset Hub and\nPolkadot, see the ",(0,r.kt)("a",{parentName:"p",href:"#teleporting"},"Teleporting"),"\nsection below.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Click on the "Send" button next to your account.'),(0,r.kt)("li",{parentName:"ul"},"In the second input, select one of the accounts from the drop-down menu or paste the address that\nyou want to transfer funds to."),(0,r.kt)("li",{parentName:"ul"},"In the third input, enter the amount of KSM you want to transfer."),(0,r.kt)("li",{parentName:"ul"},'Click the "Make Transfer" button.'),(0,r.kt)("li",{parentName:"ul"},"Confirm the transaction on your device."),(0,r.kt)("li",{parentName:"ul"},"A green success notification will be displayed when the transaction is included in a block.")),(0,r.kt)("admonition",{title:'The "Transfer with Keep-Alive Checks" toggle',type:"note"},(0,r.kt)("p",{parentName:"admonition"},'Note the "Transfer with Keep-Alive Checks" toggle. While this toggle is in the ',(0,r.kt)("em",{parentName:"p"},"On")," state, your\naccount will be unable to make transactions which would get its balance below the existential\ndeposit. This prevents reaping of accounts with low balances. If you toggle this to ",(0,r.kt)("em",{parentName:"p"},"Off"),", you will\nbe able to go below existential deposit balance, causing your account to be deleted and any dust\namount of KSM to be burned. If you encounter KeepAlive errors when making transactions, this might\nbe the reason."),(0,r.kt)("p",{parentName:"admonition"},"A detailed guide on doing transfers is available\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-ledger#sending-a-transfer-with-ledger-devices"},"here"),".")),(0,r.kt)("h3",{id:"receiving-a-transfer"},"Receiving a Transfer"),(0,r.kt)("p",null,"In order to receive a transfer on the accounts stored on your Ledger device, you will need to\nprovide the sender (i.e. the payer) with your address."),(0,r.kt)("p",null,"The easiest way to get your address is to click on the account name which will open a sidebar. Your\naddress will be shown in this sidebar, along with some other information. Another method is just\nclicking on your account's avatar icon - this immediately copies your address to the clipboard."),(0,r.kt)("admonition",{title:"Your Asset Hub address is the same as your Relay Chain address",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Make sure that you clarify to the sender that you wish to receive your tokens on the Asset Hub\nparachain, otherwise (if you're receiving DOT\ntokens) they could be sent on the Polkadot\nchain.")),(0,r.kt)("admonition",{title:"Before giving anyone your address",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Make sure it matches what's really on the Ledger by\n",(0,r.kt)("a",{parentName:"p",href:"#confirming-the-address-on-your-device"},"confirming the address on your device"),". Some malware will\nintercept clicks and clipboard requests and can change your copied value in-flight, so being extra\nvigilant around copy-paste operations makes sense.")),(0,r.kt)("h3",{id:"teleporting"},"Teleporting"),(0,r.kt)("p",null,"Teleporting allows you to send tokens between the Relay Chain and a parachain, or between different\nparachains."),(0,r.kt)("p",null,"The Statemine Ledger app doesn't support the ",(0,r.kt)("inlineCode",{parentName:"p"},"teleport")," extrinsic at this point, so an intermediary\naccount needs to be created first."),(0,r.kt)("p",null,"To teleport KSM to the Relay Chain follow these steps:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Create an account outside your Ledger. Instructions can be found\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-accounts#account-generation"},"here"),"."),(0,r.kt)("li",{parentName:"ul"},"Transfer the desired amount as described ",(0,r.kt)("a",{parentName:"li",href:"#sending-a-transfer"},"above"),". If you want to send exactly\nthe amount you want to teleport, don't forget take into account the fees for teleporting that will\nbe deducted in the next step."),(0,r.kt)("li",{parentName:"ul"},"Teleport your tokens following the instructions you will find ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-teleport"},"here"),".")),(0,r.kt)("p",null,"Teleporting ",(0,r.kt)("strong",{parentName:"p"},"to")," a Ledger account from a non-Ledger account doesn't require these extra steps."),(0,r.kt)("h2",{id:"support"},"Support"),(0,r.kt)("p",null,"If you need support, please visit the ",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot Support page"),"."))}k.isMDXComponent=!0},83566:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/ledger-4-6f7e09be831f4a82031a066b8f222a6c.png"},54035:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/ledger-fd53351628660be133bf903bbc63f682.png"},33414:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/add-account-8690ff195ced1f005f03c2b2bbef349a.png"},78465:(e,t,n)=>{n.d(t,{Z:()=>o});const o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2MAAABGCAYAAABBuEwRAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAB46SURBVHhe7d0LWFVlvgbwFxQRUbkZWwgwcCaIzAOYM5aVjZKJNpM6x1G7TJeRjfWcptOYU9N5vKTVGU/WPDOdMwk6NU1pFycvMwlW6IyNdjOBU6NCR0EugiAIqIiCyln/b62199obUDRhb+P9nWc9e933xjmxePf3ff/P50htTVtIaBiIiIiIiIio+5xoOm6s6XyNVyIiIiIiIupBDGNEREREREQewDBGRERERETkAQxjREREREREHsAwRkRERERE5AEMY0RERERERB7AMEZEREREROQBDGNEREREREQewDBGRERERETkAQxjREREREREHsAwRkRERERE5AEMY0RERERERB7AMEZEREQ9qqy8HNu2fWRsuZL9cpyIqDfwOVJb0xYSGmZsEhEREXWvRx75uQpcs2fNwqxZM429wFtvvY0333oLMdHReOml3xl7yeMKsnDn4hxjIx4ZWb/G5HBjswM7d36B9z/4QK0PGRKGe++5B4GBgWq7paUF69avx759+9X2qJQUpKVNUuuiqakJr7/xBmpr69T27RMnYvTo69U60bfBiabjxpqOYYyIiIh6lBm6hBnIOtpHXqAmB0/Yt2GcGcBUMAOWbrBjpH6Gi+LiYnzw4YeOACbBbH/xfkyfNg39+vVDTs5mdZ4EMDOYDY8brgKX+7YZzCbedhvi4uLUdQ7qc2Wh0NjUdRwUv1wxDQv0t9VYz6lG9hNzkVmkDriKt2PjsjRjg+jScQ9j7KZIREREPUqClgQuIQGMQcx7fblOCzyT7nYGnKQ7kRGfg08KjG0LCVOf79yJUSmjHC1hiYnX4OTJk6ivr0d1dTUOlB5ASkqyOibh7HujR6uwJtdWVFSgoaFBXSPkHnKvoqKv1XZ7EqzWY+MGY1kch0z7k8iuMQ6rsKUFMSxxnpM1Dtvs05CpPr8Nk5eZ++1IsN6PQYx6CMMYERER9Tj3QCYYxLxNNSpKgIRoa1OTDVGxQPanXxnbTq2trSpMhYWFGnsAPz8/9O/fH2Vl5aqly8fHBwMHDjSO6oFLgposdXVHEBwcrK4xyb1Ky0rVteeVZMfSSUXIXGd8toKNyIQdWXOv07dFeBqWLU5D9ps52k9H5HkMY0RERNTjqqqqXAKZGcRkP3mXuCttxprOFh1vrLUnwctsFRPS+hU0OMjYQruwJcEsICDA2II6V64xyb3knl01ckwaUFKhgtaXn+Yg4ZYULT66iYxGQtE27HK0oBF5DsMYERER9aj/ev55zH3oYezY8bEKYM8+s1S9yrbsl+NE3SY8Cm4j0Ig8hmHMS506dQpH6utRWXUIpWXlKC45oBZZl31yTM4hIiK6XEnokgA2YsQI9coQ5p2KD7p26Ksu76jihU7Gh1m7FMpYsMajjcYWVDdG6c5oOn78OJqbm40tqHPlGpPcS+7ZVdUHi401ossDw5iXOXGiWYWt2roj2paPap4PCgpCSEiIWmRdb/73UefIuXINERHR5eKX8+dj7Ngb1boZyMwgJvvlOHkDfXxYYbm1P58+jmzyGMs4LIN0P5RuiDL2yyTBS8JUTEy0+vulra1NBTCThC3zbxwZH+Ye1uRew2KGuXR9PBcVFGOjVNdE6bJY+FFe+7FhBZ8gO34cRrlVXSTyBIYxLyJzatRrv4QCBwzAAG2RQa5nz57F9vrPMTHvLrXIuuyTY3KOnCvXmPNxEBERXQ7cA5lgEPM+I6fbkbB5tbNCoRTFKErDDUnGtoVZHXFX3i5H69iePXvVmC8JWzabDVcNuwp5efnqmFl9UUrZy7VRUVEqzMk1Qu4h94qPv1ptn1dBFhZsjkfGdCMoSuVHZMG+wlJsREriL87B5Nlp7ceSEXkA5xnzAhKuDlXXwN/fH76+7fOxhLCCY7vVetKga/FByhq1biX3kG6LQ23hHd6DiIjIG5ktYwxiXuwckz5Xb3oS9o/GIWuZM9z0yKTPl2SeMQv3+dSIugknffZC0tVQvjWS1i5dG0o+fQ6nW44hKmku7tz3lEsYe+36Zfiz36sIbBuIB1oeg4/2f0Ka/qUrQGTEULVNRER0OZB5xljSnoh6A4YxLyPf/Pj4+rq0Zn3991+gas8ban1QeAqaU5fi6eLfqO1FcY/hrYhlKOzzpdqe3PoTPHbqGbUupIWsTVvkmygiIiIiIvIe7mHMI/3ZysvLUVFx0NjqvaTwxqmWFhXEduzdjnc/flff3+CsBHSivghjg0fjsZjfqUXWS333GUeBCt8D6vXdj7dj+97d6l5yTxb1ICIiIuq9WvMq0TD7HVT5LjD2UFe0bCsx1npGj4ex48eb0Hj0KBoaG3BUe+3NGhobMTAwEK//7U+Y9txUPPRyBn78n9MQOeJ++Pj0UedEJz2Mp/btw327d6tF1me0/kwd80Uf/LB1Nqb95xJkvPw7TH3uafzpb1vUPeXeRETdonQLnl9TAP6WISLyPm3HW3Bs0VbUjslE89tfoU9siHGEzuX017U4POIl1P3gFfUq2z2hx7splpWV4eixY2o9cEAgYmOvUuu9jRTbkNL0UhFxzksP4i+f/8U4Auz9fRH6+Z3FsVN1iAxKwKjPPkO5McdGdP/+2PX976Ph5GH07zsATc1nEP/wHHVM/Oh7Y/DKI7/AiRMnMCQsVBUFuRD5+QX463t/VYOoO5rx/r33NmHlqlXGlqtJk27HQ3PnqnssfvppY6/TqFEpHd5XxrnJAO5du/KMPVAVlWQSUKmqJDq7pzDvK9zvY+rsvenb7CtkTl0ILF6PjA6qfp1PR4PSySBhbEcY7HclIcjYRUREnte8+n9x/LltOL33sLEH6P/DBIRsvNvY8lJeUECl+bV8NDywztgCgl+djoD7ko2tS8ej3RSbmk44gphoOtHkKH3a2zRpYSkgIECtjxtxq3oVNyfejO3N/8C1n4/E6IJb8GLp87g9zBmWZd3/82OIWdWK8MxGDD3kp10zwjgK3DriX9Sr3FveoztI6Nq4YX27RYKYScLP22+96XL8iiuuUGHJOnljSUkJ0u0ZSElOcTk3bdIkPPLzR9VxU0f3lGXhggUuIWvxokUux+Ua8eof/6heiXqfMuQuX4P8PC1ELX/BWLZoe63kHPPYC1id10m7lwSxtQVA5RZkOe7RiPw1zmvbX+96PDevAKvl8xinNOatsVzr3E9ERF3T+nkF6qetQcO9f1ZBLGzbHEeLWN8R/EqxK/pec4WxpnPf7i7dGsaOHj2Gw4cPq/Fh+/cXo7RUH99kVVpaqo7JOXKuXNMbnDx5Cn366F0R7/3BT7H+qQ14+aFMvPur9fhT5R9xpu2MOvZy+e/x3He+g9euvVYtst4v30jUbUC/fzZh/a8WIvOhn2PDU4vw0x9MUIfk3vIe3uSB++9Xr7m5W9SrhDIpXzvzJz/BHXdMUftMsn3jjTdg9+49xp6LJ0Hth3f8EP/85241mST1XtLadefUacbypHPeHEVa0pzHNpQbu01S2tk8/kQOsldor9a5a6zHtSVTyysmKaucuSkHT6hj7u/bU6qQWxgG++PzMP/xOUiNLMDbuWYckyC2FtXj52jH5PgM2Lau6jiQDZuA+TOSgMgJ2r0mIEYFrVXIDZ9hXDsP9vERqNy6yRGqynK145Dz9fcOK9yCSv2QCndZW22YaVw7f4YNuSvdgyIREXXkbMNJHP3l+6pL4smN+vxs4eXz0fxaHs6U1KvtvtddfFOTPL+cz7Ys6OXjTNbnprZYnonqebtCe1Y+4Tz+xCbX6bet935inftDt+f5fS8KYX97EP1ujVWvst0Tui2M1dfXo6y8DNU1NWp8WPPJZpxt09KDG9knx+QcOVeuqa3tmT6aniSzy0spenG4/hDefO8lrN7wPNb//XXEDYhT+8XVA+Kxc/terJ6tHdcWWT8b6mccBc4E9UW23zvYlLoU2Sm/QZ2P/lee3Ns6g703kFAkLWDlFfp/cFVVVaq19Kabxqptd9LS5h7SiC6Wo9uh2Wq6OA6ZdvPBondpLE5foR/LGofizUXqiGJOErrYuHZ2OTIdc9Zo1Bw8wFLz3ll2FC92DV3ZK8txtzruuS4YyWPNboVBiEuI0H6uI2rcV2PeduRr4eqOFLPTYQxStcBVufWLLoSiICTfpYWo1BhjW9szPBGRxroEva8LIpA6xfne8jk6JWFPhTwiIjqXE6u+wOHvvIim5duNPUDE6SVo+XsJTrziHLLRN/7iWnjkubmgxO54bmalF2PBEznQI5VzKIB67m1YgYySha6Ba3MWymcbxxenoXDlbxzPRTX3m+PeKzCuJMdtzjgP8fGB/3jt73DHdFPdr9vCmIyFCriI8TlyzaBBg4ytb68zZ844wliWFsI+/nILDlTtw7OvPo5nYp/DIzGP4v7IB/H7a1bgt0+/hd35xWqR9eaJwWi5LhCnRg3EsfED8Fv/hSj3LcHOPh/h9X7/re4p95b36A6bN7/v+CbDusi4rvO58sorVQuotIo1NDQiMHBAl8dxyViwmbNmt3tfGcd2LvJeMg5uxIhrHWPQqLf5ChtWAhnzLOO/kuxYOikHq+XBUfAJspGGu6cYR8PT8Iv0eH1dU71zGwonLXGOPUu6ExmOw9XIflOCmh0jjT369UDmOkvL2aQbnMe9TOORKu0zhxphyRAcZglUXVOWa3Q1XGlp+Wo8ov0L2RBmvbn13sOu11vpzC6MpcZ+IiLqUMtHB1B7QxYa7Rtx9ohePbtPTDAizi5FyyflqquiVd/4IcbaN2Ob8mtsNMZRV29ajWzrc1HbO3meHVi50dl6Fm/HVMdz8wZMRhHK1cPhK3yyGZg823wm69cmqHXPad1Vibpb/4BjC7eoV9nuCd0WxqRwxLBhw1SRjq6Sc+WaCy068W0jWXxhYwCWNwxA7Bm9K6NVcb9W/HtkDRYOrZOeij2uszFjycnn+La7iyRYWYPWkqVLVZgSnY0Zc289k0If1ntIgJPxatYxbdTL1FSgWHsIZNqd/38hywKjdav6YLH20Ig2Hgo625XOFurq8iIkRFubs2yIijVWUQPtMLIXu97bvtLSsvYtZ4awt2uMrojpEy4gyBkta9p1M7VfIflrOW6MiKgzDfe9qweFz5zd+vxv/y7CD8zD6X1HUHfzSmOvTsaL+Qxw9qi6ELYpd2NyURbs6rnm2ttDnovYvNDluXenPatrrVvqmRyPaOuDIjwKzqeuZ5x6z/XTu293l24dM9a3b18tXMVgcBdauuQcOVeu6Q1kTJeP0QRqnzofN46cgKsivoP/eGA5BuU9g367V8Dv6zfgv/0xPLpoFq5NjlOLrM/duxevVFbit2VlePLrA3j01BJEn43F6DO34N6Wf1P3lHubY9K8ycGDB1Uwktaw4OAg1U3RDFtCgpUZstLnOKtEXghrAQ+5x+DBgzHp9tuNo9R7xSMjyzXIy7LMbA37hhxdGK3L3OuMo94tKNTZZdGhoc7ZunVORjfEdC1QdVRdMShUi67VqLPevJN7x6RKKJPxbFXYs59pjIjIXd+4EPhGOP+uDrg/BaE5P0XbsVOon7ra2OvkN+Kb9Iu/DhnqebYCGfHmF5qWcWOTlrR/7m2w9BK5zPjf4do2577dXbo1jAmZhDioC13DpPuYnNtb+Pn5OcLYFSFDMTv917j78SxMu/Ve+B51FjrxbdyH0Tddg3veHKMWWS+yVEks1tYnt/4EUw48iilVGQhr0/+jk3vLe3gTCV15+XmIjopW2xEREaqb4vbtO9R2dzALgSx/4UUW7+jN1DduZveI9lQrWFG50Q9ep1rLDLboeBSWW6tuVKPCUegzHNphFB90HZh8OQlKuQnJlVvwnqNgRxly1xYgcvz1XRy7VYU6x39e2rXWboraHa5OqkLuJnNeskbk77B0aZbqjNbKjo0l2FMZgcTh7WIdEVGvN3DReNUKNvg3kzHwV7cg+JVpar90WTy9x/qc0l2aLoo2TF4mQWsJJiMHn2i/wuW5iJIKl+dml3X0TFatZZ7lNyoSYX//GQYtmaBeZbsn9Ej6ae5CifXmZmfrSG/Qv7+/Y0zX61W7MO1//4iH9r6LH2uvrVfP1tKU3qrVmvgzLNj3FH62+z61yPrD0XqY6aMFrvsjI7Vr0rVrf6XdY452r3fVMbm3vIc3MUvLp6bqFR+ldezee+7B2++8027cl4w/62w+sws1e9Ys9fq7l15yaYWj3uQ6TE2PR/ZiayUovQqUqnqoxoAZ48dETQ5etHQztI0eh4TNC50VEgs2ItNxWHtIzXYdmCxhTSpIuVeO8l4xSDUqKOrl5fXKinc7Cnq4GfZdFd6yVHdCvdiH3r1Qlu0IS5+BZC2gma1bMalzkAo5X46vQl2CdGM0xpENm4CZSc4xYzLezDbjLiQzixERdcjHrw8CH70Bg569TW0f/fdsNblzR/pcZPEOoSoiOgp2aIzx1TckaU8+owvji5bnXLvzO2U8k980z9WemS90sYtjd2trw6mtWiw06jr0hB6Z9PnAgQM4fp75xAYNHKjGi/UWLpM+73kHfzm82zgC7L3xlxjQ0ozmpjqEhsdjzGejUH5S7xsc3T8an35/Fw42VmGQ/0C09jmNaz52zlP2oytuw6rE5d9o0udzTdgsZek7C0nmRM0lJQc6vIc5KbQ7CUjukzVL18IlTy9GbKw+MOdckz6b50pLm9xHyti7j1+T+coWLlqsWsk4dqy3cFZ6MgcYq+pNliqI0rXQOfhYPz9brachI70YmdZJn1XFxBx1VAYlZ8RmYVv0Ckc3R1Wt0RLgEtKdx9T7Ysll022x2zUWYPXKOtzMqolERN9Iy7YS1P3gFbXeN+EKnC50TvYshux6GH7JEcbWhZIvFudavnyU7v6WisBqomZLiNKejeYz01HB2HyGnueZPDndjuKVnp30WeZqkykCTEM+zeiW8vbukz73SBgrLCzC6TOn1bpUS7TZhqr16upDaDZaKmSsWEK8s3pZb1BZdQiBWhh7rfILzPv6L2rfzcGxsDcH4T9enouzZ88gY/ovUXFdA145qAegB6+cgzn1ITiw83n4+PRBwm0v46GmTfhHw+fq+AtXL8R9kf+qJnyOjND/nYno0pOHyGpLGKPO6HOYYcY8pBrft0nBj7cxw6UcPhERXTgzjPmGBCD0/fvgd/2VaH4tH02//wytOw9i6PGFF13Ao7eRf7eGB9YZW0Dwq9MRcF+ysXXpeCSMyYTO0lJjG2pD0ODBxl5d49GjqD5UjYCA/og2ut/1FidONKO+oUG1ju1oKMGhlmP4cfhIpD/7I+wq/FidE+AfiB2rSrG5Vv9GftKQNGxfGYszrXpLY1DkjUiaugHv1mRjaL8rMDZ4tPq3DgkO1u4boM4hom+m3Td86ttAz36Dd1mRcWFrLePEkhjEiIguBSm/Xjv6ZYT+9R74T+ldjRqX2umva1E//U019q5vYjhC1s1G36svzbQAVh4JY9S52to6+Pj6uhQvWfqHx9Tkz2LE8BRkzFyIp9/Su+gtmrUIAbufwbEavUtfROI9uPrWF9W6OHv2LNq0ZcgQ/m9KdOmcp6sGERERfStIa2O/cY75ay45hjEvJN0VpZiFWV1RJmz+n7XP4njzMdyT9hAe/J90FBTnq2NJccnYOG8lKgpWoG+/QYgd85S213mdjL9i90QiIup9GpG/ZhXqxjq7xPYoSwtw5LkK4FwqauzlHiSmd1zwpjFvDbIKE2HvaMqJC2UdM9uFL6N27vwC73/wgVqXL4elWFdgoD7vbEtLC9atX499+/ar7VEpKUhLm6TWRVNTE15/4w31ZbW4feJEjB59vVon+jZgGPNC0pp1qLpGFdvoqLz/xEW3uYSxD57+UK1byT2kKMhQW3ivmiKAiIhI59kwJmMh/xHaAyHM1FNhzL1btgpmwNJO5pMqLi7GBx9+6AhgEsz2F+/H9GnT0K9fP+Tk6BUbJICZwWx43HAVuNy3zWA28bbbEBfnNiWwe/EIpeOg6Fq8yXqOe68Hi3g7Ni5LMzaILh2GMS8m3wKd0n4RDdR+eZ21lNTcsXe7SzfFsdfcpNaFr4+PqlTpr/2CY9dEIiLqnfQglmvMW6RapoaXYPUmIDF8C3LVFBb6WEVVQMYyhNE6hlEPVBNg27oF+legQLKl+IwKOFur9A3IZOcShFzfW7shZqpKoW77Iyc4g5EEKbfPZg/djveQ6Hhv9b7BEris8/aZ76mtGmHMlgTkFxifyfKztA9jejEd8+fq6tjN9tVg9QBTPttajVbnHqaEBKq1f/4z0ibprV9yXIKZzaYXP5Lw9vnOnWpfRUWFS5ATEuZqa2tdWs+UjsbuqqBY3D5sxVo+vxHi4lyq6Wo4Fph6iHsYYxOKF5EwJYU3pBKiFOGQbofSynVT4s2qNUwWWZd9ckzOkXPlGgYxIiLqvYKQfNccpEbqIcbROlW5BXtC52D+4/OcQaxGC0WyLcsM7a/xgrXILdVPF5Vb9yAsXT9uHx+B/LXGpOSlW7QgZtOClnmtTU1wXqbeex5mareSEDjfEsT2JBjvrS0zteCVleuY3rzdZ1O7LO9tBjGb9vPo95CfzzqBuqhCfo0WuMzjNWvxvPU9HJxVTR330s5d7ZjovTP6BPcJ0dZ0YkNULJD9aft5rVpbW9HQ0ICwsFBjD+Dn56eGYpSVlatgJkMyBg4caByFCl319fVqqas7gmDtbxq5xiT3Ki0rVdeeV5IdSycVIXOd8dlkTkjYkWWdViQ8DcsWp1nmuCLyLIYxLyMVEGXMl8wRBrSpXz6NjY2OX1Syrv9CalPnyLmsmkhERNSRCCQOd3bSi0nVgoi1255MYG6sOiTd5Oj2FzQ8EZHan+x1HWWWYRO0UNPJXHmlXyAXE3CHpctiTOoMJBdsR77jXq6fTYlMRJy5KygJd0soc3S5DEJcgvt8URFInWL+PFooHCvh8v/08GjRmKe9b9IMl3slT5kAbP2i3bkdibvSdQoPW3TnVfskeJmtWkK6JgYNdv6c7mFLgllAgPPvGDlXrjHJveSeXTVyTBpQUqGC1pef5iDhlhRjniuLyGgkFG3DLsdE/USewzDmpWT8WGhIiApbw2KiERd7lVpkXfbJsQud0JmIiIj0LnzPL39BWyzd9s5n2PVIjSzA2+q6F1xa09w11mlRoHILsoxzL/i9XEirln4PZxdJkw1h1jwXHNZheGw8ol1XsNbyWbTFpftjLxMeBbcRaEQewzBGREREvYIZwpzdDWe0bxnrlN4dUXU5TALy10qoWWNp6XIjY8TUe1iXjottdMwMYWtRrbo/6t0mL5qMEWv3eTpp2XNTfNC1Q191eUcVL3RS1dnapVDGkTUedf4jSTdG6c5oOn78OJqbm40t7X8j7Vy5xiT3knt2VfXBYmON6PLAMEZERES9QCOKC6vUmLKuhpDOqO6OxhiuPfvbp7GgMBtQWWcZ23URSv8P+Uag67xCo1srWEMdKt1byzRBoVqIqzlyEZ9HHx9WWG7tz6ePI5s8xjIOyyDdD6Ubooz9MknwkjAVExOtuhzKmHcJYCYJWyEhIWqR8WHuYU3uNSxmmEvXx3NRQTE2SnVNlC6LhR/lqS6LLgo+QXb8OIxioQ7yAgxjRERE1GtUO9KLFNm4gK6DMo/YcqOYh2gswZ7KDsZ9CbNLo7WYhvv1XWENdKqAiHs3xSrk7jTvWIbctQWIHH99u6AZlHITkiu34D1LwQ7VSrjGWgykYyOn25GweTWyzTwmRTGK0nCDtRKhQcZ6fW/0aOzK2+VoHduzZ68a8yVhSyooXjXsKuTl6f/q0gImlRSl+qJcGxUVpcKcXCPkHnKv+Pir1fZ5FWRhweZ4ZEw3gmLSnchAFuwrLMVGpGri4hxMnp3WfiwZkQewtD0RERF9KzhKz0uXvNFH2s/DpcrBO8dKJc+Yg7Adq5Abrpd5V9UWYSn57jaXl3tZfGvZe70svnWeMbdS8o6S95oO5ghrX4re7f2klWxsHbLWVuvl7SH3qEPi+GrkmiHtXKXt3X52l1L753OOSZ+rNz0J+0fjkLXMGW56ZNLnSzLPmAVL21MP4TxjREREREREHsB5xoiIiIiIiLwAwxgREREREZEHMIwRERERERF5AMMYERERERGRBzCMEREREREReQDDGBERERERkQcwjBEREREREXkAwxgREREREZEHMIwRERERERF5AMMYERERERGRBzCMEREREREReQDDGBERERERkQcwjBEREREREXmAb58+fXD69Gljk4iIiIiIiHqCr5+fH44fO8pARkRERERE1IN8mo41tvn4+KC1tRVnzpwxdhMREREREdGl5O/vb6zpVBgz1omIiIiIiKiHsIAHERERERFRjwP+H+DzMQEznx96AAAAAElFTkSuQmCC"},57302:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/query-device-d7d9e7e7d28a34a343c59094db864a1a.png"},26789:(e,t,n)=>{n.d(t,{Z:()=>o});const o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAegAAABTCAYAAABUKpQOAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABu3SURBVHhe7d0PWFRV3gfwr+AojhqoDW5gj/gHcyEXdPmzCxrii7ip+5iV+67pZmirkW6mWb5umq9pmYUovZrlaqxE+lYmr63ogqw4K0zyJ4UMNgURVqEVXIWQSR3B95w7d3KYuTPMwB0cht/neca5cwXmzMy9v985555zpkdTY8MdEEIIIcSpuIn3hBBCCHEilKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0RfN0lauX28Cs351Wg+U4uW89fQ8t113Gm4AehaAIUbenh6wO2BfnAbMQDuY7zhHuaLnhOHir9NCCF3UTzpGErQBLoj5dB99g/cTi/DHa1O3Gu7HkoFek7zh2LWT6F4dKS4lxDSHVE8kQ8l6G7s1odFuLnjK7R8e0Xc03Fuo+9H7/ifo9f8YHEPIaQ7oHgiP0rQ3RCv4d5cf0LodnIU3l3Ve80EalET4uIonjgOJehu5odlmbi167T4yPF6PTsWfbbEio8IIa6E4oljUYLuJlrO/hvaheloPvWduKfzuI97AMqd0+D20CBxDyGkK6N40jkoQXcDt3MvQjv3/3Dnilbc0/l63K+EMvUx9Ix8UNxDCOmKKJ50HkrQLk44mR7/rF2jKeXGR2cqD8yiJE1IF0XxpHPRQiUuTOiG4jVdJziZOF4OXh5eLkJI10LxpPNRgnZh/BrRveyGksLLw8tFCOlaKJ50PkrQLoqPrrwXAzhswcvFy0cI6RoontwblKBdEJ+X2JlTH9qDl4+XkxDi3Cie3DuUoF0QXzSgK+gq5SSkO6N4cu9QgnYxfLk9R67oIydeTl5eQohzckQ8cR9yHxThQ4R7ObliPKFpVi6mMXS3TWvhug3sA3d/6Yn+t7++jDs/tD1Ss0cfBXr6DwTYvanms1fQUn9DfGQZX2u3f8EC8REhxJnYGk9s1XvScHj+aYb4CGj4/UHcPFYhPuo4V4snlKBdCL8Go/3N5+Ij6/q9NhHKeWPFR601rj2GH1KLxUeWecwYjfsSHxUftXbz8Dk0/MG20ZXKT59wyjV2azPWYWlKORCzCvviAsS9tihF8pyNyMRIxG1di1iVuJvYqQ6Za5cjmX0Esf/1EeLGiLtJp7AnntjKa+8s9GKtZ4NbeZdQ/9Rn4iN5OGs8sY8+htjWxV2nxoYFv8PTL+5CUaO4z9Hqq5D7xQ5sWL4ET8/5HWbz2zOLsHRNAlIzSlHbLP4c+RH/ijdb9RxtOWu4Deojblnn7uclbpnrMUgpbrXNnnJbVXMYK4RjZRFSz4r7XJIOJanL2XkxH6syasR9DnBmj/68Sy4Vd5DuRLbzspO1t9wlyWKeaUf8KEtdJP7uOmTWiTtl4HzXoJu1KNm/Gk8vXo1tn2hQcrkB6K+C92AVlNCitqIY6SkbsXThanxa6lxz8u41/v2rclCEPyjUdK3d+DUkuchV7uq8LFQLW1pkaiipENIRcp2Xna3j5Wbx41ghqwbb6EYhMrIck4tsS9CqKKze/RFStj6L4P7iPkdorkPuu69gQ1oVdAoVwmavQtKf2fO+n4ikxETs5tvb1yIuXAXFjSqkvfEKks9QkuZuH6+SbYUf3gXV1k1OvNy8/B3SXI7sDFZ1HRyCsKGsFq1WI7/tS+BdlAKBcxOR8vGH2DjFR9xHiHzkjCedrWPxxBNeA1n8yDmKnHpxVxtq1enI1fFGpLhDRk7Vgq7NfA/bClmLWTESc99MxLLpAfA2GX+k8BqJ2BcSkRAfAi80IHPzO7J2KXRVzfn6tqMcmt79ss2b3Dpc/tJcZDYCytBpmD5Gyc4wDbILqfJGSHvIGU/uhfaXvwF+Dwax+1Kk59hw+Yg1DDLTyoH+PvBxQOPVeRJ0vQbJn/CJ5kpEL3sZ09poGHiP/z0WRfFAXI7U/XZ0R7gouadCNCWdtHrT5V0Sf1IeHSu/Dvk5avYvO3ZCR8J/wlR4s71FOQWwsRJMCDEidzzpbB0pv3d4KALZffUhNcraGOukO31UaBj4Tp8I6SG3HSOZoLU5CcIF76d3iImvLguv8Qvga7Ng+rJ1l0uRmZqAVYvnixfJ2e8t3oid6ipo7RjIVZt3FEX8ycY8hd8E2TLASIng6TPgy7Z0LBCfNurONFzsTz7DHmirkLl9pX6g2etZLhuwW85fE7dsc7u448v23f72ClquSrdSm8vsW8De3vK3cqOYJWh28Ayeimg+eHNIKGJ5L/yZw8htqxLcXIei/UbH7zOLsGLzfhTZ0CujrVBj5xvLseCZ9h/3qFdjA3/eOTusdMmzSuhz/GdWIl18Pa2OcWPNDajUHMQ2o3LZ85o6zPT9nDMf8W/sQnaFld6MumJ8unk14hfoy/v0cyuxaX9x2wNBm7WoVO/ChhcXiQNJjZ7LMMBNImYJTJ5z9oIl2LBLjUqJQbAUT7qeDpV/YARmxrAc1HgUGaetNf0akJOlYTkyANPGDxX3mWjrOBRmKvDjS3pwmUSC1uK0hk+xUSJ2UgjMZ7gaYYl7/fKNSD5SilqFF/zGRSB4uCcLOqXI3rkaL31camPLVouyYv0ybcHjQ2F5bLAJn2BECv3+BSiRmkrXwl58wjoka2r05WAn/C3hP1xPy3fXxS3bXN+Ug9oRW1rdrifkCP+nXBiCnj9te27QzYxyXAn9wOzv8BufqmUPe8tvrJ5V7nLZvfeEUKHCxg4MBE/gXTA1yD5lJUNf1mDLi8uxKa0YlTeU8A6IQKR/XzSVHsSml9chvcrS0cuO132r8dwalgxKWYj2GorgiCD4KiqRw4/7FDta7l6hiOY9atAgv9jC85UXIJsnjjFTEdlGz1JJyhKs2r4fuRW30G9gACIjAuDtoUP1Kf1rcujlIG0pkl9iyZW9n9XsLA6MiEDgYCV7P1lFZs0SvMbHCJiozUlC/IsJSDtVhSYPlfA7o5RNKElLwIo3DqPS4kfAKi3sb67aqUYJe7MHDA9C5Dgf9LqoYc/1CpILLX8CWhY0l77Mn5MdG56G90iLkuxdWPUH9h5dFn/QFMWTNnk8ESA5qNRwkyL1c4Yb/3vt0ZF4IozxmMIbfzrksgRs8Ui6dBzprNKmGD8Z421OWvYxT9D1LBjw/MxbIw/pd1mmwJBHVyDpzx9i99ZEbHwpHivXb0NK4jz4s8xen/EZsm0KCDW4ICRYFUb52T49hwfiYaP5vQ4XLpo/UZNmP1JvTMbq7R9h38fsti5G6Pp0RXcaOj4iSrujAC2Xr6OHhwLK50LFvZ2j/eVvwOkv+YhtH8SG381evuGT4c/uq3k3lX5Xa801SEtkrdarCvhNX4XdO7ch6dV4LHk1ETt2JmJJOAvGrDUsRZu3B+sPVUE3MAQL3+HH/gasXLwCG7d+gPfXPwmVOgv54s+2TYmwqAhhK7ewWLJCW3byOKsSAJHREW1XXr1CELduG/btZq8ncRWWLF6FpPe3YXUMqzjzy0GHHDS6nbWcMxMSWAVAicjFiUjZnojVi+OxOpHFg63xiByoQ1nKe60rCJcO4u0dhahXDMW0Vz8w+50w1gDIlvwItMhPflOoQHmFPIuE3R8gaf0KLHlpA5K2b8PGJ1XIzioUf9bE5Sy8tZm1ZvpHYMnWD7HD8B5t/xBJi9n7y96j5PekWzsUT6xz8+6L+96eYjag1PRmTOr/jW/87/G/a68Ox0OfSEzj8+7PHEa25NU8HfL/cpBVRG1oyHaAWYKuL9aghN37TjK0RqxQRWHh3CCzgVwYHIPHhZhTjnMVlqrAxm5BJ3QteaJvb2GHzRRW3pncPGDJ6tkIdFDtxqnoWsSNjrm+mbdFWU14+kPoHduJk/3bW/6aXKEWiyFRCDZuXaqCMJ4Xv/E48iTmNOpOH0QaO/EUEc9jzewAKN3F/+DcVYhcuBZzJV8+a5Uf4N1aPvjNyqWINmnRKofPwH8ti2Knre0UQaGI5MexpvWlGkFzOfJyWHpWRCAsqO0wEDhzKWJHsmTcihKBU6fCj23pzpSJU9HkpTvNktdZHXyf/COWRJj0vqgiMH92CNsoNxp4YwhwCkTG/xFzA0zeMfY7/NzllSwzNcfxqYbFlYFTsfyFKPi2+uyU8Jv5MiuD1HvFnvPAXpTp+GfHKg0mxfSOmIe5QjEPI1ciKFM8sc592ABxS17t+rsdjoeeGB8TwY5OVpH/i8QYp3oNMvlltSEzbGjItp9b65PV0Brhfept9KW1wWeoPrrV1tvc2Sc7RVQUwuyJlF2ZQp7xfjc+L4Xu638J28rnw4T7TtHO8hvmPvubVShVCJvEu8ek5jTqcDqPJ1kFoh8JkU6mLEmH/kLiutKlAmTy4D1yMiItzDZTPhyKcHHbJh4hiI4SMrR5N7fYva2MmYwwD3Ffewz2wyh+f7neAddNDe/nSMRaiBtK/0Ah2daWVQq9AT+OG1BEITrEwkk6mL2PEh/Bj5/59Bj4GyfnHykRNl7fK9GK4TktfnZK+AfwuFWHc5Xm18wpnljXUv29uCWvdv1dGeKhYuxkxPZnR7fElKvqnMOsIatA8K8j227IdoBbvnFNsY4FA94aGROBsXbUEnX1VSjRZOHTlD3C4JSlLy7CCr5Eot107a/4uPcSN+7y8+k+ayz28OxI9G6t6d2TaHw9G9ce2yvucbx2ld8w95klhvHjzD9rr6AIYTSmLs+0ZVqH6vP8PgCjeLPSEjfzVpiuukbo/lSO9rPcvemusLvLKzBislBRMO3mLtEcZQlNPzrdZs06VJcXI/uLPUjelYBVy5cjfgFfetRRqnBOGKxWjuQX9QOqzG4v7tFfamjSQrg6eKVa/zjAH8Mkk6yeeQ8Ze201/DNXYtQIK+e3xGeHS2UQvjSxfA+WSpWR3YSlXZmmpibh3hjFE+uaL30vrK3Nl++0djMm9f/GN/73+N+1lyzx0J1VOGfy885kyhWPO4fY4/6T8fgvTXur5OV2vODuE1fnHWUnjQKRrGlvU36+WozUNfOFVb82bN+DtAw1TvNzRxWM8Q/ZU9X0ha/QTVCFCxZHhUipEQMDO1n9zN+oYd3ohHJ7oJ+41XG3si/ghz1FGHDwKXifX2Z2G7D/t+JPyqdd5TcMnrKUGBbvEi7XmM+JZq1IYSCQCl52zl28Vq+/Ouk7UOYTc2QoonlZjLu5bxQiW83OB5u70bSozEjC0gXzsWJtAnZ+koXML3mLVQm/XwY5sKZvuESlgNdg/ap/Fm+DFBCq0tfq9dd5VV5CxcR27LMTftEH3vZ+BD/c0rfePTyly2Z0G+BhXuGneNI2/sUXfG1tSzcpUj9nuLX3izTkiofeUdOEy0/CWBZxVkF9zmdIZ8e77/QoCz048nGrPVEgdBfxZFd0giVr3uU01ob6Px9ksykB6ez983t0BRL+9CH2fawfLMYH2zxmNGCnbZ4IHKM/+HNZgDLvXLKgpgi5PNAqWIt/mH5Xd+U2Qt7rP3wpT8XD0kvjKMY+IOtSn5z95dch/xhvXbLyeEkHWeHmpT+WpedEa9HUzrEkDXKvssRq69FT+Dlwt5tb900B8tmmefe9ND547bWUQlwTBoolIiXlI3Gw2AasfHaq0JvgMMLbHIq4N/Wr/lm8vRDVuvKv1bbqMbBdO3rbWDAVijnuGSRIlc3otizKsS0jZyd3POlsspXfIwRTWk25qkHuYTsuA/fpZWcFtDU3XFZD6OZmyY6PVlPGRCLQllrBBTUO8d+LeB6vz2W1c2XrpK7TNohbtvEdP1U/IKRwLw7Y1DuuRdEhPsjEjjK7MPcxXXs8qd3lN1xPRBAWvSUdZIXb5uf1A7BazYlWwVfoMS5DtZVv0mu4atStJfL20feJ19aIU22kNIqtQzv5hscIiVjfza3D6YIC9m8AosNtablpcVrNrwOrMHMFHyimgsL4nLjBKiPipvx84Tuc3xfhXOseTMt+4qs/389XW3mvGlBrNuWJfXbCR2C9t03bYD6rgz+n8KtnylAp7CCWdLt4YoX/JKMpV2fVOMCOcZunVnmy41XclMQaupVW8p2bAnXg3dz6gRc+eHySjde6DN1FSqX59Tb2pPknJU4Qa1RR+M8pvNbagPQkPv1Fv9uS2ox3kKhmJWCt50WP23F9zkW5hzlyqILj2Vt+w9xnRExEmLVuao8ghIXzI9R4TrQKw0bzem0dDh21MFdfW4xsfnyZ8vNHML/XpFucQlibc5SlqnbwCUY075jg3dz1+gqI7XMsm6C/bCo9E0JbzFrj4rb8PBE4jrcmtMjMKNTHhbao/DCKf26XDyPzjHSi1RYfFy9htDbMX5g4zloyaunk3lyH7KMSX5c6MABCxw9vDeXZVMpuq7vFE6t+nHJ1HB8c5FMe7Zha1d9LP1alvARlEoecrrQIeeK2FDc+Sq224Cg7SVi0MZ2qYo2h6Z6naf0VlM0NyN/5JtIu21R8IwoEzlmLuIfY713VYMvy1UjWVKHeZDUhvnJZ+rvLhUFoOhYYYl+a131GVlrRc+JQ9DDpxegqeLl5+W1nmG0ARIYEtXGiKBA2ST8Ay/g6kn/MLGGuvjbrPWxTm7SUG6uQlpCEnBsSf7l/KKYLFclypG7ZhxKTBFKr2YG1n1TZdvKa8UHkVD7ynJ1TaSUsobKyh7b1+gz6oq8wXbQcOXmtX4+24iDe2lkgPnIM30mzhJ4KneY9vJUmsZpafTky3z2oHxMgGInYJ0ey18aS+s73kG3yEQhl3qKBTuLFK0OmInYg2yjfiy37Sls/F0vOuTvX4ZMqqXfNB9GP86kzrDW04x2kSaxuVl+ehS1pDpor3oV0r3jSFk+MnxbDYkg5iorZMTPmKUy3dWqVhz8Che8xL0TqJ8Wtj9UaNbbtVEse4wbuG54f+9/ZhWdx/t9A4G+fw3Q/idFv2gpk/7UYVwcG49Ho4SwUMAN/gj4lx1BUU4HcjAycKLmE8yf2ITllP3Ib/wNzpzSjqPQqBgVNQfRIGyeau/XFiPGhGFRTjK//WYOygmNIT0vDF8dycPxvGdi/LxWfHsnB19VatLC3K+yFtxA/zrz5VFeUhr9XgP2txzHWAd8w4qya/3EFLaV29lxY4D7kPvR5wvJVSz4dS65pFYrHRkMxw47JhDXHsD31GzQiAk8uDIdvT3G/JQP6oDGLJefGaijH/Bo/u5/t6zscgfdfxMnCCzj/VRa+OJqD/LMV+OoIO4b/9xBKBvwOy2O/R+7XV4HhE/DkWEM3szu8/UfhxtcafFt1Fn8/dAh/yy1FZXkOPt6TjM9P1OORV+ZhWE4hzmMgxv5qIkbYsc6Ch1cLvj18CvkVFWjp/yv8fkEQBknMGDE/xhV4YEAjsk9UoOYb9nqOncK5ylNI37sH+w6VwvuZp/CzU8WsTMPxyBPBti2wUVuMz3PYk9ScwQl1Fv7KznOzW/0IPPowy5YKHzw8ohEn88px8Ztj+OLIMZz4pgoXCw4i5eNUpBxgsaLWB488dve5+w4NhPfFk8g/fwFfHT2EIycK8O35u2X2mrsUUxo14B9Bq3O5pwoP/8wD36iLUfFtjvBcX5VX6T+7j9KQ+/0E/PEZP/y9gJVdFYwZUcNhiGqKIYEY1ZSHL89dwpnsQ0JsKam8iC//koqPWTk/zypG7YMTMDPo7mUFiify8WAxhccWg2YWQ3gskZPd8URk7XN2H+yNnvlZ+Pp7BSLnPI9HfEyvqWpx/ngGiq6anvMeGMZy6lfqb/Cvcg2OZPE4cwYn9+/FrrRCeMwyHOOmv1eHogM5cPP/xUR9S5gFu9hwewZGqBD76iasnBkEXw8daks1wvKCvtErkLB5NoLb26p1Z7XcFxKxO3EV4qIDhEE+uvo61F6ug9bdE94BQQhW8SqHFvnvvootGay2rv/Nbk8x66fiVse19WUYcn5Zhr3lrj6lFsYeKFhlbqwtsyncRyKcf7EKb60ZzYn2Hr8Um9c/i+gA/vWldag8pUHJVRXC4zbg/Vdj4GNpKqVyJOau3yIc+35erNV1uRS5BZVQDJ+KlVu3IW6MTX3S0n5c+pOVb4p9o0QVAfPE18PO4/oqFGlKUds7mJV1G1abrqhijxv8WrD+HDS7ae8udqkcMw989TLhvFVohZjALytcZ8k7eGY8Ev5nXuuBanxBmGVvY+PCKASyc1pXpy9zvSoUcazMr0/xsdh7oBgyFa+z55obMRT8W+2Ez65OgVHTVyBpK3seQ739QR+TGSlKBD6diHdfnaf/3JvqUKJRo+hiE3r5BGHm4k14f077lpd0NXLGk87kmHKLvVv9J2OKLYOojbFjdc1rxnGmGOdu+iL2pU1Wj3GuR1Njwx1xu+vg3Vi7N+IDdZ0QbBVjZuP1xVPhZ+1aZDfRGLobLd9aGflkB17TdfO9W9s1aP5nA1q+k7g42A5uo+9H/4IF4iNCZFK8C7PfVgMxq7AvjhJue8kZTzi+tjZfvtPg+1cyZG1Bu1o86ZoJWlSftwtrd6hRK2TpoYhd9jLigrr39IhbHxbhh6UZ4iPn1ydpCnrNF4ZdESKbsn2L8NohLfzjWEucr0NO2sUR8YSvrc2X72y+cA0ttfLOLXC1eNKlEzSRdj0iuUt8nyufCtFPEyc+IkQm2kJsez4JuboALNy+CtEduOJAKJ7cSx1fsJQ4nd5rJohbzq2rlJM4m1Kkvb0fRZclpmfVFSN5w3ssOQNeU2Y47GsAuxOKJ/cOtaBd1A/LMnFrl7DysFPq9exY9NkSKz4ixB6lSJ6jX1tc0V+FAYYBqTfrUVuvT9peIfFY90IEvLv5AkZyoXhyb1CCdmHXo1LQfOo78ZHzcB/3APqpnxYfEWI/7SUNMg6qcby07MekzNfY9guIRHRsDGLFpYOJfCiedD5K0C6s5ey/cf1Xe3HnivNMROtxvxL9/voU3B4aJO4hhHQFFE86H12DdmH8oFWmPuY0KwLxcvDyUHImpOuheNL5KEG7uJ6RD0J5YJZQ07yX+PPzcvDyEEK6JoonnYu6uLsJ3j2lXZh+T64h8WtEyp3TqOVMiIugeNI5KEF3M509GpNGaxPiuiieOBYl6G5Id6QcN9efcOjiA3zRAD4vUfEofRUoIa6M4onjUILuxvgyfjd3fCXrWrt8Ldze8T+n5TsJ6WYonsiPEjQRasC6z/6B2+lluKOVWJ2pDcL3r07zF75FhlrMhHRvFE/kQwmatHL7eBWa86uF7qqW89fQ8t113Gm4wc66FkDhhh6eHnB7oB/cRgwQup3cw3xl/nJ0QoiroHjSMZSgCSGEECdE86AJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHE6wP8De/Jhar/OivYAAAAASUVORK5CYII="}}]); \ No newline at end of file diff --git a/assets/js/43cda9e8.bee4153c.js b/assets/js/43cda9e8.bee4153c.js deleted file mode 100644 index 2c2fdf00cf47..000000000000 --- a/assets/js/43cda9e8.bee4153c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6357],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),d=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=d(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=d(n),h=a,k=p["".concat(l,".").concat(h)]||p[h]||c[h]||r;return n?o.createElement(k,i(i({ref:t},u),{},{components:n})):o.createElement(k,i({ref:t},u))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var d=2;d{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>k,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var o=n(87462),a=n(63366),r=(n(67294),n(3905)),i=["components"],s={id:"learn-guides-assets-ledger",title:"Polkadot-JS Guides about Asset Hub Ledger App",sidebar_label:"Asset Hub Ledger Guides",description:"Polkadot-JS Guides about Ledger and the Asset Hub.",keywords:["asset hub","ledger","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-ledger"},l=void 0,d={unversionedId:"learn/learn-guides-assets-ledger",id:"learn/learn-guides-assets-ledger",title:"Polkadot-JS Guides about Asset Hub Ledger App",description:"Polkadot-JS Guides about Ledger and the Asset Hub.",source:"@site/../docs/learn/learn-guides-assets-ledger.md",sourceDirName:"learn",slug:"/learn-guides-assets-ledger",permalink:"/docs/learn-guides-assets-ledger",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets-ledger.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-assets-ledger",title:"Polkadot-JS Guides about Asset Hub Ledger App",sidebar_label:"Asset Hub Ledger Guides",description:"Polkadot-JS Guides about Ledger and the Asset Hub.",keywords:["asset hub","ledger","assets","statemine","statemint","polkadot-js"],slug:"../learn-guides-assets-ledger"},sidebar:"docs",previous:{title:"Create Asset Guides",permalink:"/docs/learn-guides-assets-create"},next:{title:"Asset Conversion Tutorials",permalink:"/docs/learn-guides-asset-conversion"}},u={},p=[{value:"Requirements",id:"requirements",level:2},{value:"Installing the Ledger Application",id:"installing-the-ledger-application",level:2},{value:"Using Ledger Live",id:"using-ledger-live",level:3},{value:"Using on Polkadot-JS Apps UI",id:"using-on-polkadot-js-apps-ui",level:2},{value:"Adding Your Account",id:"adding-your-account",level:3},{value:"Working on Relay Chains and Asset Hubs",id:"working-on-relay-chains-and-asset-hubs",level:3},{value:"Confirming the Address on your Device",id:"confirming-the-address-on-your-device",level:3},{value:"Using Polkadot-JS Apps",id:"using-polkadot-js-apps",level:4},{value:"Sending a Transfer",id:"sending-a-transfer",level:3},{value:"Receiving a Transfer",id:"receiving-a-transfer",level:3},{value:"Teleporting",id:"teleporting",level:3},{value:"Support",id:"support",level:2}],c={toc:p},h="wrapper";function k(e){var t=e.components,s=(0,a.Z)(e,i);return(0,r.kt)(h,(0,o.Z)({},c,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,r.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,r.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,r.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Because of required WebUSB support, Ledger wallets currently only work on Chromium-based browsers\nlike Brave, Chrome or Edge.")),(0,r.kt)("p",null,"The Asset Hub has a ",(0,r.kt)("a",{parentName:"p",href:"https://www.ledger.com/"},"Ledger")," application that is compatible with the Ledger\nNano S and Ledger Nano X devices. The Ledger devices are hardware wallets that keep your private key\nsecured on a physical device that does not get directly exposed to your computer or the internet."),(0,r.kt)("p",null,"The Statemine application allows you to manage your KSM and other tokens on the Asset Hub parachain.\nIt supports most of the available transaction types of the network in the XL version of the app\n(details ",(0,r.kt)("a",{parentName:"p",href:"#installing-the-ledger-application"},"below"),")."),(0,r.kt)("p",null,"If you have trouble using Ledger or following the directions below, you can try searching for your\nissue on the ",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/"},"Polkadot Support page"),"."),(0,r.kt)("admonition",{title:"Intro to Ledger Explainer",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Please check out our\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/7VlTncHCGPc"},"intro to Ledger video on YouTube for more information"),".")),(0,r.kt)("h2",{id:"requirements"},"Requirements"),(0,r.kt)("p",null,"Here is a list of what you will need before starting:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A Ledger Nano S or a Ledger Nano X."),(0,r.kt)("li",{parentName:"ul"},"The latest firmware installed."),(0,r.kt)("li",{parentName:"ul"},"Ledger Live is installed and at version 2.29 or newer (see settings -> about to find out if you're\nup to date)."),(0,r.kt)("li",{parentName:"ul"},"A web browser is installed that you can use to access\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),".")),(0,r.kt)("h2",{id:"installing-the-ledger-application"},"Installing the Ledger Application"),(0,r.kt)("h3",{id:"using-ledger-live"},"Using Ledger Live"),(0,r.kt)("admonition",{title:"Ledger Nano S",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"There are two versions of the Statemine app: the normal (light) version and the XL version. The\nlight version has smaller size but it supports only basic functionality. If you want access to all\nthe supported extrinsics, you need to install the XL version of the app. You can see\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Zondax/ledger-statemine"},"here")," a full list of the extrinsics supported by both\nversions.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Open the "Manager" tab in Ledger Live.'),(0,r.kt)("li",{parentName:"ul"},"Connect and unlock your Ledger device."),(0,r.kt)("li",{parentName:"ul"},"If asked, allow the manager on your device by pressing both buttons on the YES screen."),(0,r.kt)("li",{parentName:"ul"},"Search for Statemine in the app catalog."),(0,r.kt)("li",{parentName:"ul"},"If you are using a Ledger Nano S, install either the normal (light) version or the XL version. For\nLedger Nano X, there will only be one app available.")),(0,r.kt)("p",null,"Please proceed to the ",(0,r.kt)("a",{parentName:"p",href:"#using-on-polkadot-js-apps"},"usage instructions")," below."),(0,r.kt)("h2",{id:"using-on-polkadot-js-apps-ui"},"Using on Polkadot-JS Apps UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot extension doesn't support Statemine Ledger accounts at this point, so you need to add\nyour account on Polkadot-JS UI as described below.")),(0,r.kt)("h3",{id:"adding-your-account"},"Adding Your Account"),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"These instructions will guide you on how to add a Ledger account that's ",(0,r.kt)("strong",{parentName:"p"},"only")," available on the\nAsset Hub. If you want to use the same Ledger account on both\nPolkadot ",(0,r.kt)("strong",{parentName:"p"},"and")," the Asset Hub check the\ninstructions ",(0,r.kt)("a",{parentName:"p",href:"#working-on-relay-chains-and-asset-hubs"},"below"),".")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI")," already has an integration with the\nLedger application so that your device will work with the browser interface after installation. The\nfunctionality is currently gated behind a feature setting that you will need to turn on."),(0,r.kt)("p",null,'In order to turn on the interoperability with the Statemine Ledger application, go to the "Settings"\ntab in ',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),'. Find the option for attaching\nLedger devices and switch the option from the default "Do not attach Ledger devices" to "Attach\nLedger via WebUSB" (',(0,r.kt)("strong",{parentName:"p"},"but see note above"),")."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Dropdown selector for allowing Ledger connections in Polkadot-JS Apps UI Settings",src:n(54035).Z,width:"531",height:"235"})),(0,r.kt)("p",null,'Click "Save" to keep your settings.'),(0,r.kt)("p",null,'Now when you go to the "Accounts" tab you will see a new button that says "Add via Ledger". Ensure\nthat your Ledger device is unlocked, Ledger Live is ',(0,r.kt)("strong",{parentName:"p"},"closed")," and you have\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169778-how-to-switch-network-nodes"},"switched over"),"\nto the Statemine application, then click this button."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Add Ledger button in Polkadot-JS Apps UI",src:n(26789).Z,width:"488",height:"83"})),(0,r.kt)("p",null,"A popup will appear asking you to select an account and derivation path."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Picking an account and derivation path",src:n(33414).Z,width:"1894",height:"643"})),(0,r.kt)("p",null,"The first option lets you select an account. You can have multiple accounts on a single Ledger\ndevice. The second dropdown lets you pick a derivation path - think of it like a formula from which\nchild accounts are generated. If in doubt, pick the default option for both."),(0,r.kt)("p",null,"Once you confirm your selection, depending on your browser and its security settings, you might need\nto confirm the USB connection through a popup like the one below when adding the Ledger device for\nthe first time:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Display the device connection popup",src:n(57302).Z,width:"468",height:"461"})),(0,r.kt)("p",null,'You should now be able to scroll down and find a new account on the page with the type "ledger".'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Displaying the Ledger account in the list",src:n(78465).Z,width:"867",height:"70"})),(0,r.kt)("p",null,"You can now use this account to interact with the Asset Hub on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI")," and it will prompt your ledger for\nconfirmation when you initiate a transaction."),(0,r.kt)("h3",{id:"working-on-relay-chains-and-asset-hubs"},"Working on Relay Chains and Asset Hubs"),(0,r.kt)("p",null,"Polkadot and Kusama accounts from the ",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},"extension"),"\nwill show up in the Asset Hub, even if they're not set to be used on all chains. The Asset Hub is a\nsystem parachains on Polkadot :polkadot}}"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"However"),", as mentioned above, the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},"Polkadot extension")," does not support Statemine\nLedger accounts at the moment, but the Polkadot-JS UI does. So, if your Kusama account is in the\nPolkadot extension, you'll need to remove it from there and re-add it on Polkadot-JS UI directly\n",(0,r.kt)("strong",{parentName:"p"},"as a Kusama account"),", as described\n",(0,r.kt)("a",{parentName:"p",href:"https://guide.kusama.network/docs/kusama-ledger#using-on-polkadot-js-apps-ui"},"here"),". After that,\nyou will be able to make transactions with that account."),(0,r.kt)("p",null,"To remove an account from the Polkadot extension:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Open the extension"),(0,r.kt)("li",{parentName:"ol"},"Click on the three dots next to the account"),(0,r.kt)("li",{parentName:"ol"},'Select "Forget account".')),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"As mentioned above, a Polkadot :polkadot}}")),(0,r.kt)("h3",{id:"confirming-the-address-on-your-device"},"Confirming the Address on your Device"),(0,r.kt)("p",null,'On the "Accounts" tab, find your Ledger-connected account. Click on the three vertical dots at the\nend of the row. This will open a new menu, here you can click the "Show address on hardware device"\noption to display the address on your device.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Options menu of an account in the Accounts screen of Polkadot-JS Apps UI",src:n(83566).Z,width:"419",height:"478"})),(0,r.kt)("p",null,"Here you can scroll through and make sure the address matches to what is displayed on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),"."),(0,r.kt)("h4",{id:"using-polkadot-js-apps"},"Using Polkadot-JS Apps"),(0,r.kt)("p",null,'Once you have your account loaded on the "Accounts" tab it should show a row with your Ledger\naccount. At the far right of the row is located your account\'s DOT balance. If you expand the\nbalance arrow, it will show details of your balance such as locks or reserved amounts.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Account row showing empty balance",src:n(78465).Z,width:"867",height:"70"})),(0,r.kt)("h3",{id:"sending-a-transfer"},"Sending a Transfer"),(0,r.kt)("p",null,"If you would like to send a transfer from your account housed on the Ledger device, the easiest\nmethod is to use ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps UI"),"."),(0,r.kt)("admonition",{title:"Transfers",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Transferring in this way sends tokens to another account on the Asset Hub parachain. If you need to\ntransfer KSM between the Asset Hub and\nPolkadot, see the ",(0,r.kt)("a",{parentName:"p",href:"#teleporting"},"Teleporting"),"\nsection below.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Click on the "Send" button next to your account.'),(0,r.kt)("li",{parentName:"ul"},"In the second input, select one of the accounts from the drop-down menu or paste the address that\nyou want to transfer funds to."),(0,r.kt)("li",{parentName:"ul"},"In the third input, enter the amount of KSM you want to transfer."),(0,r.kt)("li",{parentName:"ul"},'Click the "Make Transfer" button.'),(0,r.kt)("li",{parentName:"ul"},"Confirm the transaction on your device."),(0,r.kt)("li",{parentName:"ul"},"A green success notification will be displayed when the transaction is included in a block.")),(0,r.kt)("admonition",{title:'The "Transfer with Keep-Alive Checks" toggle',type:"note"},(0,r.kt)("p",{parentName:"admonition"},'Note the "Transfer with Keep-Alive Checks" toggle. While this toggle is in the ',(0,r.kt)("em",{parentName:"p"},"On")," state, your\naccount will be unable to make transactions which would get its balance below the existential\ndeposit. This prevents reaping of accounts with low balances. If you toggle this to ",(0,r.kt)("em",{parentName:"p"},"Off"),", you will\nbe able to go below existential deposit balance, causing your account to be deleted and any dust\namount of KSM to be burned. If you encounter KeepAlive errors when making transactions, this might\nbe the reason."),(0,r.kt)("p",{parentName:"admonition"},"A detailed guide on doing transfers is available\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-ledger#sending-a-transfer-with-ledger-devices"},"here"),".")),(0,r.kt)("h3",{id:"receiving-a-transfer"},"Receiving a Transfer"),(0,r.kt)("p",null,"In order to receive a transfer on the accounts stored on your Ledger device, you will need to\nprovide the sender (i.e. the payer) with your address."),(0,r.kt)("p",null,"The easiest way to get your address is to click on the account name which will open a sidebar. Your\naddress will be shown in this sidebar, along with some other information. Another method is just\nclicking on your account's avatar icon - this immediately copies your address to the clipboard."),(0,r.kt)("admonition",{title:"Your Asset Hub address is the same as your Relay Chain address",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Make sure that you clarify to the sender that you wish to receive your tokens on the Asset Hub\nparachain, otherwise (if you're receiving DOT\ntokens) they could be sent on the Polkadot\nchain.")),(0,r.kt)("admonition",{title:"Before giving anyone your address",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"Make sure it matches what's really on the Ledger by\n",(0,r.kt)("a",{parentName:"p",href:"#confirming-the-address-on-your-device"},"confirming the address on your device"),". Some malware will\nintercept clicks and clipboard requests and can change your copied value in-flight, so being extra\nvigilant around copy-paste operations makes sense.")),(0,r.kt)("h3",{id:"teleporting"},"Teleporting"),(0,r.kt)("p",null,"Teleporting allows you to send tokens between the Relay Chain and a parachain, or between different\nparachains."),(0,r.kt)("p",null,"The Statemine Ledger app doesn't support the ",(0,r.kt)("inlineCode",{parentName:"p"},"teleport")," extrinsic at this point, so an intermediary\naccount needs to be created first."),(0,r.kt)("p",null,"To teleport KSM to the Relay Chain follow these steps:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Create an account outside your Ledger. Instructions can be found\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-accounts#account-generation"},"here"),"."),(0,r.kt)("li",{parentName:"ul"},"Transfer the desired amount as described ",(0,r.kt)("a",{parentName:"li",href:"#sending-a-transfer"},"above"),". If you want to send exactly\nthe amount you want to teleport, don't forget take into account the fees for teleporting that will\nbe deducted in the next step."),(0,r.kt)("li",{parentName:"ul"},"Teleport your tokens following the instructions you will find ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-teleport"},"here"),".")),(0,r.kt)("p",null,"Teleporting ",(0,r.kt)("strong",{parentName:"p"},"to")," a Ledger account from a non-Ledger account doesn't require these extra steps."),(0,r.kt)("h2",{id:"support"},"Support"),(0,r.kt)("p",null,"If you need support, please visit the ",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot Support page"),"."))}k.isMDXComponent=!0},83566:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/ledger-4-6f7e09be831f4a82031a066b8f222a6c.png"},54035:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/ledger-fd53351628660be133bf903bbc63f682.png"},33414:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/add-account-8690ff195ced1f005f03c2b2bbef349a.png"},78465:(e,t,n)=>{n.d(t,{Z:()=>o});const o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2MAAABGCAYAAABBuEwRAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAB46SURBVHhe7d0LWFVlvgbwFxQRUbkZWwgwcCaIzAOYM5aVjZKJNpM6x1G7TJeRjfWcptOYU9N5vKTVGU/WPDOdMwk6NU1pFycvMwlW6IyNdjOBU6NCR0EugiAIqIiCyln/b62199obUDRhb+P9nWc9e933xjmxePf3ff/P50htTVtIaBiIiIiIiIio+5xoOm6s6XyNVyIiIiIiIupBDGNEREREREQewDBGRERERETkAQxjREREREREHsAwRkRERERE5AEMY0RERERERB7AMEZEREREROQBDGNEREREREQewDBGRERERETkAQxjREREREREHsAwRkRERERE5AEMY0RERERERB7AMEZEREQ9qqy8HNu2fWRsuZL9cpyIqDfwOVJb0xYSGmZsEhEREXWvRx75uQpcs2fNwqxZM429wFtvvY0333oLMdHReOml3xl7yeMKsnDn4hxjIx4ZWb/G5HBjswM7d36B9z/4QK0PGRKGe++5B4GBgWq7paUF69avx759+9X2qJQUpKVNUuuiqakJr7/xBmpr69T27RMnYvTo69U60bfBiabjxpqOYYyIiIh6lBm6hBnIOtpHXqAmB0/Yt2GcGcBUMAOWbrBjpH6Gi+LiYnzw4YeOACbBbH/xfkyfNg39+vVDTs5mdZ4EMDOYDY8brgKX+7YZzCbedhvi4uLUdQ7qc2Wh0NjUdRwUv1wxDQv0t9VYz6lG9hNzkVmkDriKt2PjsjRjg+jScQ9j7KZIREREPUqClgQuIQGMQcx7fblOCzyT7nYGnKQ7kRGfg08KjG0LCVOf79yJUSmjHC1hiYnX4OTJk6ivr0d1dTUOlB5ASkqyOibh7HujR6uwJtdWVFSgoaFBXSPkHnKvoqKv1XZ7EqzWY+MGY1kch0z7k8iuMQ6rsKUFMSxxnpM1Dtvs05CpPr8Nk5eZ++1IsN6PQYx6CMMYERER9Tj3QCYYxLxNNSpKgIRoa1OTDVGxQPanXxnbTq2trSpMhYWFGnsAPz8/9O/fH2Vl5aqly8fHBwMHDjSO6oFLgposdXVHEBwcrK4xyb1Ky0rVteeVZMfSSUXIXGd8toKNyIQdWXOv07dFeBqWLU5D9ps52k9H5HkMY0RERNTjqqqqXAKZGcRkP3mXuCttxprOFh1vrLUnwctsFRPS+hU0OMjYQruwJcEsICDA2II6V64xyb3knl01ckwaUFKhgtaXn+Yg4ZYULT66iYxGQtE27HK0oBF5DsMYERER9aj/ev55zH3oYezY8bEKYM8+s1S9yrbsl+NE3SY8Cm4j0Ig8hmHMS506dQpH6utRWXUIpWXlKC45oBZZl31yTM4hIiK6XEnokgA2YsQI9coQ5p2KD7p26Ksu76jihU7Gh1m7FMpYsMajjcYWVDdG6c5oOn78OJqbm40tqHPlGpPcS+7ZVdUHi401ossDw5iXOXGiWYWt2roj2paPap4PCgpCSEiIWmRdb/73UefIuXINERHR5eKX8+dj7Ngb1boZyMwgJvvlOHkDfXxYYbm1P58+jmzyGMs4LIN0P5RuiDL2yyTBS8JUTEy0+vulra1NBTCThC3zbxwZH+Ye1uRew2KGuXR9PBcVFGOjVNdE6bJY+FFe+7FhBZ8gO34cRrlVXSTyBIYxLyJzatRrv4QCBwzAAG2RQa5nz57F9vrPMTHvLrXIuuyTY3KOnCvXmPNxEBERXQ7cA5lgEPM+I6fbkbB5tbNCoRTFKErDDUnGtoVZHXFX3i5H69iePXvVmC8JWzabDVcNuwp5efnqmFl9UUrZy7VRUVEqzMk1Qu4h94qPv1ptn1dBFhZsjkfGdCMoSuVHZMG+wlJsREriL87B5Nlp7ceSEXkA5xnzAhKuDlXXwN/fH76+7fOxhLCCY7vVetKga/FByhq1biX3kG6LQ23hHd6DiIjIG5ktYwxiXuwckz5Xb3oS9o/GIWuZM9z0yKTPl2SeMQv3+dSIugknffZC0tVQvjWS1i5dG0o+fQ6nW44hKmku7tz3lEsYe+36Zfiz36sIbBuIB1oeg4/2f0Ka/qUrQGTEULVNRER0OZB5xljSnoh6A4YxLyPf/Pj4+rq0Zn3991+gas8ban1QeAqaU5fi6eLfqO1FcY/hrYhlKOzzpdqe3PoTPHbqGbUupIWsTVvkmygiIiIiIvIe7mHMI/3ZysvLUVFx0NjqvaTwxqmWFhXEduzdjnc/flff3+CsBHSivghjg0fjsZjfqUXWS333GUeBCt8D6vXdj7dj+97d6l5yTxb1ICIiIuq9WvMq0TD7HVT5LjD2UFe0bCsx1npGj4ex48eb0Hj0KBoaG3BUe+3NGhobMTAwEK//7U+Y9txUPPRyBn78n9MQOeJ++Pj0UedEJz2Mp/btw327d6tF1me0/kwd80Uf/LB1Nqb95xJkvPw7TH3uafzpb1vUPeXeRETdonQLnl9TAP6WISLyPm3HW3Bs0VbUjslE89tfoU9siHGEzuX017U4POIl1P3gFfUq2z2hx7splpWV4eixY2o9cEAgYmOvUuu9jRTbkNL0UhFxzksP4i+f/8U4Auz9fRH6+Z3FsVN1iAxKwKjPPkO5McdGdP/+2PX976Ph5GH07zsATc1nEP/wHHVM/Oh7Y/DKI7/AiRMnMCQsVBUFuRD5+QX463t/VYOoO5rx/r33NmHlqlXGlqtJk27HQ3PnqnssfvppY6/TqFEpHd5XxrnJAO5du/KMPVAVlWQSUKmqJDq7pzDvK9zvY+rsvenb7CtkTl0ILF6PjA6qfp1PR4PSySBhbEcY7HclIcjYRUREnte8+n9x/LltOL33sLEH6P/DBIRsvNvY8lJeUECl+bV8NDywztgCgl+djoD7ko2tS8ej3RSbmk44gphoOtHkKH3a2zRpYSkgIECtjxtxq3oVNyfejO3N/8C1n4/E6IJb8GLp87g9zBmWZd3/82OIWdWK8MxGDD3kp10zwjgK3DriX9Sr3FveoztI6Nq4YX27RYKYScLP22+96XL8iiuuUGHJOnljSUkJ0u0ZSElOcTk3bdIkPPLzR9VxU0f3lGXhggUuIWvxokUux+Ua8eof/6heiXqfMuQuX4P8PC1ELX/BWLZoe63kHPPYC1id10m7lwSxtQVA5RZkOe7RiPw1zmvbX+96PDevAKvl8xinNOatsVzr3E9ERF3T+nkF6qetQcO9f1ZBLGzbHEeLWN8R/EqxK/pec4WxpnPf7i7dGsaOHj2Gw4cPq/Fh+/cXo7RUH99kVVpaqo7JOXKuXNMbnDx5Cn366F0R7/3BT7H+qQ14+aFMvPur9fhT5R9xpu2MOvZy+e/x3He+g9euvVYtst4v30jUbUC/fzZh/a8WIvOhn2PDU4vw0x9MUIfk3vIe3uSB++9Xr7m5W9SrhDIpXzvzJz/BHXdMUftMsn3jjTdg9+49xp6LJ0Hth3f8EP/85241mST1XtLadefUacbypHPeHEVa0pzHNpQbu01S2tk8/kQOsldor9a5a6zHtSVTyysmKaucuSkHT6hj7u/bU6qQWxgG++PzMP/xOUiNLMDbuWYckyC2FtXj52jH5PgM2Lau6jiQDZuA+TOSgMgJ2r0mIEYFrVXIDZ9hXDsP9vERqNy6yRGqynK145Dz9fcOK9yCSv2QCndZW22YaVw7f4YNuSvdgyIREXXkbMNJHP3l+6pL4smN+vxs4eXz0fxaHs6U1KvtvtddfFOTPL+cz7Ys6OXjTNbnprZYnonqebtCe1Y+4Tz+xCbX6bet935inftDt+f5fS8KYX97EP1ujVWvst0Tui2M1dfXo6y8DNU1NWp8WPPJZpxt09KDG9knx+QcOVeuqa3tmT6aniSzy0spenG4/hDefO8lrN7wPNb//XXEDYhT+8XVA+Kxc/terJ6tHdcWWT8b6mccBc4E9UW23zvYlLoU2Sm/QZ2P/lee3Ns6g703kFAkLWDlFfp/cFVVVaq19Kabxqptd9LS5h7SiC6Wo9uh2Wq6OA6ZdvPBondpLE5foR/LGofizUXqiGJOErrYuHZ2OTIdc9Zo1Bw8wFLz3ll2FC92DV3ZK8txtzruuS4YyWPNboVBiEuI0H6uI2rcV2PeduRr4eqOFLPTYQxStcBVufWLLoSiICTfpYWo1BhjW9szPBGRxroEva8LIpA6xfne8jk6JWFPhTwiIjqXE6u+wOHvvIim5duNPUDE6SVo+XsJTrziHLLRN/7iWnjkubmgxO54bmalF2PBEznQI5VzKIB67m1YgYySha6Ba3MWymcbxxenoXDlbxzPRTX3m+PeKzCuJMdtzjgP8fGB/3jt73DHdFPdr9vCmIyFCriI8TlyzaBBg4ytb68zZ844wliWFsI+/nILDlTtw7OvPo5nYp/DIzGP4v7IB/H7a1bgt0+/hd35xWqR9eaJwWi5LhCnRg3EsfED8Fv/hSj3LcHOPh/h9X7/re4p95b36A6bN7/v+CbDusi4rvO58sorVQuotIo1NDQiMHBAl8dxyViwmbNmt3tfGcd2LvJeMg5uxIhrHWPQqLf5ChtWAhnzLOO/kuxYOikHq+XBUfAJspGGu6cYR8PT8Iv0eH1dU71zGwonLXGOPUu6ExmOw9XIflOCmh0jjT369UDmOkvL2aQbnMe9TOORKu0zhxphyRAcZglUXVOWa3Q1XGlp+Wo8ov0L2RBmvbn13sOu11vpzC6MpcZ+IiLqUMtHB1B7QxYa7Rtx9ohePbtPTDAizi5FyyflqquiVd/4IcbaN2Ob8mtsNMZRV29ajWzrc1HbO3meHVi50dl6Fm/HVMdz8wZMRhHK1cPhK3yyGZg823wm69cmqHXPad1Vibpb/4BjC7eoV9nuCd0WxqRwxLBhw1SRjq6Sc+WaCy068W0jWXxhYwCWNwxA7Bm9K6NVcb9W/HtkDRYOrZOeij2uszFjycnn+La7iyRYWYPWkqVLVZgSnY0Zc289k0If1ntIgJPxatYxbdTL1FSgWHsIZNqd/38hywKjdav6YLH20Ig2Hgo625XOFurq8iIkRFubs2yIijVWUQPtMLIXu97bvtLSsvYtZ4awt2uMrojpEy4gyBkta9p1M7VfIflrOW6MiKgzDfe9qweFz5zd+vxv/y7CD8zD6X1HUHfzSmOvTsaL+Qxw9qi6ELYpd2NyURbs6rnm2ttDnovYvNDluXenPatrrVvqmRyPaOuDIjwKzqeuZ5x6z/XTu293l24dM9a3b18tXMVgcBdauuQcOVeu6Q1kTJeP0QRqnzofN46cgKsivoP/eGA5BuU9g367V8Dv6zfgv/0xPLpoFq5NjlOLrM/duxevVFbit2VlePLrA3j01BJEn43F6DO34N6Wf1P3lHubY9K8ycGDB1Uwktaw4OAg1U3RDFtCgpUZstLnOKtEXghrAQ+5x+DBgzHp9tuNo9R7xSMjyzXIy7LMbA37hhxdGK3L3OuMo94tKNTZZdGhoc7ZunVORjfEdC1QdVRdMShUi67VqLPevJN7x6RKKJPxbFXYs59pjIjIXd+4EPhGOP+uDrg/BaE5P0XbsVOon7ra2OvkN+Kb9Iu/DhnqebYCGfHmF5qWcWOTlrR/7m2w9BK5zPjf4do2577dXbo1jAmZhDioC13DpPuYnNtb+Pn5OcLYFSFDMTv917j78SxMu/Ve+B51FjrxbdyH0Tddg3veHKMWWS+yVEks1tYnt/4EUw48iilVGQhr0/+jk3vLe3gTCV15+XmIjopW2xEREaqb4vbtO9R2dzALgSx/4UUW7+jN1DduZveI9lQrWFG50Q9ep1rLDLboeBSWW6tuVKPCUegzHNphFB90HZh8OQlKuQnJlVvwnqNgRxly1xYgcvz1XRy7VYU6x39e2rXWboraHa5OqkLuJnNeskbk77B0aZbqjNbKjo0l2FMZgcTh7WIdEVGvN3DReNUKNvg3kzHwV7cg+JVpar90WTy9x/qc0l2aLoo2TF4mQWsJJiMHn2i/wuW5iJIKl+dml3X0TFatZZ7lNyoSYX//GQYtmaBeZbsn9Ej6ae5CifXmZmfrSG/Qv7+/Y0zX61W7MO1//4iH9r6LH2uvrVfP1tKU3qrVmvgzLNj3FH62+z61yPrD0XqY6aMFrvsjI7Vr0rVrf6XdY452r3fVMbm3vIc3MUvLp6bqFR+ldezee+7B2++8027cl4w/62w+sws1e9Ys9fq7l15yaYWj3uQ6TE2PR/ZiayUovQqUqnqoxoAZ48dETQ5etHQztI0eh4TNC50VEgs2ItNxWHtIzXYdmCxhTSpIuVeO8l4xSDUqKOrl5fXKinc7Cnq4GfZdFd6yVHdCvdiH3r1Qlu0IS5+BZC2gma1bMalzkAo5X46vQl2CdGM0xpENm4CZSc4xYzLezDbjLiQzixERdcjHrw8CH70Bg569TW0f/fdsNblzR/pcZPEOoSoiOgp2aIzx1TckaU8+owvji5bnXLvzO2U8k980z9WemS90sYtjd2trw6mtWiw06jr0hB6Z9PnAgQM4fp75xAYNHKjGi/UWLpM+73kHfzm82zgC7L3xlxjQ0ozmpjqEhsdjzGejUH5S7xsc3T8an35/Fw42VmGQ/0C09jmNaz52zlP2oytuw6rE5d9o0udzTdgsZek7C0nmRM0lJQc6vIc5KbQ7CUjukzVL18IlTy9GbKw+MOdckz6b50pLm9xHyti7j1+T+coWLlqsWsk4dqy3cFZ6MgcYq+pNliqI0rXQOfhYPz9brachI70YmdZJn1XFxBx1VAYlZ8RmYVv0Ckc3R1Wt0RLgEtKdx9T7Ysll022x2zUWYPXKOtzMqolERN9Iy7YS1P3gFbXeN+EKnC50TvYshux6GH7JEcbWhZIvFudavnyU7v6WisBqomZLiNKejeYz01HB2HyGnueZPDndjuKVnp30WeZqkykCTEM+zeiW8vbukz73SBgrLCzC6TOn1bpUS7TZhqr16upDaDZaKmSsWEK8s3pZb1BZdQiBWhh7rfILzPv6L2rfzcGxsDcH4T9enouzZ88gY/ovUXFdA145qAegB6+cgzn1ITiw83n4+PRBwm0v46GmTfhHw+fq+AtXL8R9kf+qJnyOjND/nYno0pOHyGpLGKPO6HOYYcY8pBrft0nBj7cxw6UcPhERXTgzjPmGBCD0/fvgd/2VaH4tH02//wytOw9i6PGFF13Ao7eRf7eGB9YZW0Dwq9MRcF+ysXXpeCSMyYTO0lJjG2pD0ODBxl5d49GjqD5UjYCA/og2ut/1FidONKO+oUG1ju1oKMGhlmP4cfhIpD/7I+wq/FidE+AfiB2rSrG5Vv9GftKQNGxfGYszrXpLY1DkjUiaugHv1mRjaL8rMDZ4tPq3DgkO1u4boM4hom+m3Td86ttAz36Dd1mRcWFrLePEkhjEiIguBSm/Xjv6ZYT+9R74T+ldjRqX2umva1E//U019q5vYjhC1s1G36svzbQAVh4JY9S52to6+Pj6uhQvWfqHx9Tkz2LE8BRkzFyIp9/Su+gtmrUIAbufwbEavUtfROI9uPrWF9W6OHv2LNq0ZcgQ/m9KdOmcp6sGERERfStIa2O/cY75ay45hjEvJN0VpZiFWV1RJmz+n7XP4njzMdyT9hAe/J90FBTnq2NJccnYOG8lKgpWoG+/QYgd85S213mdjL9i90QiIup9GpG/ZhXqxjq7xPYoSwtw5LkK4FwqauzlHiSmd1zwpjFvDbIKE2HvaMqJC2UdM9uFL6N27vwC73/wgVqXL4elWFdgoD7vbEtLC9atX499+/ar7VEpKUhLm6TWRVNTE15/4w31ZbW4feJEjB59vVon+jZgGPNC0pp1qLpGFdvoqLz/xEW3uYSxD57+UK1byT2kKMhQW3ivmiKAiIhI59kwJmMh/xHaAyHM1FNhzL1btgpmwNJO5pMqLi7GBx9+6AhgEsz2F+/H9GnT0K9fP+Tk6BUbJICZwWx43HAVuNy3zWA28bbbEBfnNiWwe/EIpeOg6Fq8yXqOe68Hi3g7Ni5LMzaILh2GMS8m3wKd0n4RDdR+eZ21lNTcsXe7SzfFsdfcpNaFr4+PqlTpr/2CY9dEIiLqnfQglmvMW6RapoaXYPUmIDF8C3LVFBb6WEVVQMYyhNE6hlEPVBNg27oF+legQLKl+IwKOFur9A3IZOcShFzfW7shZqpKoW77Iyc4g5EEKbfPZg/djveQ6Hhv9b7BEris8/aZ76mtGmHMlgTkFxifyfKztA9jejEd8+fq6tjN9tVg9QBTPttajVbnHqaEBKq1f/4z0ibprV9yXIKZzaYXP5Lw9vnOnWpfRUWFS5ATEuZqa2tdWs+UjsbuqqBY3D5sxVo+vxHi4lyq6Wo4Fph6iHsYYxOKF5EwJYU3pBKiFOGQbofSynVT4s2qNUwWWZd9ckzOkXPlGgYxIiLqvYKQfNccpEbqIcbROlW5BXtC52D+4/OcQaxGC0WyLcsM7a/xgrXILdVPF5Vb9yAsXT9uHx+B/LXGpOSlW7QgZtOClnmtTU1wXqbeex5mareSEDjfEsT2JBjvrS0zteCVleuY3rzdZ1O7LO9tBjGb9vPo95CfzzqBuqhCfo0WuMzjNWvxvPU9HJxVTR330s5d7ZjovTP6BPcJ0dZ0YkNULJD9aft5rVpbW9HQ0ICwsFBjD+Dn56eGYpSVlatgJkMyBg4caByFCl319fVqqas7gmDtbxq5xiT3Ki0rVdeeV5IdSycVIXOd8dlkTkjYkWWdViQ8DcsWp1nmuCLyLIYxLyMVEGXMl8wRBrSpXz6NjY2OX1Syrv9CalPnyLmsmkhERNSRCCQOd3bSi0nVgoi1255MYG6sOiTd5Oj2FzQ8EZHan+x1HWWWYRO0UNPJXHmlXyAXE3CHpctiTOoMJBdsR77jXq6fTYlMRJy5KygJd0soc3S5DEJcgvt8URFInWL+PFooHCvh8v/08GjRmKe9b9IMl3slT5kAbP2i3bkdibvSdQoPW3TnVfskeJmtWkK6JgYNdv6c7mFLgllAgPPvGDlXrjHJveSeXTVyTBpQUqGC1pef5iDhlhRjniuLyGgkFG3DLsdE/USewzDmpWT8WGhIiApbw2KiERd7lVpkXfbJsQud0JmIiIj0LnzPL39BWyzd9s5n2PVIjSzA2+q6F1xa09w11mlRoHILsoxzL/i9XEirln4PZxdJkw1h1jwXHNZheGw8ol1XsNbyWbTFpftjLxMeBbcRaEQewzBGREREvYIZwpzdDWe0bxnrlN4dUXU5TALy10qoWWNp6XIjY8TUe1iXjottdMwMYWtRrbo/6t0mL5qMEWv3eTpp2XNTfNC1Q191eUcVL3RS1dnapVDGkTUedf4jSTdG6c5oOn78OJqbm40t7X8j7Vy5xiT3knt2VfXBYmON6PLAMEZERES9QCOKC6vUmLKuhpDOqO6OxhiuPfvbp7GgMBtQWWcZ23URSv8P+Uag67xCo1srWEMdKt1byzRBoVqIqzlyEZ9HHx9WWG7tz6ePI5s8xjIOyyDdD6Ubooz9MknwkjAVExOtuhzKmHcJYCYJWyEhIWqR8WHuYU3uNSxmmEvXx3NRQTE2SnVNlC6LhR/lqS6LLgo+QXb8OIxioQ7yAgxjRERE1GtUO9KLFNm4gK6DMo/YcqOYh2gswZ7KDsZ9CbNLo7WYhvv1XWENdKqAiHs3xSrk7jTvWIbctQWIHH99u6AZlHITkiu34D1LwQ7VSrjGWgykYyOn25GweTWyzTwmRTGK0nCDtRKhQcZ6fW/0aOzK2+VoHduzZ68a8yVhSyooXjXsKuTl6f/q0gImlRSl+qJcGxUVpcKcXCPkHnKv+Pir1fZ5FWRhweZ4ZEw3gmLSnchAFuwrLMVGpGri4hxMnp3WfiwZkQewtD0RERF9KzhKz0uXvNFH2s/DpcrBO8dKJc+Yg7Adq5Abrpd5V9UWYSn57jaXl3tZfGvZe70svnWeMbdS8o6S95oO5ghrX4re7f2klWxsHbLWVuvl7SH3qEPi+GrkmiHtXKXt3X52l1L753OOSZ+rNz0J+0fjkLXMGW56ZNLnSzLPmAVL21MP4TxjREREREREHsB5xoiIiIiIiLwAwxgREREREZEHMIwRERERERF5AMMYERERERGRBzCMEREREREReQDDGBERERERkQcwjBEREREREXkAwxgREREREZEHMIwRERERERF5AMMYERERERGRBzCMEREREREReQDDGBERERERkQcwjBEREREREXmAb58+fXD69Gljk4iIiIiIiHqCr5+fH44fO8pARkRERERE1IN8mo41tvn4+KC1tRVnzpwxdhMREREREdGl5O/vb6zpVBgz1omIiIiIiKiHsIAHERERERFRjwP+H+DzMQEznx96AAAAAElFTkSuQmCC"},57302:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/query-device-d7d9e7e7d28a34a343c59094db864a1a.png"},26789:(e,t,n)=>{n.d(t,{Z:()=>o});const o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAegAAABTCAYAAABUKpQOAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABu3SURBVHhe7d0PWFRV3gfwr+AojhqoDW5gj/gHcyEXdPmzCxrii7ip+5iV+67pZmirkW6mWb5umq9pmYUovZrlaqxE+lYmr63ogqw4K0zyJ4UMNgURVqEVXIWQSR3B95w7d3KYuTPMwB0cht/neca5cwXmzMy9v985555zpkdTY8MdEEIIIcSpuIn3hBBCCHEilKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0RfN0lauX28Cs351Wg+U4uW89fQ8t113Gm4AehaAIUbenh6wO2BfnAbMQDuY7zhHuaLnhOHir9NCCF3UTzpGErQBLoj5dB99g/cTi/DHa1O3Gu7HkoFek7zh2LWT6F4dKS4lxDSHVE8kQ8l6G7s1odFuLnjK7R8e0Xc03Fuo+9H7/ifo9f8YHEPIaQ7oHgiP0rQ3RCv4d5cf0LodnIU3l3Ve80EalET4uIonjgOJehu5odlmbi167T4yPF6PTsWfbbEio8IIa6E4oljUYLuJlrO/hvaheloPvWduKfzuI97AMqd0+D20CBxDyGkK6N40jkoQXcDt3MvQjv3/3Dnilbc0/l63K+EMvUx9Ix8UNxDCOmKKJ50HkrQLk44mR7/rF2jKeXGR2cqD8yiJE1IF0XxpHPRQiUuTOiG4jVdJziZOF4OXh5eLkJI10LxpPNRgnZh/BrRveyGksLLw8tFCOlaKJ50PkrQLoqPrrwXAzhswcvFy0cI6RoontwblKBdEJ+X2JlTH9qDl4+XkxDi3Cie3DuUoF0QXzSgK+gq5SSkO6N4cu9QgnYxfLk9R67oIydeTl5eQohzckQ8cR9yHxThQ4R7ObliPKFpVi6mMXS3TWvhug3sA3d/6Yn+t7++jDs/tD1Ss0cfBXr6DwTYvanms1fQUn9DfGQZX2u3f8EC8REhxJnYGk9s1XvScHj+aYb4CGj4/UHcPFYhPuo4V4snlKBdCL8Go/3N5+Ij6/q9NhHKeWPFR601rj2GH1KLxUeWecwYjfsSHxUftXbz8Dk0/MG20ZXKT59wyjV2azPWYWlKORCzCvviAsS9tihF8pyNyMRIxG1di1iVuJvYqQ6Za5cjmX0Esf/1EeLGiLtJp7AnntjKa+8s9GKtZ4NbeZdQ/9Rn4iN5OGs8sY8+htjWxV2nxoYFv8PTL+5CUaO4z9Hqq5D7xQ5sWL4ET8/5HWbz2zOLsHRNAlIzSlHbLP4c+RH/ijdb9RxtOWu4Deojblnn7uclbpnrMUgpbrXNnnJbVXMYK4RjZRFSz4r7XJIOJanL2XkxH6syasR9DnBmj/68Sy4Vd5DuRLbzspO1t9wlyWKeaUf8KEtdJP7uOmTWiTtl4HzXoJu1KNm/Gk8vXo1tn2hQcrkB6K+C92AVlNCitqIY6SkbsXThanxa6lxz8u41/v2rclCEPyjUdK3d+DUkuchV7uq8LFQLW1pkaiipENIRcp2Xna3j5Wbx41ghqwbb6EYhMrIck4tsS9CqKKze/RFStj6L4P7iPkdorkPuu69gQ1oVdAoVwmavQtKf2fO+n4ikxETs5tvb1yIuXAXFjSqkvfEKks9QkuZuH6+SbYUf3gXV1k1OvNy8/B3SXI7sDFZ1HRyCsKGsFq1WI7/tS+BdlAKBcxOR8vGH2DjFR9xHiHzkjCedrWPxxBNeA1n8yDmKnHpxVxtq1enI1fFGpLhDRk7Vgq7NfA/bClmLWTESc99MxLLpAfA2GX+k8BqJ2BcSkRAfAi80IHPzO7J2KXRVzfn6tqMcmt79ss2b3Dpc/tJcZDYCytBpmD5Gyc4wDbILqfJGSHvIGU/uhfaXvwF+Dwax+1Kk59hw+Yg1DDLTyoH+PvBxQOPVeRJ0vQbJn/CJ5kpEL3sZ09poGHiP/z0WRfFAXI7U/XZ0R7gouadCNCWdtHrT5V0Sf1IeHSu/Dvk5avYvO3ZCR8J/wlR4s71FOQWwsRJMCDEidzzpbB0pv3d4KALZffUhNcraGOukO31UaBj4Tp8I6SG3HSOZoLU5CcIF76d3iImvLguv8Qvga7Ng+rJ1l0uRmZqAVYvnixfJ2e8t3oid6ipo7RjIVZt3FEX8ycY8hd8E2TLASIng6TPgy7Z0LBCfNurONFzsTz7DHmirkLl9pX6g2etZLhuwW85fE7dsc7u448v23f72ClquSrdSm8vsW8De3vK3cqOYJWh28Ayeimg+eHNIKGJ5L/yZw8htqxLcXIei/UbH7zOLsGLzfhTZ0CujrVBj5xvLseCZ9h/3qFdjA3/eOTusdMmzSuhz/GdWIl18Pa2OcWPNDajUHMQ2o3LZ85o6zPT9nDMf8W/sQnaFld6MumJ8unk14hfoy/v0cyuxaX9x2wNBm7WoVO/ChhcXiQNJjZ7LMMBNImYJTJ5z9oIl2LBLjUqJQbAUT7qeDpV/YARmxrAc1HgUGaetNf0akJOlYTkyANPGDxX3mWjrOBRmKvDjS3pwmUSC1uK0hk+xUSJ2UgjMZ7gaYYl7/fKNSD5SilqFF/zGRSB4uCcLOqXI3rkaL31camPLVouyYv0ybcHjQ2F5bLAJn2BECv3+BSiRmkrXwl58wjoka2r05WAn/C3hP1xPy3fXxS3bXN+Ug9oRW1rdrifkCP+nXBiCnj9te27QzYxyXAn9wOzv8BufqmUPe8tvrJ5V7nLZvfeEUKHCxg4MBE/gXTA1yD5lJUNf1mDLi8uxKa0YlTeU8A6IQKR/XzSVHsSml9chvcrS0cuO132r8dwalgxKWYj2GorgiCD4KiqRw4/7FDta7l6hiOY9atAgv9jC85UXIJsnjjFTEdlGz1JJyhKs2r4fuRW30G9gACIjAuDtoUP1Kf1rcujlIG0pkl9iyZW9n9XsLA6MiEDgYCV7P1lFZs0SvMbHCJiozUlC/IsJSDtVhSYPlfA7o5RNKElLwIo3DqPS4kfAKi3sb67aqUYJe7MHDA9C5Dgf9LqoYc/1CpILLX8CWhY0l77Mn5MdG56G90iLkuxdWPUH9h5dFn/QFMWTNnk8ESA5qNRwkyL1c4Yb/3vt0ZF4IozxmMIbfzrksgRs8Ui6dBzprNKmGD8Z421OWvYxT9D1LBjw/MxbIw/pd1mmwJBHVyDpzx9i99ZEbHwpHivXb0NK4jz4s8xen/EZsm0KCDW4ICRYFUb52T49hwfiYaP5vQ4XLpo/UZNmP1JvTMbq7R9h38fsti5G6Pp0RXcaOj4iSrujAC2Xr6OHhwLK50LFvZ2j/eVvwOkv+YhtH8SG381evuGT4c/uq3k3lX5Xa801SEtkrdarCvhNX4XdO7ch6dV4LHk1ETt2JmJJOAvGrDUsRZu3B+sPVUE3MAQL3+HH/gasXLwCG7d+gPfXPwmVOgv54s+2TYmwqAhhK7ewWLJCW3byOKsSAJHREW1XXr1CELduG/btZq8ncRWWLF6FpPe3YXUMqzjzy0GHHDS6nbWcMxMSWAVAicjFiUjZnojVi+OxOpHFg63xiByoQ1nKe60rCJcO4u0dhahXDMW0Vz8w+50w1gDIlvwItMhPflOoQHmFPIuE3R8gaf0KLHlpA5K2b8PGJ1XIzioUf9bE5Sy8tZm1ZvpHYMnWD7HD8B5t/xBJi9n7y96j5PekWzsUT6xz8+6L+96eYjag1PRmTOr/jW/87/G/a68Ox0OfSEzj8+7PHEa25NU8HfL/cpBVRG1oyHaAWYKuL9aghN37TjK0RqxQRWHh3CCzgVwYHIPHhZhTjnMVlqrAxm5BJ3QteaJvb2GHzRRW3pncPGDJ6tkIdFDtxqnoWsSNjrm+mbdFWU14+kPoHduJk/3bW/6aXKEWiyFRCDZuXaqCMJ4Xv/E48iTmNOpOH0QaO/EUEc9jzewAKN3F/+DcVYhcuBZzJV8+a5Uf4N1aPvjNyqWINmnRKofPwH8ti2Knre0UQaGI5MexpvWlGkFzOfJyWHpWRCAsqO0wEDhzKWJHsmTcihKBU6fCj23pzpSJU9HkpTvNktdZHXyf/COWRJj0vqgiMH92CNsoNxp4YwhwCkTG/xFzA0zeMfY7/NzllSwzNcfxqYbFlYFTsfyFKPi2+uyU8Jv5MiuD1HvFnvPAXpTp+GfHKg0mxfSOmIe5QjEPI1ciKFM8sc592ABxS17t+rsdjoeeGB8TwY5OVpH/i8QYp3oNMvlltSEzbGjItp9b65PV0Brhfept9KW1wWeoPrrV1tvc2Sc7RVQUwuyJlF2ZQp7xfjc+L4Xu638J28rnw4T7TtHO8hvmPvubVShVCJvEu8ek5jTqcDqPJ1kFoh8JkU6mLEmH/kLiutKlAmTy4D1yMiItzDZTPhyKcHHbJh4hiI4SMrR5N7fYva2MmYwwD3Ffewz2wyh+f7neAddNDe/nSMRaiBtK/0Ah2daWVQq9AT+OG1BEITrEwkk6mL2PEh/Bj5/59Bj4GyfnHykRNl7fK9GK4TktfnZK+AfwuFWHc5Xm18wpnljXUv29uCWvdv1dGeKhYuxkxPZnR7fElKvqnMOsIatA8K8j227IdoBbvnFNsY4FA94aGROBsXbUEnX1VSjRZOHTlD3C4JSlLy7CCr5Eot107a/4uPcSN+7y8+k+ayz28OxI9G6t6d2TaHw9G9ce2yvucbx2ld8w95klhvHjzD9rr6AIYTSmLs+0ZVqH6vP8PgCjeLPSEjfzVpiuukbo/lSO9rPcvemusLvLKzBislBRMO3mLtEcZQlNPzrdZs06VJcXI/uLPUjelYBVy5cjfgFfetRRqnBOGKxWjuQX9QOqzG4v7tFfamjSQrg6eKVa/zjAH8Mkk6yeeQ8Ze201/DNXYtQIK+e3xGeHS2UQvjSxfA+WSpWR3YSlXZmmpibh3hjFE+uaL30vrK3Nl++0djMm9f/GN/73+N+1lyzx0J1VOGfy885kyhWPO4fY4/6T8fgvTXur5OV2vODuE1fnHWUnjQKRrGlvU36+WozUNfOFVb82bN+DtAw1TvNzRxWM8Q/ZU9X0ha/QTVCFCxZHhUipEQMDO1n9zN+oYd3ohHJ7oJ+41XG3si/ghz1FGHDwKXifX2Z2G7D/t+JPyqdd5TcMnrKUGBbvEi7XmM+JZq1IYSCQCl52zl28Vq+/Ouk7UOYTc2QoonlZjLu5bxQiW83OB5u70bSozEjC0gXzsWJtAnZ+koXML3mLVQm/XwY5sKZvuESlgNdg/ap/Fm+DFBCq0tfq9dd5VV5CxcR27LMTftEH3vZ+BD/c0rfePTyly2Z0G+BhXuGneNI2/sUXfG1tSzcpUj9nuLX3izTkiofeUdOEy0/CWBZxVkF9zmdIZ8e77/QoCz048nGrPVEgdBfxZFd0giVr3uU01ob6Px9ksykB6ez983t0BRL+9CH2fawfLMYH2zxmNGCnbZ4IHKM/+HNZgDLvXLKgpgi5PNAqWIt/mH5Xd+U2Qt7rP3wpT8XD0kvjKMY+IOtSn5z95dch/xhvXbLyeEkHWeHmpT+WpedEa9HUzrEkDXKvssRq69FT+Dlwt5tb900B8tmmefe9ND547bWUQlwTBoolIiXlI3Gw2AasfHaq0JvgMMLbHIq4N/Wr/lm8vRDVuvKv1bbqMbBdO3rbWDAVijnuGSRIlc3otizKsS0jZyd3POlsspXfIwRTWk25qkHuYTsuA/fpZWcFtDU3XFZD6OZmyY6PVlPGRCLQllrBBTUO8d+LeB6vz2W1c2XrpK7TNohbtvEdP1U/IKRwLw7Y1DuuRdEhPsjEjjK7MPcxXXs8qd3lN1xPRBAWvSUdZIXb5uf1A7BazYlWwVfoMS5DtZVv0mu4atStJfL20feJ19aIU22kNIqtQzv5hscIiVjfza3D6YIC9m8AosNtablpcVrNrwOrMHMFHyimgsL4nLjBKiPipvx84Tuc3xfhXOseTMt+4qs/389XW3mvGlBrNuWJfXbCR2C9t03bYD6rgz+n8KtnylAp7CCWdLt4YoX/JKMpV2fVOMCOcZunVnmy41XclMQaupVW8p2bAnXg3dz6gRc+eHySjde6DN1FSqX59Tb2pPknJU4Qa1RR+M8pvNbagPQkPv1Fv9uS2ox3kKhmJWCt50WP23F9zkW5hzlyqILj2Vt+w9xnRExEmLVuao8ghIXzI9R4TrQKw0bzem0dDh21MFdfW4xsfnyZ8vNHML/XpFucQlibc5SlqnbwCUY075jg3dz1+gqI7XMsm6C/bCo9E0JbzFrj4rb8PBE4jrcmtMjMKNTHhbao/DCKf26XDyPzjHSi1RYfFy9htDbMX5g4zloyaunk3lyH7KMSX5c6MABCxw9vDeXZVMpuq7vFE6t+nHJ1HB8c5FMe7Zha1d9LP1alvARlEoecrrQIeeK2FDc+Sq224Cg7SVi0MZ2qYo2h6Z6naf0VlM0NyN/5JtIu21R8IwoEzlmLuIfY713VYMvy1UjWVKHeZDUhvnJZ+rvLhUFoOhYYYl+a131GVlrRc+JQ9DDpxegqeLl5+W1nmG0ARIYEtXGiKBA2ST8Ay/g6kn/MLGGuvjbrPWxTm7SUG6uQlpCEnBsSf7l/KKYLFclypG7ZhxKTBFKr2YG1n1TZdvKa8UHkVD7ynJ1TaSUsobKyh7b1+gz6oq8wXbQcOXmtX4+24iDe2lkgPnIM30mzhJ4KneY9vJUmsZpafTky3z2oHxMgGInYJ0ey18aS+s73kG3yEQhl3qKBTuLFK0OmInYg2yjfiy37Sls/F0vOuTvX4ZMqqXfNB9GP86kzrDW04x2kSaxuVl+ehS1pDpor3oV0r3jSFk+MnxbDYkg5iorZMTPmKUy3dWqVhz8Che8xL0TqJ8Wtj9UaNbbtVEse4wbuG54f+9/ZhWdx/t9A4G+fw3Q/idFv2gpk/7UYVwcG49Ho4SwUMAN/gj4lx1BUU4HcjAycKLmE8yf2ITllP3Ib/wNzpzSjqPQqBgVNQfRIGyeau/XFiPGhGFRTjK//WYOygmNIT0vDF8dycPxvGdi/LxWfHsnB19VatLC3K+yFtxA/zrz5VFeUhr9XgP2txzHWAd8w4qya/3EFLaV29lxY4D7kPvR5wvJVSz4dS65pFYrHRkMxw47JhDXHsD31GzQiAk8uDIdvT3G/JQP6oDGLJefGaijH/Bo/u5/t6zscgfdfxMnCCzj/VRa+OJqD/LMV+OoIO4b/9xBKBvwOy2O/R+7XV4HhE/DkWEM3szu8/UfhxtcafFt1Fn8/dAh/yy1FZXkOPt6TjM9P1OORV+ZhWE4hzmMgxv5qIkbYsc6Ch1cLvj18CvkVFWjp/yv8fkEQBknMGDE/xhV4YEAjsk9UoOYb9nqOncK5ylNI37sH+w6VwvuZp/CzU8WsTMPxyBPBti2wUVuMz3PYk9ScwQl1Fv7KznOzW/0IPPowy5YKHzw8ohEn88px8Ztj+OLIMZz4pgoXCw4i5eNUpBxgsaLWB488dve5+w4NhPfFk8g/fwFfHT2EIycK8O35u2X2mrsUUxo14B9Bq3O5pwoP/8wD36iLUfFtjvBcX5VX6T+7j9KQ+/0E/PEZP/y9gJVdFYwZUcNhiGqKIYEY1ZSHL89dwpnsQ0JsKam8iC//koqPWTk/zypG7YMTMDPo7mUFiify8WAxhccWg2YWQ3gskZPd8URk7XN2H+yNnvlZ+Pp7BSLnPI9HfEyvqWpx/ngGiq6anvMeGMZy6lfqb/Cvcg2OZPE4cwYn9+/FrrRCeMwyHOOmv1eHogM5cPP/xUR9S5gFu9hwewZGqBD76iasnBkEXw8daks1wvKCvtErkLB5NoLb26p1Z7XcFxKxO3EV4qIDhEE+uvo61F6ug9bdE94BQQhW8SqHFvnvvootGay2rv/Nbk8x66fiVse19WUYcn5Zhr3lrj6lFsYeKFhlbqwtsyncRyKcf7EKb60ZzYn2Hr8Um9c/i+gA/vWldag8pUHJVRXC4zbg/Vdj4GNpKqVyJOau3yIc+35erNV1uRS5BZVQDJ+KlVu3IW6MTX3S0n5c+pOVb4p9o0QVAfPE18PO4/oqFGlKUds7mJV1G1abrqhijxv8WrD+HDS7ae8udqkcMw989TLhvFVohZjALytcZ8k7eGY8Ev5nXuuBanxBmGVvY+PCKASyc1pXpy9zvSoUcazMr0/xsdh7oBgyFa+z55obMRT8W+2Ez65OgVHTVyBpK3seQ739QR+TGSlKBD6diHdfnaf/3JvqUKJRo+hiE3r5BGHm4k14f077lpd0NXLGk87kmHKLvVv9J2OKLYOojbFjdc1rxnGmGOdu+iL2pU1Wj3GuR1Njwx1xu+vg3Vi7N+IDdZ0QbBVjZuP1xVPhZ+1aZDfRGLobLd9aGflkB17TdfO9W9s1aP5nA1q+k7g42A5uo+9H/4IF4iNCZFK8C7PfVgMxq7AvjhJue8kZTzi+tjZfvtPg+1cyZG1Bu1o86ZoJWlSftwtrd6hRK2TpoYhd9jLigrr39IhbHxbhh6UZ4iPn1ydpCnrNF4ZdESKbsn2L8NohLfzjWEucr0NO2sUR8YSvrc2X72y+cA0ttfLOLXC1eNKlEzSRdj0iuUt8nyufCtFPEyc+IkQm2kJsez4JuboALNy+CtEduOJAKJ7cSx1fsJQ4nd5rJohbzq2rlJM4m1Kkvb0fRZclpmfVFSN5w3ssOQNeU2Y47GsAuxOKJ/cOtaBd1A/LMnFrl7DysFPq9exY9NkSKz4ixB6lSJ6jX1tc0V+FAYYBqTfrUVuvT9peIfFY90IEvLv5AkZyoXhyb1CCdmHXo1LQfOo78ZHzcB/3APqpnxYfEWI/7SUNMg6qcby07MekzNfY9guIRHRsDGLFpYOJfCiedD5K0C6s5ey/cf1Xe3HnivNMROtxvxL9/voU3B4aJO4hhHQFFE86H12DdmH8oFWmPuY0KwLxcvDyUHImpOuheNL5KEG7uJ6RD0J5YJZQ07yX+PPzcvDyEEK6JoonnYu6uLsJ3j2lXZh+T64h8WtEyp3TqOVMiIugeNI5KEF3M509GpNGaxPiuiieOBYl6G5Id6QcN9efcOjiA3zRAD4vUfEofRUoIa6M4onjUILuxvgyfjd3fCXrWrt8Ldze8T+n5TsJ6WYonsiPEjQRasC6z/6B2+lluKOVWJ2pDcL3r07zF75FhlrMhHRvFE/kQwmatHL7eBWa86uF7qqW89fQ8t113Gm4wc66FkDhhh6eHnB7oB/cRgwQup3cw3xl/nJ0QoiroHjSMZSgCSGEECdE86AJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHFClKAJIYQQJ0QJmhBCCHE6wP8De/Jhar/OivYAAAAASUVORK5CYII="}}]); \ No newline at end of file diff --git a/assets/js/4f031749.2517414e.js b/assets/js/4f031749.2517414e.js new file mode 100644 index 000000000000..7d6ca9aadc78 --- /dev/null +++ b/assets/js/4f031749.2517414e.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[2008],{35703:(e,t,o)=>{"use strict";o.d(t,{Z:()=>n});var a=o(67294);const n=function(e){var t,o=e.message,n=(0,a.useState)(!0),s=n[0],i=n[1];return a.createElement(a.Fragment,null,s&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>u});var a=o(74165),n=o(15861),s=o(67294),i=o(87152),r=o(9712),l=o(67425);function p(e,t,o){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,a.Z)().mark((function e(t,o,n){var s,l,p,d,c;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return s="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return s="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return s="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return s="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==s){e.next=18;break}return e.abrupt("return");case 18:return p=new i.U(s),e.next=21,r.G.create({provider:p});case 21:d=e.sent,(c=o.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+o);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,o,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,o,a);break;case"precise":(0,l.Precise)(e,o,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,o);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,i=e.defaultValue,r=e.filter,l=void 0===r?void 0:r,d=(0,s.useState)(""),u=d[0],k=d[1];return t=t.toLowerCase(),(0,s.useEffect)((function(){void 0!==l?c(i.toString(),l,t,k):k(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;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,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,o,k);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?c(n,l,t,k):k(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{s()}catch(r){console.log(r)}}}),[]),u}},67425:e=>{var t="polkadot",o="kusama",a="statemine",n="statemint",s={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,r){var l=void 0;if(i===t||i===n)l=3;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),r((e=Number.isInteger(e/s[i].precision)?e/s[i].precision+" "+s[i].symbol:(e/s[i].precision).toFixed(l)+" "+s[i].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/s[t].precision+" "+s[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,s,i){var r=void 0;if(i===t||i===n)r=1;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}s((e/=r).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())}}},44002:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>g,frontMatter:()=>p,metadata:()=>c,toc:()=>k});var a=o(87462),n=o(63366),s=(o(67294),o(3905)),i=o(47940),r=o(35703),l=["components"],p={id:"learn-guides-staking-pools",title:"Polkadot-JS Guides for Pool Creators",sidebar_label:"Nomination Pool Guides",description:"Polkadot-JS Guides about Nomination Pools.",keyword:["stake","staking","pools","create","destroy","claim","rewards","polkadot-js"],slug:"../learn-guides-staking-pools"},d=void 0,c={unversionedId:"learn/learn-guides-staking-pools",id:"learn/learn-guides-staking-pools",title:"Polkadot-JS Guides for Pool Creators",description:"Polkadot-JS Guides about Nomination Pools.",source:"@site/../docs/learn/learn-guides-staking-pools.md",sourceDirName:"learn",slug:"/learn-guides-staking-pools",permalink:"/docs/learn-guides-staking-pools",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-staking-pools.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-staking-pools",title:"Polkadot-JS Guides for Pool Creators",sidebar_label:"Nomination Pool Guides",description:"Polkadot-JS Guides about Nomination Pools.",keyword:["stake","staking","pools","create","destroy","claim","rewards","polkadot-js"],slug:"../learn-guides-staking-pools"},sidebar:"docs",previous:{title:"Nominator Guides",permalink:"/docs/learn-guides-nominator"},next:{title:"OpenGov Guides",permalink:"/docs/learn-guides-polkadot-opengov"}},u={},k=[{value:"Pool Creation with Polkadot-JS",id:"pool-creation-with-polkadot-js",level:2},{value:"Pool Upkeep with Polkadot-JS",id:"pool-upkeep-with-polkadot-js",level:2},{value:"Pool Destruction with Polkadot-JS",id:"pool-destruction-with-polkadot-js",level:2},{value:"Claim Rewards for Other Pool Members with Polkadot-JS",id:"claim-rewards-for-other-pool-members-with-polkadot-js",level:2}],m={toc:k},h="wrapper";function g(e){var t=e.components,p=(0,n.Z)(e,l);return(0,s.kt)(h,(0,a.Z)({},m,p,{components:t,mdxType:"MDXLayout"}),(0,s.kt)(r.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,s.kt)("p",null,"See ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"this page")," to learn about nomination pools."),(0,s.kt)("h2",{id:"pool-creation-with-polkadot-js"},"Pool Creation with Polkadot-JS"),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"You easily create a pool using the\n",(0,s.kt)("a",{parentName:"p",href:"/docs/staking-dashboard#pools"},"Polkadot Staking Dashboard"),". See\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182388-staking-dashboard-how-to-create-a-nomination-pool#How-to-create-a-pool"},"this support article"),"\nfor more information.")),(0,s.kt)("p",null,"The depositor calls the ",(0,s.kt)("inlineCode",{parentName:"p"},"create")," extrinsic, setting the administrative roles and transferring some\nfunds to the pool to add themselves as the first member. As stated above, the depositor must always\nbe a member as long as the pool exists; they will be the last member to leave, ensuring they always\nhave some skin in the game. A significant stake from the depositor is always a good indicator of the\npool's credibility."),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"The current minimum bond to create a pool on"),"\n",(0,s.kt)("strong",{parentName:"p"},"Polkadot"),"","\n",(0,s.kt)("strong",{parentName:"p"},"is ",(0,s.kt)(i.Z,{network:"polkadot",path:"query.nominationPools.minCreateBond",defaultValue:5e12,filter:"humanReadable",mdxType:"RPC"}),"."),"\n",""),(0,s.kt)("p",null,"The pool\u2019s \u2018nominator role\u2019 selects validators with the nominate extrinsic. On Polkadot JS Apps UI,\nnavigate to Network > Staking > Pools and click on Add Pool button."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Create Nomination Pools",src:o(85209).Z,width:"1412",height:"638"})),(0,s.kt)("p",null,"The UI automatically assigns an ID to the pool and allows for entering the name of the pools and the\ndeposit to be bonded."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Create Nomination Pools - deposit",src:o(58732).Z,width:"1164",height:"458"})),(0,s.kt)("p",null,"When creating a pool using Polkadot JS Apps UI, all the roles are mapped to the Depositor account by\ndefault. If any of these roles need to be assigned to a different account, create the pool using\n",(0,s.kt)("inlineCode",{parentName:"p"},"create")," extrinsic available in\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics > nominationPools")," on Polkadot JS\nApps UI."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Nomination Pool Roles",src:o(12920).Z,width:"1426",height:"558"})),(0,s.kt)("h2",{id:"pool-upkeep-with-polkadot-js"},"Pool Upkeep with Polkadot-JS"),(0,s.kt)("p",null,"The nominator can update the pool\u2019s validator selection. On Polkadot JS Apps UI, navigate to\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/actions"},"Network > Staking > Accounts page")," and click on\nPooled button. If you have any pooled accounts with the role of nominator, you will notice the\noption to set nominees. Select the validators to nominate like you would normally using a nominator\naccount."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Nominate validators",src:o(22455).Z,width:"1810",height:"786"})),(0,s.kt)("p",null,"The root and bouncer can update the pool\u2019s state to blocked through ",(0,s.kt)("inlineCode",{parentName:"p"},"setState")," extrinsic and kick\nmembers by calling ",(0,s.kt)("inlineCode",{parentName:"p"},"unbond")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"withdrawUnbonded"),". (The state can also be toggled back to open)."),(0,s.kt)("h2",{id:"pool-destruction-with-polkadot-js"},"Pool Destruction with Polkadot-JS"),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"As a pool admin, you can easily destroy a pool and permissionlessly remove all members using the\n",(0,s.kt)("a",{parentName:"p",href:"/docs/staking-dashboard#pools"},"Polkadot Staking Dashboard"),". See\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182388-staking-dashboard-how-to-create-a-nomination-pool#How-to-destroy-a-pool"},"this support article"),"\nfor more information.")),(0,s.kt)("p",null,"A pool can be pushed into the \u201cdestroying\u201d state via one of:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"The root and bouncer set the pool to \u201cdestroying\u201d. This can be done by submitting the\n",(0,s.kt)("inlineCode",{parentName:"li"},"nominationPools.setState(poolId, state)")," extrinsic using the\n",(0,s.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/extrinsics"},"Polkadot-JS UI extrinsic tab"),". Where ",(0,s.kt)("inlineCode",{parentName:"li"},"poolId")," is the\nspecific ID of the pool and ",(0,s.kt)("inlineCode",{parentName:"li"},"state"),' is the pool\'s state that must be set to "destroying". Other\npossible states are "open" and "blocked".'),(0,s.kt)("li",{parentName:"ul"},"Any account can set the pool to destroying if over 90% of the pool's active bonded balance has\nbeen slashed.")),(0,s.kt)("p",null,"When a pool is in \u2018destroying\u2019 state, ",(0,s.kt)("inlineCode",{parentName:"p"},"unbond")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"withdrawUnbonded")," become permissionless, so\nanyone can help all the members exit."),(0,s.kt)("p",null,"The pool is destroyed once the depositor withdraws, no members belong to the pool, and all the\npool\u2019s resources are wiped from the state."),(0,s.kt)("h2",{id:"claim-rewards-for-other-pool-members-with-polkadot-js"},"Claim Rewards for Other Pool Members with Polkadot-JS"),(0,s.kt)("p",null,"As a pool member you can claim rewards for any other members who set their\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools#claim-permissions"},"claim permissions")," to one of the ",(0,s.kt)("em",{parentName:"p"},"permissionless"),"\noptions."),(0,s.kt)("p",null,"Let's take the example of ALICE setting the claim permissions to ",(0,s.kt)("inlineCode",{parentName:"p"},"PermissionlessAll"),". Another\naccount STASH can now claim ALICE's rewards (as a free balance or compound them to the existing\nbonded balance). To do so, STASH can go to the\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Polkadot-JS UI Extrinsic Tab")," and issue the following\nextrisics:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"nominationPools.claimPayoutOthers")," extrinsic specifying ALICE's account. This will claim the\nrewards as a free balance on ALICE's account.")),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"pools-payoutOthers",src:o(51546).Z,width:"1499",height:"458"})),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"nominationPools.bondExtraOthers")," extrinsic specifying ALICE's account and the option to bond:",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"the free balance currently available in ALICE's account (",(0,s.kt)("inlineCode",{parentName:"li"},"FreeBalance"),") or"),(0,s.kt)("li",{parentName:"ul"},"the pool rewards (",(0,s.kt)("inlineCode",{parentName:"li"},"Rewards"),") unclaimed by ALICE.")))),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"pools-bondExtraOthers",src:o(63547).Z,width:"1496",height:"643"})))}g.isMDXComponent=!0},63547:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/nomination-pools-bondExtraOthers-d4492df464bbc1cd2c04be211a78eb46.png"},51546:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/nomination-pools-payoutOthers-bfe1ad190e494f39c2c74d65e7edd12c.png"},85209:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-1-98ee6b5592f6851aa57c9d427d70598f.png"},58732:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-2-84da587a4d7591f2e2f79a4054214984.png"},22455:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-5-9b16b01bde4e095d3c8fa71aa9a9a6ca.png"},12920:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-7-74928d7825f19208592498e7b12dee5c.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/4f031749.5b898f01.js b/assets/js/4f031749.5b898f01.js deleted file mode 100644 index 7ad27e6b0a8a..000000000000 --- a/assets/js/4f031749.5b898f01.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[2008],{47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>u});var a=o(74165),n=o(15861),s=o(67294),i=o(87152),r=o(9712),l=o(67425);function p(e,t,o){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,a.Z)().mark((function e(t,o,n){var s,l,p,d,c;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return s="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return s="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return s="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return s="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==s){e.next=18;break}return e.abrupt("return");case 18:return p=new i.U(s),e.next=21,r.G.create({provider:p});case 21:d=e.sent,(c=o.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+o);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,o,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,o,a);break;case"precise":(0,l.Precise)(e,o,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,o);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,i=e.defaultValue,r=e.filter,l=void 0===r?void 0:r,d=(0,s.useState)(""),u=d[0],k=d[1];return t=t.toLowerCase(),(0,s.useEffect)((function(){void 0!==l?c(i.toString(),l,t,k):k(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;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,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,o,k);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?c(n,l,t,k):k(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{s()}catch(r){console.log(r)}}}),[]),u}},67425:e=>{var t="polkadot",o="kusama",a="statemine",n="statemint",s={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,r){var l=void 0;if(i===t||i===n)l=3;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),r((e=Number.isInteger(e/s[i].precision)?e/s[i].precision+" "+s[i].symbol:(e/s[i].precision).toFixed(l)+" "+s[i].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/s[t].precision+" "+s[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,s,i){var r=void 0;if(i===t||i===n)r=1;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}s((e/=r).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())}}},44002:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>p,default:()=>h,frontMatter:()=>l,metadata:()=>d,toc:()=>u});var a=o(87462),n=o(63366),s=(o(67294),o(3905)),i=o(47940),r=["components"],l={id:"learn-guides-staking-pools",title:"Polkadot-JS Guides for Pool Creators",sidebar_label:"Nomination Pool Guides",description:"Polkadot-JS Guides about Nomination Pools.",keyword:["stake","staking","pools","create","destroy","claim","rewards","polkadot-js"],slug:"../learn-guides-staking-pools"},p=void 0,d={unversionedId:"learn/learn-guides-staking-pools",id:"learn/learn-guides-staking-pools",title:"Polkadot-JS Guides for Pool Creators",description:"Polkadot-JS Guides about Nomination Pools.",source:"@site/../docs/learn/learn-guides-staking-pools.md",sourceDirName:"learn",slug:"/learn-guides-staking-pools",permalink:"/docs/learn-guides-staking-pools",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-staking-pools.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-staking-pools",title:"Polkadot-JS Guides for Pool Creators",sidebar_label:"Nomination Pool Guides",description:"Polkadot-JS Guides about Nomination Pools.",keyword:["stake","staking","pools","create","destroy","claim","rewards","polkadot-js"],slug:"../learn-guides-staking-pools"},sidebar:"docs",previous:{title:"Nominator Guides",permalink:"/docs/learn-guides-nominator"},next:{title:"OpenGov Guides",permalink:"/docs/learn-guides-polkadot-opengov"}},c={},u=[{value:"Pool Creation with Polkadot-JS",id:"pool-creation-with-polkadot-js",level:2},{value:"Pool Upkeep with Polkadot-JS",id:"pool-upkeep-with-polkadot-js",level:2},{value:"Pool Destruction with Polkadot-JS",id:"pool-destruction-with-polkadot-js",level:2},{value:"Claim Rewards for Other Pool Members with Polkadot-JS",id:"claim-rewards-for-other-pool-members-with-polkadot-js",level:2}],k={toc:u},m="wrapper";function h(e){var t=e.components,l=(0,n.Z)(e,r);return(0,s.kt)(m,(0,a.Z)({},k,l,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("div",{className:"sticky",style:{zIndex:1}},(0,s.kt)("br",null),(0,s.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,s.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,s.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,s.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,s.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,s.kt)("p",null,"See ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"this page")," to learn about nomination pools."),(0,s.kt)("h2",{id:"pool-creation-with-polkadot-js"},"Pool Creation with Polkadot-JS"),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"You easily create a pool using the\n",(0,s.kt)("a",{parentName:"p",href:"/docs/staking-dashboard#pools"},"Polkadot Staking Dashboard"),". See\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182388-staking-dashboard-how-to-create-a-nomination-pool#How-to-create-a-pool"},"this support article"),"\nfor more information.")),(0,s.kt)("p",null,"The depositor calls the ",(0,s.kt)("inlineCode",{parentName:"p"},"create")," extrinsic, setting the administrative roles and transferring some\nfunds to the pool to add themselves as the first member. As stated above, the depositor must always\nbe a member as long as the pool exists; they will be the last member to leave, ensuring they always\nhave some skin in the game. A significant stake from the depositor is always a good indicator of the\npool's credibility."),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"The current minimum bond to create a pool on"),"\n",(0,s.kt)("strong",{parentName:"p"},"Polkadot"),"","\n",(0,s.kt)("strong",{parentName:"p"},"is ",(0,s.kt)(i.Z,{network:"polkadot",path:"query.nominationPools.minCreateBond",defaultValue:5e12,filter:"humanReadable",mdxType:"RPC"}),"."),"\n",""),(0,s.kt)("p",null,"The pool\u2019s \u2018nominator role\u2019 selects validators with the nominate extrinsic. On Polkadot JS Apps UI,\nnavigate to Network > Staking > Pools and click on Add Pool button."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Create Nomination Pools",src:o(85209).Z,width:"1412",height:"638"})),(0,s.kt)("p",null,"The UI automatically assigns an ID to the pool and allows for entering the name of the pools and the\ndeposit to be bonded."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Create Nomination Pools - deposit",src:o(58732).Z,width:"1164",height:"458"})),(0,s.kt)("p",null,"When creating a pool using Polkadot JS Apps UI, all the roles are mapped to the Depositor account by\ndefault. If any of these roles need to be assigned to a different account, create the pool using\n",(0,s.kt)("inlineCode",{parentName:"p"},"create")," extrinsic available in\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics > nominationPools")," on Polkadot JS\nApps UI."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Nomination Pool Roles",src:o(12920).Z,width:"1426",height:"558"})),(0,s.kt)("h2",{id:"pool-upkeep-with-polkadot-js"},"Pool Upkeep with Polkadot-JS"),(0,s.kt)("p",null,"The nominator can update the pool\u2019s validator selection. On Polkadot JS Apps UI, navigate to\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/actions"},"Network > Staking > Accounts page")," and click on\nPooled button. If you have any pooled accounts with the role of nominator, you will notice the\noption to set nominees. Select the validators to nominate like you would normally using a nominator\naccount."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Nominate validators",src:o(22455).Z,width:"1810",height:"786"})),(0,s.kt)("p",null,"The root and bouncer can update the pool\u2019s state to blocked through ",(0,s.kt)("inlineCode",{parentName:"p"},"setState")," extrinsic and kick\nmembers by calling ",(0,s.kt)("inlineCode",{parentName:"p"},"unbond")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"withdrawUnbonded"),". (The state can also be toggled back to open)."),(0,s.kt)("h2",{id:"pool-destruction-with-polkadot-js"},"Pool Destruction with Polkadot-JS"),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},"As a pool admin, you can easily destroy a pool and permissionlessly remove all members using the\n",(0,s.kt)("a",{parentName:"p",href:"/docs/staking-dashboard#pools"},"Polkadot Staking Dashboard"),". See\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182388-staking-dashboard-how-to-create-a-nomination-pool#How-to-destroy-a-pool"},"this support article"),"\nfor more information.")),(0,s.kt)("p",null,"A pool can be pushed into the \u201cdestroying\u201d state via one of:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"The root and bouncer set the pool to \u201cdestroying\u201d. This can be done by submitting the\n",(0,s.kt)("inlineCode",{parentName:"li"},"nominationPools.setState(poolId, state)")," extrinsic using the\n",(0,s.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/extrinsics"},"Polkadot-JS UI extrinsic tab"),". Where ",(0,s.kt)("inlineCode",{parentName:"li"},"poolId")," is the\nspecific ID of the pool and ",(0,s.kt)("inlineCode",{parentName:"li"},"state"),' is the pool\'s state that must be set to "destroying". Other\npossible states are "open" and "blocked".'),(0,s.kt)("li",{parentName:"ul"},"Any account can set the pool to destroying if over 90% of the pool's active bonded balance has\nbeen slashed.")),(0,s.kt)("p",null,"When a pool is in \u2018destroying\u2019 state, ",(0,s.kt)("inlineCode",{parentName:"p"},"unbond")," and ",(0,s.kt)("inlineCode",{parentName:"p"},"withdrawUnbonded")," become permissionless, so\nanyone can help all the members exit."),(0,s.kt)("p",null,"The pool is destroyed once the depositor withdraws, no members belong to the pool, and all the\npool\u2019s resources are wiped from the state."),(0,s.kt)("h2",{id:"claim-rewards-for-other-pool-members-with-polkadot-js"},"Claim Rewards for Other Pool Members with Polkadot-JS"),(0,s.kt)("p",null,"As a pool member you can claim rewards for any other members who set their\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools#claim-permissions"},"claim permissions")," to one of the ",(0,s.kt)("em",{parentName:"p"},"permissionless"),"\noptions."),(0,s.kt)("p",null,"Let's take the example of ALICE setting the claim permissions to ",(0,s.kt)("inlineCode",{parentName:"p"},"PermissionlessAll"),". Another\naccount STASH can now claim ALICE's rewards (as a free balance or compound them to the existing\nbonded balance). To do so, STASH can go to the\n",(0,s.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Polkadot-JS UI Extrinsic Tab")," and issue the following\nextrisics:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"nominationPools.claimPayoutOthers")," extrinsic specifying ALICE's account. This will claim the\nrewards as a free balance on ALICE's account.")),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"pools-payoutOthers",src:o(51546).Z,width:"1499",height:"458"})),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("inlineCode",{parentName:"li"},"nominationPools.bondExtraOthers")," extrinsic specifying ALICE's account and the option to bond:",(0,s.kt)("ul",{parentName:"li"},(0,s.kt)("li",{parentName:"ul"},"the free balance currently available in ALICE's account (",(0,s.kt)("inlineCode",{parentName:"li"},"FreeBalance"),") or"),(0,s.kt)("li",{parentName:"ul"},"the pool rewards (",(0,s.kt)("inlineCode",{parentName:"li"},"Rewards"),") unclaimed by ALICE.")))),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"pools-bondExtraOthers",src:o(63547).Z,width:"1496",height:"643"})))}h.isMDXComponent=!0},63547:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/nomination-pools-bondExtraOthers-d4492df464bbc1cd2c04be211a78eb46.png"},51546:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/nomination-pools-payoutOthers-bfe1ad190e494f39c2c74d65e7edd12c.png"},85209:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-1-98ee6b5592f6851aa57c9d427d70598f.png"},58732:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-2-84da587a4d7591f2e2f79a4054214984.png"},22455:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-5-9b16b01bde4e095d3c8fa71aa9a9a6ca.png"},12920:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/Nomination-Pools-7-74928d7825f19208592498e7b12dee5c.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/5fee77ad.7fb6adf6.js b/assets/js/5fee77ad.7fb6adf6.js deleted file mode 100644 index ac93059aa913..000000000000 --- a/assets/js/5fee77ad.7fb6adf6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2880],{27328:e=>{e.exports=JSON.parse('{"title":"Bridge Hub Guides","description":"Guides and Tutorials for Trustless Bridges on Bridge Hub","slug":"/learn-guides-bridges","permalink":"/docs/learn-guides-bridges","navigation":{"previous":{"title":"Asset Conversion Tutorials","permalink":"/docs/learn-guides-asset-conversion"},"next":{"title":"DOT <> KSM Bridge","permalink":"/docs/learn-guides-dot-ksm-bridge"}}}')}}]); \ No newline at end of file diff --git a/assets/js/694672cd.43973274.js b/assets/js/694672cd.43973274.js new file mode 100644 index 000000000000..0333ff05b64a --- /dev/null +++ b/assets/js/694672cd.43973274.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8138],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||p[m]||o;return r?n.createElement(f,i(i({ref:t},d),{},{components:r})):n.createElement(f,i({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{r.d(t,{Z:()=>a});var n=r(67294);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),o=a[0],i=a[1];return n.createElement(n.Fragment,null,o&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52991:(e,t,r)=>{r.d(t,{Z:()=>k});var n=r(67294),a=r(86010),o=r(53438),i=r(39960),s=r(13919),l=r(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var t=e.href,r=e.children;return n.createElement(i.Z,{href:t,className:(0,a.Z)("card padding--lg",c.cardContainer)},r)}function u(e){var t=e.href,r=e.icon,o=e.title,i=e.description;return n.createElement(d,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",c.cardTitle),title:o},r," ",o),i&&n.createElement("p",{className:(0,a.Z)("text--truncate",c.cardDescription),title:i},i))}function p(e){var t,r=e.item,a=(0,o.Wl)(r);return a?n.createElement(u,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,i=(0,s.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,o.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(u,{href:a.href,icon:i,title:a.label,description:null!=(r=a.description)?r:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function g(e){var t=e.className,r=(0,o.jA)();return n.createElement(k,{items:r.items,className:t})}function k(e){var t=e.items,r=e.className;if(!t)return n.createElement(g,e);var i=(0,o.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},i.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},29576:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>k,frontMatter:()=>c,metadata:()=>u,toc:()=>m});var n=r(87462),a=r(63366),o=(r(67294),r(3905)),i=r(35703),s=r(52991),l=["components"],c={id:"learn-guides-staking",title:"Polkadot-JS Guides about Staking",sidebar_label:"Staking Guides",description:"Polkadot-JS Guides about Staking.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js","pools"],slug:"../learn-guides-staking"},d=void 0,u={unversionedId:"learn/learn-guides-staking",id:"learn/learn-guides-staking",title:"Polkadot-JS Guides about Staking",description:"Polkadot-JS Guides about Staking.",source:"@site/../docs/learn/learn-guides-staking.md",sourceDirName:"learn",slug:"/learn-guides-staking",permalink:"/docs/learn-guides-staking",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-staking.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-staking",title:"Polkadot-JS Guides about Staking",sidebar_label:"Staking Guides",description:"Polkadot-JS Guides about Staking.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js","pools"],slug:"../learn-guides-staking"},sidebar:"docs",previous:{title:"Transfer Guides",permalink:"/docs/learn-guides-transfers"},next:{title:"Nominator Guides",permalink:"/docs/learn-guides-nominator"}},p={},m=[],f={toc:m},g="wrapper";function k(e){var t=e.components,r=(0,a.Z)(e,l);return(0,o.kt)(g,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)(s.Z,{mdxType:"DocCardList"}))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/694672cd.6da92c0d.js b/assets/js/694672cd.6da92c0d.js deleted file mode 100644 index ff4a651367b0..000000000000 --- a/assets/js/694672cd.6da92c0d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8138],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},d=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(r),m=a,f=u["".concat(l,".").concat(m)]||u[m]||p[m]||i;return r?n.createElement(f,o(o({ref:t},d),{},{components:r})):n.createElement(f,o({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{r.d(t,{Z:()=>k});var n=r(67294),a=r(86010),i=r(53438),o=r(39960),s=r(13919),l=r(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var t=e.href,r=e.children;return n.createElement(o.Z,{href:t,className:(0,a.Z)("card padding--lg",c.cardContainer)},r)}function u(e){var t=e.href,r=e.icon,i=e.title,o=e.description;return n.createElement(d,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",c.cardTitle),title:i},r," ",i),o&&n.createElement("p",{className:(0,a.Z)("text--truncate",c.cardDescription),title:o},o))}function p(e){var t,r=e.item,a=(0,i.Wl)(r);return a?n.createElement(u,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,o=(0,s.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,i.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(u,{href:a.href,icon:o,title:a.label,description:null!=(r=a.description)?r:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function g(e){var t=e.className,r=(0,i.jA)();return n.createElement(k,{items:r.items,className:t})}function k(e){var t=e.items,r=e.className;if(!t)return n.createElement(g,e);var o=(0,i.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},o.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},29576:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>g,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var n=r(87462),a=r(63366),i=(r(67294),r(3905)),o=r(52991),s=["components"],l={id:"learn-guides-staking",title:"Polkadot-JS Guides about Staking",sidebar_label:"Staking Guides",description:"Polkadot-JS Guides about Staking.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js","pools"],slug:"../learn-guides-staking"},c=void 0,d={unversionedId:"learn/learn-guides-staking",id:"learn/learn-guides-staking",title:"Polkadot-JS Guides about Staking",description:"Polkadot-JS Guides about Staking.",source:"@site/../docs/learn/learn-guides-staking.md",sourceDirName:"learn",slug:"/learn-guides-staking",permalink:"/docs/learn-guides-staking",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-staking.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-staking",title:"Polkadot-JS Guides about Staking",sidebar_label:"Staking Guides",description:"Polkadot-JS Guides about Staking.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js","pools"],slug:"../learn-guides-staking"},sidebar:"docs",previous:{title:"Transfer Guides",permalink:"/docs/learn-guides-transfers"},next:{title:"Nominator Guides",permalink:"/docs/learn-guides-nominator"}},u={},p=[],m={toc:p},f="wrapper";function g(e){var t=e.components,r=(0,a.Z)(e,s);return(0,i.kt)(f,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,i.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,i.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,i.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,i.kt)(o.Z,{mdxType:"DocCardList"}))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/73d1b372.62c2b378.js b/assets/js/73d1b372.62c2b378.js new file mode 100644 index 000000000000..e286010d7e94 --- /dev/null +++ b/assets/js/73d1b372.62c2b378.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3576],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>u});var a=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function r(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},h=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var i=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),d=c(i),p=n,u=d["".concat(s,".").concat(p)]||d[p]||m[p]||o;return i?a.createElement(u,r(r({ref:t},h),{},{components:i})):a.createElement(u,r({ref:t},h))}));function u(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=i.length,r=new Array(o);r[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,r[1]=l;for(var c=2;c{i.r(t),i.d(t,{assets:()=>h,contentTitle:()=>s,default:()=>u,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=i(87462),n=i(63366),o=(i(67294),i(3905)),r=["components"],l={id:"learn-agile-coretime",title:"Introduction to Agile Coretime",sidebar_label:"Agile Coretime Intro",description:"Introduction to Agile Coretime and its terminology",keywords:["coretime","blockspace","parathread","parachain","cores"],slug:"../learn-agile-coretime"},s=void 0,c={unversionedId:"learn/learn-agile-coretime",id:"learn/learn-agile-coretime",title:"Introduction to Agile Coretime",description:"Introduction to Agile Coretime and its terminology",source:"@site/../docs/learn/learn-agile-coretime.md",sourceDirName:"learn",slug:"/learn-agile-coretime",permalink:"/docs/learn-agile-coretime",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-agile-coretime.md",tags:[],version:"current",lastUpdatedBy:"Luke Schoen",lastUpdatedAt:1714574276,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-agile-coretime",title:"Introduction to Agile Coretime",sidebar_label:"Agile Coretime Intro",description:"Introduction to Agile Coretime and its terminology",keywords:["coretime","blockspace","parathread","parachain","cores"],slug:"../learn-agile-coretime"},sidebar:"docs",previous:{title:"Agile Coretime",permalink:"/docs/learn-agile-coretime-index"},next:{title:"Coretime Marketplaces",permalink:"/docs/learn-guides-coretime-marketplaces"}},h={},d=[{value:"Agile Coretime Terminology",id:"agile-coretime-terminology",level:2},{value:"Core",id:"core",level:3},{value:"Coretime",id:"coretime",level:3},{value:"Bulk Coretime",id:"bulk-coretime",level:3},{value:"Region",id:"region",level:3},{value:"On-demand Coretime",id:"on-demand-coretime",level:3},{value:"On-demand Coretime Pool",id:"on-demand-coretime-pool",level:3},{value:"Coretime Chain",id:"coretime-chain",level:3},{value:"Timeslice",id:"timeslice",level:3},{value:"Task",id:"task",level:3},{value:"Agile Coretime Implementation",id:"agile-coretime-implementation",level:2},{value:"Coretime Sales",id:"coretime-sales",level:3},{value:"Splitting and Interlacing",id:"splitting-and-interlacing",level:3},{value:"Elastic Scaling",id:"elastic-scaling",level:3},{value:"Agile Coretime FAQ",id:"agile-coretime-faq",level:2},{value:"Roadmap",id:"roadmap",level:3},{value:"Where can we track Agile Coretime Progress",id:"where-can-we-track-agile-coretime-progress",level:4},{value:"Is all of RFC-1 coming at once or in parts?",id:"is-all-of-rfc-1-coming-at-once-or-in-parts",level:4},{value:"What is currently being developed in the ecosystem to support Agile Coretime?",id:"what-is-currently-being-developed-in-the-ecosystem-to-support-agile-coretime",level:4},{value:"Will all the current leaseholder parachains migrate and when?",id:"will-all-the-current-leaseholder-parachains-migrate-and-when",level:4},{value:"When will the auction mechanism be deprecated?",id:"when-will-the-auction-mechanism-be-deprecated",level:4},{value:"Product",id:"product",level:3},{value:"Where will coretime be maintained?",id:"where-will-coretime-be-maintained",level:4},{value:"Is the Broker Chain the same as the Coretime Chain?",id:"is-the-broker-chain-the-same-as-the-coretime-chain",level:4},{value:"Can cores be shared at the same time?",id:"can-cores-be-shared-at-the-same-time",level:4},{value:"What limits are there to the number of cores?",id:"what-limits-are-there-to-the-number-of-cores",level:4},{value:"Is there a UI for the Coretime Chain?",id:"is-there-a-ui-for-the-coretime-chain",level:4},{value:"Coretime Pricing and Purchasing",id:"coretime-pricing-and-purchasing",level:3},{value:"How is the price for bulk coretime calculated?",id:"how-is-the-price-for-bulk-coretime-calculated",level:4},{value:"How do sale periods work on the Coretime Chain?",id:"how-do-sale-periods-work-on-the-coretime-chain",level:4},{value:"How does the pricing mechanism for on-demand coretime work?",id:"how-does-the-pricing-mechanism-for-on-demand-coretime-work",level:4},{value:"Do I need to pay a deposit to register for coretime?",id:"do-i-need-to-pay-a-deposit-to-register-for-coretime",level:4},{value:"How does the price change over time?",id:"how-does-the-price-change-over-time",level:4},{value:"Can the renewal price be different per taskID (Parachain)? Or will each sale cycle have a fix renewal price?",id:"can-the-renewal-price-be-different-per-taskid-parachain-or-will-each-sale-cycle-have-a-fix-renewal-price",level:4},{value:"If purchased in bulk, do you then have \u201cone core\u201d or \u201cone bucket of coretime\u201d that you can use in your own time? Or is there a specific slot?",id:"if-purchased-in-bulk-do-you-then-have-one-core-or-one-bucket-of-coretime-that-you-can-use-in-your-own-time-or-is-there-a-specific-slot",level:4},{value:"What happens to purchased coretime if I don't use it?",id:"what-happens-to-purchased-coretime-if-i-dont-use-it",level:4},{value:"Can I buy coretime in advance and start using it when I'm ready?",id:"can-i-buy-coretime-in-advance-and-start-using-it-when-im-ready",level:4},{value:"Concepts",id:"concepts",level:3},{value:"Is it \u201con-demand coretime\u201d or \u201cInstantaneous coretime\u201d?",id:"is-it-on-demand-coretime-or-instantaneous-coretime",level:4},{value:"What's the correct spelling and its usage?",id:"whats-the-correct-spelling-and-its-usage",level:4},{value:"What\u2019s the connection between blockspace and coretime?",id:"whats-the-connection-between-blockspace-and-coretime",level:4},{value:"Value Proposition",id:"value-proposition",level:3},{value:"What are the benefits of Agile Coretime, and how do the on-demand and bulk models suit different customers?",id:"what-are-the-benefits-of-agile-coretime-and-how-do-the-on-demand-and-bulk-models-suit-different-customers",level:4},{value:"What makes the coretime model on Polkadot competitive?",id:"what-makes-the-coretime-model-on-polkadot-competitive",level:4},{value:"How close do we get to Web2 scale for Web3?",id:"how-close-do-we-get-to-web2-scale-for-web3",level:4},{value:"Implementation",id:"implementation",level:3},{value:"What do I need to do for my parachain to continue working in the switch to coretime?",id:"what-do-i-need-to-do-for-my-parachain-to-continue-working-in-the-switch-to-coretime",level:4},{value:"When does the last auction take place?",id:"when-does-the-last-auction-take-place",level:4},{value:"When and how can I renew my legacy lease?",id:"when-and-how-can-i-renew-my-legacy-lease",level:4},{value:"Will all leases be migrated to Agile Coretime?",id:"will-all-leases-be-migrated-to-agile-coretime",level:4},{value:"Will I be able to still swap my lease with another project?",id:"will-i-be-able-to-still-swap-my-lease-with-another-project",level:4},{value:"My lease is about to end, what do I need to do?",id:"my-lease-is-about-to-end-what-do-i-need-to-do",level:4},{value:"Can any account renew coretime on behalf of a parachain or does this need to be from the parachain sovereign account?",id:"can-any-account-renew-coretime-on-behalf-of-a-parachain-or-does-this-need-to-be-from-the-parachain-sovereign-account",level:4},{value:"How is the coretime price determined in practice?",id:"how-is-the-coretime-price-determined-in-practice",level:4},{value:"How is coretime measured and allocated technically?",id:"how-is-coretime-measured-and-allocated-technically",level:4},{value:"Why are sales of on-demand coretime happening on the Relay Chain?",id:"why-are-sales-of-on-demand-coretime-happening-on-the-relay-chain",level:4},{value:"What's the best way for on-demand tasks (previously known as on-demand parachains or parathreads) to regularly send extrinsics to the Relay Chain for allowing a block to be validate?",id:"whats-the-best-way-for-on-demand-tasks-previously-known-as-on-demand-parachains-or-parathreads-to-regularly-send-extrinsics-to-the-relay-chain-for-allowing-a-block-to-be-validate",level:4},{value:"How many cores will be configured for on-demand coretime?",id:"how-many-cores-will-be-configured-for-on-demand-coretime",level:4},{value:"What happens if my chain runs out of coretime?",id:"what-happens-if-my-chain-runs-out-of-coretime",level:4},{value:"What does splitting and interlacing mean?",id:"what-does-splitting-and-interlacing-mean",level:4}],m={toc:d},p="wrapper";function u(e){var t=e.components,l=(0,n.Z)(e,r);return(0,o.kt)(p,(0,a.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Agile Coretime enables efficient utilization of Polkadot network resources and provides economic\nflexibility for builders, generalizing Polkadot beyond what was initially proposed and envisioned in\nits ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/whitepaper/"},"whitepaper"),"."),(0,o.kt)("p",null,"In Polkadot 1.0, the only way for a parachain to be secured by Polkadot was to rent a lease through\nan ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"auction"),", which guaranteed parachain block validation for up-to two years.\nThis involved locking significant amount of DOT, leading to a high barrier of entry for small and\nmedium scale blockchain projects. The parachains produced blocks at a regular interval of 12\nseconds, irrespective of the network activity. This led to inefficient resource allocation and\nmisplaced economic incentives while producing almost empty blocks under lighter traffic and being\nunable to accommodate heavier traffic when it exceeded block limits. Agile Coretime resolves all of\nthese drawbacks."),(0,o.kt)("p",null,"The figure below shows the core usage for Polkadot 1.0, where the horizontal axis is time, and each\nrow represents a core. Colors show different parachains, each using one core (i.e., one parachain,\none core)."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"core-usage-dumb",src:i(42030).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"Agile Coretime allows for the purchase of ",(0,o.kt)("a",{parentName:"p",href:"#coretime"},"coretime")," in \u201cbulk\u201d with an allocation for one\nmonth. Heavy duty parachains which need to author a block every 12 seconds (or every 6s through\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-async-backing"},"Asynchronous Backing"),"), can seamlessly \u201crenew\u201d the ",(0,o.kt)("a",{parentName:"p",href:"#core"},"core")," each\nmonth. Coretime renewal orders take precedence over new orders and provide protection against price\nfluctuations, allowing parachains to plan their project budget and costs more effectively."),(0,o.kt)("p",null,"The purchased coretime can also be split up and sold in parts, down to a single block per month,\nallowing for secondary markets to thrive and improve the allocation efficiency of coretime.\nFurthermore, Agile Coretime offers ",(0,o.kt)("a",{parentName:"p",href:"#on-demand-coretime"},"on-demand coretime")," functionality that\nenables the authoring of a parachain block on-demand."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"core-usage-agile-rangeSplit",src:i(4544).Z,width:"1920",height:"800"})),(0,o.kt)("admonition",{title:"Agile Coretime is under active development",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The progress of Agile Coretime development can be tracked\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/paritytech/projects/119/views/20"},"here."))),(0,o.kt)("h2",{id:"agile-coretime-terminology"},"Agile Coretime Terminology"),(0,o.kt)("h3",{id:"core"},"Core"),(0,o.kt)("p",null,'The term "Core" captures the virtual abstraction of computational resources provided by the relay\nchain to secure the blocks of a parachain, which involves a randomized set of the relay chain\nvalidators.'),(0,o.kt)("h3",{id:"coretime"},"Coretime"),(0,o.kt)("p",null,"The time allocated for utilizing a core, measured in relay chain blocks."),(0,o.kt)("h3",{id:"bulk-coretime"},"Bulk Coretime"),(0,o.kt)("p",null,"A fixed duration of continuous coretime represented by an NFT that can be split, shared, or resold.\nCurrently, the duration of bulk coretime is set to 28 days."),(0,o.kt)("h3",{id:"region"},"Region"),(0,o.kt)("p",null,"The NFT representing a single unit of bulk coretime."),(0,o.kt)("h3",{id:"on-demand-coretime"},"On-demand Coretime"),(0,o.kt)("p",null,"Previously known as instantaneous coretime, the on-demand coretime refers to coretime acquired\nthrough bidding in near real-time for the validation of a single parachain block on one of the cores\nreserved specifically for on-demand orders."),(0,o.kt)("h3",{id:"on-demand-coretime-pool"},"On-demand Coretime Pool"),(0,o.kt)("p",null,"Set of cores that are available on-demand. Cores reserved through bulk coretime could also be made\navailable in the on-demand coretime pool, in parts or in entirety."),(0,o.kt)("h3",{id:"coretime-chain"},"Coretime Chain"),(0,o.kt)("p",null,"A system parachain that is responsible for the sale, manipulation of bulk coretime and eventually\nthe purchase of on-demand coretime credits. It is also responsible for scheduling the respective\ncores on the relay chain to the parachains."),(0,o.kt)("h3",{id:"timeslice"},"Timeslice"),(0,o.kt)("p",null,"A timeslice represents the granularity the Coretime Chain schedules cores on the Relay Chain. The\nCoretime Chain announces a schedule for each core, comprising the next 80 relay chain blocks in\nadvance. 5,040 timeslices corresponds to the region length of 28 days (which is the initial\nconfiguration set for bulk coretime)."),(0,o.kt)("h3",{id:"task"},"Task"),(0,o.kt)("p",null,'The term "Task" captures the abstraction of utility of the core. Tasks on the cores are not just\nlimited to securing parachains.'),(0,o.kt)("h2",{id:"agile-coretime-implementation"},"Agile Coretime Implementation"),(0,o.kt)("p",null,"Coretime is managed through the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/eefd5fe4499515da66d088505093f75b5aa22550/substrate/frame/broker/src/lib.rs"},"broker pallet"),"\nwhich is deployed on the Coretime Chain. In theory, the Polkadot Relay Chain can support around a\nhundred cores seamlessly and can support over a few hundred cores through optimizations. Preliminary\ntests ran successfully with 80 cores with 12-second block times."),(0,o.kt)("h3",{id:"coretime-sales"},"Coretime Sales"),(0,o.kt)("p",null,"Sales on the Coretime Chain are of ",(0,o.kt)("inlineCode",{parentName:"p"},"timeslice")," length. These sales are divided into two main\nperiods: the Renewal period and the Sale period."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"coretime-sale-timeline",src:i(19908).Z,width:"2000",height:"1015"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Renewal periods are of ",(0,o.kt)("inlineCode",{parentName:"li"},"interlude_length")," blocks long, and it\u2019s where bulk coretime can be\nrenewed."),(0,o.kt)("li",{parentName:"ul"},"Sale periods are as well divided into two periods: a Price Discovery period and a Fixed Price\nperiod. After the Renewal period, a new ",(0,o.kt)("inlineCode",{parentName:"li"},"start_price")," will be set by the Coretime Chain and a\ndutch auction of ",(0,o.kt)("inlineCode",{parentName:"li"},"leading_length")," blocks will start, putting downward pressure on price to find\nthe right equilibrium. This process will set the ",(0,o.kt)("inlineCode",{parentName:"li"},"regular_price")," which will be the one offered at\nthe Fixed Price period.")),(0,o.kt)("p",null,"This discussion on initial coretime pricing can be viewed\n",(0,o.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/initial-coretime-pricing/5187"},"here")),(0,o.kt)("h3",{id:"splitting-and-interlacing"},"Splitting and Interlacing"),(0,o.kt)("p",null,"Splitting and interlacing are actions that can be performed within a region. Performing either of\nthese actions makes you lose the right to a price-capped renewal."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Splitting"),": the action of dividing a region into several regions with different start and end\ntimeslices."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Interlacing:")," the action of dividing a region into the execution of different tasks for each\nblock of a timeslice. The result regions will have the same start and end timeslice as the parent\nregion, but different tasks will be executed at different blocks.")),(0,o.kt)("h3",{id:"elastic-scaling"},"Elastic Scaling"),(0,o.kt)("p",null,"With elastic scaling (still under development) projects can scale seamlessly and without being\nlimited to previously allocated resources. Elastic scaling is the process of getting multiple cores\nfor one task. This allows parachains to include more blocks per unit time (Relay Chain-side), and\nproduce more blocks per unit time (async backing on the parachain side). Elastic scaling can be\npaired with on-demand coretime to increase your bandwidth seamlessly."),(0,o.kt)("h2",{id:"agile-coretime-faq"},"Agile Coretime FAQ"),(0,o.kt)("h3",{id:"roadmap"},"Roadmap"),(0,o.kt)("h4",{id:"where-can-we-track-agile-coretime-progress"},"Where can we track Agile Coretime Progress"),(0,o.kt)("p",null,"Agile Coretime project logistics can be tracked on the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/paritytech/projects/119/views/20"},"Parachains Team GitHub Dashboard")),(0,o.kt)("h4",{id:"is-all-of-rfc-1-coming-at-once-or-in-parts"},"Is all of RFC-1 coming at once or in parts?"),(0,o.kt)("p",null,"No, with the initial Kusama launch, the following features mentioned in\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot-fellows.github.io/RFCs/approved/0001-agile-coretime.html"},"RFC-1")," are rolled out:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"The purchase of bulk coretime and placement of on-demand orders"),(0,o.kt)("li",{parentName:"ul"},"Renewing leases"),(0,o.kt)("li",{parentName:"ul"},"Splitting and interlacing regions")),(0,o.kt)("p",null,"These features are still under development and will be rolled out in later releases:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Getting rewards for adding your region to the on-demand pool"),(0,o.kt)("li",{parentName:"ul"},"Credits for on-demand coretime (currently you are able to buy with native tokens of relay chain)")),(0,o.kt)("h4",{id:"what-is-currently-being-developed-in-the-ecosystem-to-support-agile-coretime"},"What is currently being developed in the ecosystem to support Agile Coretime?"),(0,o.kt)("p",null,"There are several ecosystem projects in the making, such as the secondary markets for coretime,\n",(0,o.kt)("a",{parentName:"p",href:"https://www.lastic.xyz/"},"Lastic"),",\nand\xa0",(0,o.kt)("a",{parentName:"p",href:"https://app.regionx.tech/"},"RegionX"),"."),(0,o.kt)("p",null,"Always do your own research. If you feel your project should be listed on the Wiki, please follow\nthe ",(0,o.kt)("a",{parentName:"p",href:"/docs/contributing"},"contributor's guide"),"."),(0,o.kt)("h4",{id:"will-all-the-current-leaseholder-parachains-migrate-and-when"},"Will all the current leaseholder parachains migrate and when?"),(0,o.kt)("p",null,"They will migrate when the runtime upgrade with Agile Coretime is performed on the relay chain. Any\nparachains with existing lease periods will be automatically credited bulk coretime for the\nremainder of their lease period."),(0,o.kt)("h4",{id:"when-will-the-auction-mechanism-be-deprecated"},"When will the auction mechanism be deprecated?"),(0,o.kt)("p",null,"Auctions will stop directly with the runtime upgrade of Agile Coretime. Current leases will be\nmigrated to bulk coretime automatically."),(0,o.kt)("h3",{id:"product"},"Product"),(0,o.kt)("h4",{id:"where-will-coretime-be-maintained"},"Where will coretime be maintained?"),(0,o.kt)("p",null,"Coretime will be managed by the broker pallet which is deployed on the Coretime Chain."),(0,o.kt)("h4",{id:"is-the-broker-chain-the-same-as-the-coretime-chain"},"Is the Broker Chain the same as the Coretime Chain?"),(0,o.kt)("p",null,"Yes, the broker pallet runs on the Coretime Chain."),(0,o.kt)("h4",{id:"can-cores-be-shared-at-the-same-time"},"Can cores be shared at the same time?"),(0,o.kt)("p",null,"Currently not. Cores can be shared, but only in time. For example, you get a core at block X,\nanother one gets it at block Y. This may change in future."),(0,o.kt)("h4",{id:"what-limits-are-there-to-the-number-of-cores"},"What limits are there to the number of cores?"),(0,o.kt)("p",null,"Successful tests were made with around 80 cores and 12-second block times for parachains. A single\ntest validator set is able to validate 80 blockchains simultaneously. In theory a single Relay Chain\nshould be able to support a few hundred cores. Optimizations to get closer to this theoretical limit\nwill be developed and deployed continuously."),(0,o.kt)("p",null,"Once that theoretical limit is reached, ideas for further scaling are already on the table. The goal\nis not to scale by ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=O9QZveTdW5I"},"lowering security guarantees"),"\n(similarly to optimistic rollups) but to optimize and improve allocation efficiency (by making\nbetter use of the existing cores)."),(0,o.kt)("h4",{id:"is-there-a-ui-for-the-coretime-chain"},"Is there a UI for the Coretime Chain?"),(0,o.kt)("p",null,"Teams in the ecosystem are working on a UI. RegionX has released an app for testing on\nRococo:\xa0",(0,o.kt)("a",{parentName:"p",href:"https://app.regionx.tech/"},"https://app.regionx.tech/"),". Without the UI, this would be automated from the parachains\u2019\nruntimes or manually with Coretime Chain extrinsics via polkadot.js."),(0,o.kt)("h3",{id:"coretime-pricing-and-purchasing"},"Coretime Pricing and Purchasing"),(0,o.kt)("h4",{id:"how-is-the-price-for-bulk-coretime-calculated"},"How is the price for bulk coretime calculated?"),(0,o.kt)("p",null,"The pricing for bulk coretime depends on factors from several sources:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"The first source is the implementation directly in the pallet, which is not exposed as a\nconfiguration"),(0,o.kt)("li",{parentName:"ol"},"The second source is configurable in the runtime of the Coretime Chain"),(0,o.kt)("li",{parentName:"ol"},"Configurable parameters, such as the starting sales price, ideal bulk ration and the number of\ncores offered per sale, which are set through governance"),(0,o.kt)("li",{parentName:"ol"},"Market forces, such as the demand and perceived true market price of a core - the impact of which\ncan be increased or decreased through the configuration set by governance")),(0,o.kt)("p",null,"A more detailed description of the elements that have an influence on the bulk coretime price can be\nfound ",(0,o.kt)("a",{parentName:"p",href:"https://hackmd.io/@seadanda/Sk9pLYm3a"},"here"),"."),(0,o.kt)("p",null,"After a\n",(0,o.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/initial-coretime-pricing/5187/7?u=joyce"},"thorough analysis")," it was\ndecided to open a governance proposal for an initial price ~5 KSM. The price will be set with the\n\u201cstart sales\u201d call, which will go through governance after runtime upgrade. Keep an eye on the post\nto be informed and decide with us upon the initial price for Agile Coretime on KSM. The price for\nPolkadot is still under discussion."),(0,o.kt)("h4",{id:"how-do-sale-periods-work-on-the-coretime-chain"},"How do sale periods work on the Coretime Chain?"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"coretime-sale-timeline",src:i(19908).Z,width:"2000",height:"1015"})),(0,o.kt)("p",null,"Sales on the Coretime Chain are of region length. These sales are divided into two main periods: the\nRenewal period and the Sale period."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Renewal periods are of the length of the interlude, which is defined as a number of blocks in the\nbroker pallet configuration, and it\u2019s where bulk coretime can be renewed."),(0,o.kt)("li",{parentName:"ul"},"Sale periods are as well divided into two periods: a Price Discovery period and a Fixed Price\nperiod. After the Renewal period, a new start price will be set by the Coretime Chain and a dutch\nauction of lead-in length blocks will start, putting downward pressure on price to find the right\nequilibrium. This process will set the base price which will be the one offered at the Fixed Price\nperiod.")),(0,o.kt)("h4",{id:"how-does-the-pricing-mechanism-for-on-demand-coretime-work"},"How does the pricing mechanism for on-demand coretime work?"),(0,o.kt)("p",null,"There will be a minimum price configured, the rest is based on demand via a price function: the\nlonger the queue, the higher the price."),(0,o.kt)("h4",{id:"do-i-need-to-pay-a-deposit-to-register-for-coretime"},"Do I need to pay a deposit to register for coretime?"),(0,o.kt)("p",null,"All newly registered parachains must\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/pull/3020"},"place a deposit")," equivalent to the cost of\nregistering the maximum size of runtime (business logic) code. After a successful registration,\nparachains are allowed to be assigned to regions. The runtime of these parachains can then be\nupgraded without any additional costs. The maximum size is pre-defined and equal to everyone on the\nnetwork. This way, every registration will cost the same independent of the size of the registered\nruntime code (Wasm blob)."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/RFCs/pull/44"},"RFC-44")," is proposing a new rent-based\nregistration price model, which will become an alternative (if it gets approved)."),(0,o.kt)("h4",{id:"how-does-the-price-change-over-time"},"How does the price change over time?"),(0,o.kt)("p",null,"On-demand coretime will always be subject to market conditions. The price of bulk coretime changes\nbased on the outcome of the previous sale. Factors such as the number of cores sold, the target\n(from the ideal bulk ratio) and the number of cores offered in the sale are used in combination with\nthe price for which the last core was sold. Bulk renewals are capped within a percentage of the\nprevious purchase price. The algorithm that is used is implemented in each runtime and can differ\nbetween chains."),(0,o.kt)("p",null,"The bulk price in Kusama might vary between a 50% decrease in case no cores were sold in the\nprevious sales and can increase by 5x depending on the number of cores sold and when they sell.\nThese numbers represent extreme cases though."),(0,o.kt)("h4",{id:"can-the-renewal-price-be-different-per-taskid-parachain-or-will-each-sale-cycle-have-a-fix-renewal-price"},"Can the renewal price be different per taskID (Parachain)? Or will each sale cycle have a fix renewal price?"),(0,o.kt)("p",null,"It is in general different per task if they hit their caps."),(0,o.kt)("p",null,"With the current configuration on Kusama, if the price is going up, every renewal pays a maximum of 3% more than they paid for the sale before. That keeps going back to the sale cycle they first bought their coretime (or the sale cycle they renewed their lease). And because people buy in different sale cycles, or even at different times in each sale cycle, their prices can be wildly different from one another. There\u2019s a special case for leaseholders at the end of their lease. They pay the base price in the sale in which they expire."),(0,o.kt)("p",null,"The story is different if the prices are decreasing, since the caps are irrelevant. If it drops far enough it could mean that all parachains renew at the same price."),(0,o.kt)("h4",{id:"if-purchased-in-bulk-do-you-then-have-one-core-or-one-bucket-of-coretime-that-you-can-use-in-your-own-time-or-is-there-a-specific-slot"},"If purchased in bulk, do you then have \u201cone core\u201d or \u201cone bucket of coretime\u201d that you can use in your own time? Or is there a specific slot?"),(0,o.kt)("p",null,"You have a specific core for the duration of four weeks, and have the ability to split the region\nup. Splitting or interlacing the region makes you lose the right to a price-capped renewal."),(0,o.kt)("h4",{id:"what-happens-to-purchased-coretime-if-i-dont-use-it"},"What happens to purchased coretime if I don't use it?"),(0,o.kt)("p",null,"Unused coretime can't be carried over. If the coretime within the time allocation (timeslice) is not\nused, then it is lost. If previously purchased coretime is no longer needed, it be sold on secondary\nmarkets."),(0,o.kt)("h4",{id:"can-i-buy-coretime-in-advance-and-start-using-it-when-im-ready"},"Can I buy coretime in advance and start using it when I'm ready?"),(0,o.kt)("p",null,"Coretime can be purchased up to 28 days in advance. Later, \u201cfutures\u201d markets to hedge against price\nfluctuations could be a possible solution to increase predictability further."),(0,o.kt)("h3",{id:"concepts"},"Concepts"),(0,o.kt)("h4",{id:"is-it-on-demand-coretime-or-instantaneous-coretime"},"Is it \u201con-demand coretime\u201d or \u201cInstantaneous coretime\u201d?"),(0,o.kt)("p",null,'It was decided to stick with the term "on-demand".'),(0,o.kt)("h4",{id:"whats-the-correct-spelling-and-its-usage"},"What's the correct spelling and its usage?"),(0,o.kt)("p",null,"Other than Agile Coretime and the Coretime Chain, do not capitalize coretime or blockspace."),(0,o.kt)("h4",{id:"whats-the-connection-between-blockspace-and-coretime"},"What\u2019s the connection between blockspace and coretime?"),(0,o.kt)("p",null,"(Secure) blockspace is the resource Polkadot provides, which is measured in and allocated through\ncoretime."),(0,o.kt)("h3",{id:"value-proposition"},"Value Proposition"),(0,o.kt)("h4",{id:"what-are-the-benefits-of-agile-coretime-and-how-do-the-on-demand-and-bulk-models-suit-different-customers"},"What are the benefits of Agile Coretime, and how do the on-demand and bulk models suit different customers?"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"On a high level, Agile Coretime brings a new era of scaling to Web3 with optimal resource\nallocation across the entire network."),(0,o.kt)("li",{parentName:"ul"},"The on-demand model democratizes blockchain access by opening the door to everyone building a\ncustom, sovereign Web3 application; the bulk model brings a new level of cost-predictability for\nteams and projects.")),(0,o.kt)("p",null,"Specific benefits for decision makers and developers:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Agile Coretime brings efficient utilization of resources, enabling scale and agility for better\nUX, without compromising security or decentralisation."),(0,o.kt)("li",{parentName:"ul"},"More flexible economic models for every stage of growth enable builders to innovate without\nboundaries."),(0,o.kt)("li",{parentName:"ul"},"Developers benefit from streamlined development through simplified resource management, as well as\nfrom a consistent development environment through flexible and predictable cost modelling over\ntime."),(0,o.kt)("li",{parentName:"ul"},"On-demand coretime removes barriers to entry: spin up your proof of concept quickly with full\naccess to Polkadot\u2019s entire ecosystem."),(0,o.kt)("li",{parentName:"ul"},"Cost effectiveness: Remove inefficiencies by buying coretime on-demand only, or sell access to\ncoretime on secondary marketplaces."),(0,o.kt)("li",{parentName:"ul"},"With elastic scaling (not supported yet) projects can scale seamlessly and without being limited\nto previously allocated resources. Elastic scaling is the process of getting multiple cores for\none task. This allows parachains to include more blocks per unit time (Relay Chain-side), and\nproduce more blocks per unit time (async backing on the parachain side). With elastic scaling, add\non-demand coretime to increase your bandwidth seamlessly."),(0,o.kt)("li",{parentName:"ul"},"Bulk coretime enables strategic resource planning: secure bulk coretime at a fixed price to\nprevent spiking fees during high demand. This helps you future-proof your projects. Bulk coretime\nprovides a solid foundation for your long-term business plans, allowing for sustainable growth.")),(0,o.kt)("h4",{id:"what-makes-the-coretime-model-on-polkadot-competitive"},"What makes the coretime model on Polkadot competitive?"),(0,o.kt)("p",null,"The on-demand option removes barriers to entry and enables builders to start and innovate quickly.\nCombined with the bulk model, builders also mitigate risks of spiking fees during times of high\ndemand."),(0,o.kt)("p",null,"However, as compared to running on an L1 or a scaling solution, builders still have the benefits of\nrunning on a purpose-made parachain, which is more efficient and thus cheaper than running a smart\ncontract on a generic L1. In addition, you are connected to and secured by the entire Polkadot\nnetwork."),(0,o.kt)("p",null,"Polkadot thus offers all the benefits of building high-performing, purpose-made, and composable\nappchains, combined with the most flexible economics."),(0,o.kt)("h4",{id:"how-close-do-we-get-to-web2-scale-for-web3"},"How close do we get to Web2 scale for Web3?"),(0,o.kt)("p",null,"Agile Coretime mainly improves allocation efficiency. With\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/issues/1829"},"elastic scaling"),", we take a big step\ntowards enabling Web2 scale in Web3 by reducing parachain block production below 6 seconds.\nTheoretically, parachains will be able to produce blocks very fast and the limitations will lie on\nthe Relay Chain side\u2019s cores and how many cores a parachain uses."),(0,o.kt)("h3",{id:"implementation"},"Implementation"),(0,o.kt)("admonition",{title:"Unable to use multiple cores!",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The coretime chain does not prohibit ordering multiple cores and assigning them to the same\nparachain. However, elastic scaling is still in the works ",(0,o.kt)("strong",{parentName:"p"},"so don't do this, you will not be able\nto use those cores."))),(0,o.kt)("h4",{id:"what-do-i-need-to-do-for-my-parachain-to-continue-working-in-the-switch-to-coretime"},"What do I need to do for my parachain to continue working in the switch to coretime?"),(0,o.kt)("p",null,"Current parachain slots will be converted to legacy leases automatically in the runtime upgrade\nthrough a migration, with no intervention needed. The lease will grant your parachain a core until\nthe end of the region in which its slot would have expired."),(0,o.kt)("h4",{id:"when-does-the-last-auction-take-place"},"When does the last auction take place?"),(0,o.kt)("p",null,"Auctions take place until the launch of coretime. With the runtime upgrade, enabling Agile Coretime,\nany still ongoing auction will be canceled. Existing active leases of previous auctions will be\nmigrated to Agile Coretime: In case you have a lease secured, you automatically get corresponding\ncoretime, with renewal right."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: if your team secured a lease with a new paraID, please\n",(0,o.kt)("a",{parentName:"em",href:"#will-i-be-able-to-still-swap-my-lease-with-another-project"},"read the question about swapping"),".")),(0,o.kt)("h4",{id:"when-and-how-can-i-renew-my-legacy-lease"},"When and how can I renew my legacy lease?"),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"slots.leases")," are migrated to ",(0,o.kt)("inlineCode",{parentName:"p"},"leases")," in the broker pallet with an expiry ",(0,o.kt)("inlineCode",{parentName:"p"},"timeslice")," that\ncorresponds to your original expiry block. When the lease expires, the parachain has a core until\nthe end of the sales period that it expired in. After that, the ",(0,o.kt)("inlineCode",{parentName:"p"},"interlude")," period starts. In that\nsale period you can renew your bulk coretime by calling\xa0",(0,o.kt)("inlineCode",{parentName:"p"},"renew"),"\xa0on the lease's core. The price will\nbe charged and will be equal to the market price of a bulk core in that sale."),(0,o.kt)("p",null,"For more details, check out our\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot-public.notion.site/Implementation-reference-Coretime-from-Trappist-c930796e8c884011adb1fa24ef22f77c?pvs=4"},"technical guide"),"."),(0,o.kt)("h4",{id:"will-all-leases-be-migrated-to-agile-coretime"},"Will all leases be migrated to Agile Coretime?"),(0,o.kt)("p",null,"If your team has a lease secured by the time Agile Coretime launches, they will also have a lease on\nAgile Coretime and the right for renewal when the lease expires. If the lease of your project would\nonly start ",(0,o.kt)("em",{parentName:"p"},"after")," Agile Coretime launch (not yet active at launch time), the lease will be\ncancelled and your locked KSM refunded. You will need to purchase and assign coretime."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: Your lease will also be canceled and refunded, in case it is not continuous, as leases with\n\u201choles\u201d are not supported by Agile Coretime.")),(0,o.kt)("h4",{id:"will-i-be-able-to-still-swap-my-lease-with-another-project"},"Will I be able to still swap my lease with another project?"),(0,o.kt)("p",null,"Unfortunately you won\u2019t be able for the current Kusama release, and it\u2019s advisable to avoid doing it\non Polkadot too, as swapping is not something that will exist with Agile Coretime. Yet to ensure a\nsmooth migration, we\u2019re implementing a solution for Polkadot. Once we release Agile Coretime on\nPolkadot, you should be able to call the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/issues/3552"},"swap extrinsic")," to swap your lease with\nanother project and the change will be reflected on Agile Coretime as well."),(0,o.kt)("h4",{id:"my-lease-is-about-to-end-what-do-i-need-to-do"},"My lease is about to end, what do I need to do?"),(0,o.kt)("p",null,"If your lease is about to expire, your core is added to the allowed renewals and you are able to\nrenew your core for a fixed percentage increase before the rest of the market is able to bid on it.\nPlease, make sure to renew your lease within the period defined by the broker chain to avoid\ndowntime for your chain and potentially losing your fixed renewal cost."),(0,o.kt)("h4",{id:"can-any-account-renew-coretime-on-behalf-of-a-parachain-or-does-this-need-to-be-from-the-parachain-sovereign-account"},"Can any account renew coretime on behalf of a parachain or does this need to be from the parachain sovereign account?"),(0,o.kt)("p",null,"Yes, any account with enough funds can renew it for any given parachain on a core which qualifies\nfor renewal."),(0,o.kt)("h4",{id:"how-is-the-coretime-price-determined-in-practice"},"How is the coretime price determined in practice?"),(0,o.kt)("p",null,"The starting price is initially configured by a referendum. In subsequent sales, it depends on the\nnumber of cores which were sold vs those which were for sale. If the ideal ratio was sold (the ratio\nis configured by referendum, too) then the price remains the same. If fewer cores than the ideal\nwere sold, then the price decreases. If more cores are sold than ideal, then the price increases. In\nthis way the price is sensitive to market conditions, the initial configuration, and the number of\ncores offered in the sales."),(0,o.kt)("h4",{id:"how-is-coretime-measured-and-allocated-technically"},"How is coretime measured and allocated technically?"),(0,o.kt)("p",null,"The Coretime Chain is a proposed new system parachain within the Polkadot network that is\nresponsible for the management of coretime. It is designed to handle the allocation of bulk coretime\nand track ownership of coretime as non-fungible assets (NFTs). The Coretime Chain provides\ninformation to the Relay Chain regarding the number of cores available, the tasks running on each\ncore, and accounting information for on-demand coretime credit. Additionally, it processes renewals\nand allows for various manipulations of bulk coretime, such as transfers, partitioning, interlacing,\nassignment to tasks, and pooling for on-demand coretime."),(0,o.kt)("h4",{id:"why-are-sales-of-on-demand-coretime-happening-on-the-relay-chain"},"Why are sales of on-demand coretime happening on the Relay Chain?"),(0,o.kt)("p",null,"In the beginning, sales are executed on the Relay Chain, but they could move to the Coretime Chain.\nLatency is the only drawback: at low demand, the buyer would receive the coretime instantly when via\nthe Relay Chain, but there\u2019ll be a delay when executed on the Coretime Chain. At times of high\ndemand, there will be a queue anyway and this delay matters less."),(0,o.kt)("h4",{id:"whats-the-best-way-for-on-demand-tasks-previously-known-as-on-demand-parachains-or-parathreads-to-regularly-send-extrinsics-to-the-relay-chain-for-allowing-a-block-to-be-validate"},"What's the best way for on-demand tasks (previously known as on-demand parachains or parathreads) to regularly send extrinsics to the Relay Chain for allowing a block to be validate?"),(0,o.kt)("p",null,"A ready-to-use automated and decentralized method for ordering on-demand coretime is\ncurrently\xa0",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/issues/1487"},"being implemented"),". Some teams\nalready implemented a simplified\xa0",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Magport/Magnet/issues/4"},"variant"),'. What works\nin any case is ordering on-demand coretime "by hand", by sending the\xa0',(0,o.kt)("inlineCode",{parentName:"p"},"placeOrderKeepAlive"),"\xa0extrinsic\nof the\xa0",(0,o.kt)("inlineCode",{parentName:"p"},"onDemandAssignmentProvider"),", via polkadot js for example. You can find an easy step-by-step\nguide\n",(0,o.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/parachain-consensus-updates-coretime-asynchronous-backing-scalability/4396/8?u=kianenigma"},"here"),"."),(0,o.kt)("h4",{id:"how-many-cores-will-be-configured-for-on-demand-coretime"},"How many cores will be configured for on-demand coretime?"),(0,o.kt)("p",null,"We will certainly start with one core on Kusama and one on Polkadot, and then see if this is\nsufficient initially."),(0,o.kt)("h4",{id:"what-happens-if-my-chain-runs-out-of-coretime"},"What happens if my chain runs out of coretime?"),(0,o.kt)("p",null,"Your chain won\u2019t be able to validate further blocks and will halt."),(0,o.kt)("h4",{id:"what-does-splitting-and-interlacing-mean"},"What does splitting and interlacing mean?"),(0,o.kt)("p",null,"Splitting and interlacing are actions anyone can make within its own region. Performing any of these\nwill result in a new region with new characteristics, and will make the owner of the original region\nunable to renew it."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Splitting"),": the action of dividing a region into several regions with different start and end\ntimeslices."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Interlacing:")," the action of dividing a region into the execution of different tasks for each\nblock of a timeslice. The result regions will have the same start and end timeslice as the parent\nregion, but different tasks will be executed at different blocks.")))}u.isMDXComponent=!0},4544:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/core-usage-agile-rangeSplit-d8511cbb8658052ac0a639bd6a722982.png"},42030:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/core-usage-dumb-6419ee60a3606e10d89a1c91dbf24e20.png"},19908:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Coretime-Sale-Timeline-d621574ae5a430c8e80861693985631d.png"}}]); \ No newline at end of file diff --git a/assets/js/73d1b372.a809b89b.js b/assets/js/73d1b372.a809b89b.js deleted file mode 100644 index 874b17a6a7c7..000000000000 --- a/assets/js/73d1b372.a809b89b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3576],{3905:(e,t,i)=>{i.d(t,{Zo:()=>h,kt:()=>u});var a=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function r(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},h=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var i=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),d=c(i),p=n,u=d["".concat(s,".").concat(p)]||d[p]||m[p]||o;return i?a.createElement(u,r(r({ref:t},h),{},{components:i})):a.createElement(u,r({ref:t},h))}));function u(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=i.length,r=new Array(o);r[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,r[1]=l;for(var c=2;c{i.r(t),i.d(t,{assets:()=>h,contentTitle:()=>s,default:()=>u,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=i(87462),n=i(63366),o=(i(67294),i(3905)),r=["components"],l={id:"learn-agile-coretime",title:"Introduction to Agile Coretime",sidebar_label:"Agile Coretime Intro",description:"Introduction to Agile Coretime and its terminology",keywords:["coretime","blockspace","parathread","parachain","cores"],slug:"../learn-agile-coretime"},s=void 0,c={unversionedId:"learn/learn-agile-coretime",id:"learn/learn-agile-coretime",title:"Introduction to Agile Coretime",description:"Introduction to Agile Coretime and its terminology",source:"@site/../docs/learn/learn-agile-coretime.md",sourceDirName:"learn",slug:"/learn-agile-coretime",permalink:"/docs/learn-agile-coretime",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-agile-coretime.md",tags:[],version:"current",lastUpdatedBy:"Joyce Siqueira",lastUpdatedAt:1714390746,formattedLastUpdatedAt:"Apr 29, 2024",frontMatter:{id:"learn-agile-coretime",title:"Introduction to Agile Coretime",sidebar_label:"Agile Coretime Intro",description:"Introduction to Agile Coretime and its terminology",keywords:["coretime","blockspace","parathread","parachain","cores"],slug:"../learn-agile-coretime"},sidebar:"docs",previous:{title:"Agile Coretime",permalink:"/docs/learn-agile-coretime-index"},next:{title:"Coretime Marketplaces",permalink:"/docs/learn-guides-coretime-marketplaces"}},h={},d=[{value:"Agile Coretime Terminology",id:"agile-coretime-terminology",level:2},{value:"Core",id:"core",level:3},{value:"Coretime",id:"coretime",level:3},{value:"Bulk Coretime",id:"bulk-coretime",level:3},{value:"Region",id:"region",level:3},{value:"On-demand Coretime",id:"on-demand-coretime",level:3},{value:"On-demand Coretime Pool",id:"on-demand-coretime-pool",level:3},{value:"Coretime Chain",id:"coretime-chain",level:3},{value:"Timeslice",id:"timeslice",level:3},{value:"Task",id:"task",level:3},{value:"Agile Coretime Implementation",id:"agile-coretime-implementation",level:2},{value:"Coretime Sales",id:"coretime-sales",level:3},{value:"Splitting and Interlacing",id:"splitting-and-interlacing",level:3},{value:"Elastic Scaling",id:"elastic-scaling",level:3},{value:"Agile Coretime FAQ",id:"agile-coretime-faq",level:2},{value:"Roadmap",id:"roadmap",level:3},{value:"Where can we track Agile Coretime Progress",id:"where-can-we-track-agile-coretime-progress",level:4},{value:"Is all of RFC-1 coming at once or in parts?",id:"is-all-of-rfc-1-coming-at-once-or-in-parts",level:4},{value:"What is currently being developed in the ecosystem to support Agile Coretime?",id:"what-is-currently-being-developed-in-the-ecosystem-to-support-agile-coretime",level:4},{value:"Will all the current leaseholder parachains migrate and when?",id:"will-all-the-current-leaseholder-parachains-migrate-and-when",level:4},{value:"When will the auction mechanism be deprecated?",id:"when-will-the-auction-mechanism-be-deprecated",level:4},{value:"Product",id:"product",level:3},{value:"Where will coretime be maintained?",id:"where-will-coretime-be-maintained",level:4},{value:"Is the Broker Chain the same as the Coretime Chain?",id:"is-the-broker-chain-the-same-as-the-coretime-chain",level:4},{value:"Can cores be shared at the same time?",id:"can-cores-be-shared-at-the-same-time",level:4},{value:"What limits are there to the number of cores?",id:"what-limits-are-there-to-the-number-of-cores",level:4},{value:"Is there a UI for the Coretime Chain?",id:"is-there-a-ui-for-the-coretime-chain",level:4},{value:"Coretime Pricing and Purchasing",id:"coretime-pricing-and-purchasing",level:3},{value:"How is the price for bulk coretime calculated?",id:"how-is-the-price-for-bulk-coretime-calculated",level:4},{value:"How do sale periods work on the Coretime Chain?",id:"how-do-sale-periods-work-on-the-coretime-chain",level:4},{value:"How does the pricing mechanism for on-demand coretime work?",id:"how-does-the-pricing-mechanism-for-on-demand-coretime-work",level:4},{value:"Do I need to pay a deposit to register for coretime?",id:"do-i-need-to-pay-a-deposit-to-register-for-coretime",level:4},{value:"How does the price change over time?",id:"how-does-the-price-change-over-time",level:4},{value:"Can the renewal price be different per taskID (Parachain)? Or will each sale cycle have a fix renewal price?",id:"can-the-renewal-price-be-different-per-taskid-parachain-or-will-each-sale-cycle-have-a-fix-renewal-price",level:4},{value:"If purchased in bulk, do you then have \u201cone core\u201d or \u201cone bucket of coretime\u201d that you can use in your own time? Or is there a specific slot?",id:"if-purchased-in-bulk-do-you-then-have-one-core-or-one-bucket-of-coretime-that-you-can-use-in-your-own-time-or-is-there-a-specific-slot",level:4},{value:"What happens to purchased coretime if I don't use it?",id:"what-happens-to-purchased-coretime-if-i-dont-use-it",level:4},{value:"Can I buy coretime in advance and start using it when I'm ready?",id:"can-i-buy-coretime-in-advance-and-start-using-it-when-im-ready",level:4},{value:"Concepts",id:"concepts",level:3},{value:"Is it \u201con-demand coretime\u201d or \u201cInstantaneous coretime\u201d?",id:"is-it-on-demand-coretime-or-instantaneous-coretime",level:4},{value:"What's the correct spelling and its usage?",id:"whats-the-correct-spelling-and-its-usage",level:4},{value:"What\u2019s the connection between blockspace and coretime?",id:"whats-the-connection-between-blockspace-and-coretime",level:4},{value:"Value Proposition",id:"value-proposition",level:3},{value:"What are the benefits of Agile Coretime, and how do the on-demand and bulk models suit different customers?",id:"what-are-the-benefits-of-agile-coretime-and-how-do-the-on-demand-and-bulk-models-suit-different-customers",level:4},{value:"What makes the coretime model on Polkadot competitive?",id:"what-makes-the-coretime-model-on-polkadot-competitive",level:4},{value:"How close do we get to Web2 scale for Web3?",id:"how-close-do-we-get-to-web2-scale-for-web3",level:4},{value:"Implementation",id:"implementation",level:3},{value:"What do I need to do for my parachain to continue working in the switch to coretime?",id:"what-do-i-need-to-do-for-my-parachain-to-continue-working-in-the-switch-to-coretime",level:4},{value:"When does the last auction take place?",id:"when-does-the-last-auction-take-place",level:4},{value:"When and how can I renew my legacy lease?",id:"when-and-how-can-i-renew-my-legacy-lease",level:4},{value:"Will all leases be migrated to Agile Coretime?",id:"will-all-leases-be-migrated-to-agile-coretime",level:4},{value:"Will I be able to still swap my lease with another project?",id:"will-i-be-able-to-still-swap-my-lease-with-another-project",level:4},{value:"My lease is about to end, what do I need to do?",id:"my-lease-is-about-to-end-what-do-i-need-to-do",level:4},{value:"Can any account renew coretime on behalf of a parachain or does this need to be from the parachain sovereign account?",id:"can-any-account-renew-coretime-on-behalf-of-a-parachain-or-does-this-need-to-be-from-the-parachain-sovereign-account",level:4},{value:"How is the coretime price determined in practice?",id:"how-is-the-coretime-price-determined-in-practice",level:4},{value:"How is coretime measured and allocated technically?",id:"how-is-coretime-measured-and-allocated-technically",level:4},{value:"Why are sales of on-demand coretime happening on the Relay Chain?",id:"why-are-sales-of-on-demand-coretime-happening-on-the-relay-chain",level:4},{value:"What's the best way for on-demand tasks (previously known as on-demand parachains or parathreads) to regularly send extrinsics to the Relay Chain for allowing a block to be validate?",id:"whats-the-best-way-for-on-demand-tasks-previously-known-as-on-demand-parachains-or-parathreads-to-regularly-send-extrinsics-to-the-relay-chain-for-allowing-a-block-to-be-validate",level:4},{value:"How many cores will be configured for on-demand coretime?",id:"how-many-cores-will-be-configured-for-on-demand-coretime",level:4},{value:"What happens if my chain runs out of coretime?",id:"what-happens-if-my-chain-runs-out-of-coretime",level:4},{value:"What does splitting and interlacing mean?",id:"what-does-splitting-and-interlacing-mean",level:4}],m={toc:d},p="wrapper";function u(e){var t=e.components,l=(0,n.Z)(e,r);return(0,o.kt)(p,(0,a.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Agile Coretime enables efficient utilization of Polkadot network resources and provides economic\nflexibility for builders, generalizing Polkadot beyond what was initially proposed and envisioned in\nits ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/whitepaper/"},"whitepaper"),"."),(0,o.kt)("p",null,"In Polkadot 1.0, the only way for a parachain to be secured by Polkadot was to rent a lease through\nan ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"auction"),", which guaranteed parachain block validation for up-to two years.\nThis involved locking significant amount of DOT, leading to a high barrier of entry for small and\nmedium scale blockchain projects. The parachains produced blocks at a regular interval of 12\nseconds, irrespective of the network activity. This led to inefficient resource allocation and\nmisplaced economic incentives while producing almost empty blocks under lighter traffic and being\nunable to accommodate heavier traffic when it exceeded block limits. Agile Coretime resolves all of\nthese drawbacks."),(0,o.kt)("p",null,"The figure below shows the core usage for Polkadot 1.0, where the horizontal axis is time, and each\nrow represents a core. Colors show different parachains, each using one core (i.e., one parachain,\none core)."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"core-usage-dumb",src:i(42030).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"Agile Coretime allows for the purchase of ",(0,o.kt)("a",{parentName:"p",href:"#coretime"},"coretime")," in \u201cbulk\u201d with an allocation for one\nmonth. Heavy duty parachains which need to author a block every 12 seconds (or every 6s through\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-async-backing"},"Asynchronous Backing"),"), can seamlessly \u201crenew\u201d the ",(0,o.kt)("a",{parentName:"p",href:"#core"},"core")," each\nmonth. Coretime renewal orders take precedence over new orders and provide protection against price\nfluctuations, allowing parachains to plan their project budget and costs more effectively."),(0,o.kt)("p",null,"The purchased coretime can also be split up and sold in parts, down to a single block per month,\nallowing for secondary markets to thrive and improve the allocation efficiency of coretime.\nFurthermore, Agile Coretime offers ",(0,o.kt)("a",{parentName:"p",href:"#on-demand-coretime"},"on-demand coretime")," functionality that\nenables the authoring of a parachain block on-demand."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"core-usage-agile-rangeSplit",src:i(4544).Z,width:"1920",height:"800"})),(0,o.kt)("admonition",{title:"Agile Coretime is under active development",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The progress of Agile Coretime development can be tracked\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/paritytech/projects/119/views/20"},"here."))),(0,o.kt)("h2",{id:"agile-coretime-terminology"},"Agile Coretime Terminology"),(0,o.kt)("h3",{id:"core"},"Core"),(0,o.kt)("p",null,'The term "Core" captures the virtual abstraction of computational resources provided by the relay\nchain to secure the blocks of a parachain, which involves a randomized set of the relay chain\nvalidators.'),(0,o.kt)("h3",{id:"coretime"},"Coretime"),(0,o.kt)("p",null,"The time allocated for utilizing a core, measured in relay chain blocks."),(0,o.kt)("h3",{id:"bulk-coretime"},"Bulk Coretime"),(0,o.kt)("p",null,"A fixed duration of continuous coretime represented by an NFT that can be split, shared, or resold.\nCurrently, the duration of bulk coretime is set to 28 days."),(0,o.kt)("h3",{id:"region"},"Region"),(0,o.kt)("p",null,"The NFT representing a single unit of bulk coretime."),(0,o.kt)("h3",{id:"on-demand-coretime"},"On-demand Coretime"),(0,o.kt)("p",null,"Previously known as instantaneous coretime, the on-demand coretime refers to coretime acquired\nthrough bidding in near real-time for the validation of a single parachain block on one of the cores\nreserved specifically for on-demand orders."),(0,o.kt)("h3",{id:"on-demand-coretime-pool"},"On-demand Coretime Pool"),(0,o.kt)("p",null,"Set of cores that are available on-demand. Cores reserved through bulk coretime could also be made\navailable in the on-demand coretime pool, in parts or in entirety."),(0,o.kt)("h3",{id:"coretime-chain"},"Coretime Chain"),(0,o.kt)("p",null,"A system parachain that is responsible for the sale, manipulation of bulk coretime and eventually\nthe purchase of on-demand coretime credits. It is also responsible for scheduling the respective\ncores on the relay chain to the parachains."),(0,o.kt)("h3",{id:"timeslice"},"Timeslice"),(0,o.kt)("p",null,"A timeslice represents the granularity the Coretime Chain schedules cores on the Relay Chain. The\nCoretime Chain announces a schedule for each core, comprising the next 80 relay chain blocks in\nadvance. 5,040 timeslices corresponds to the region length of 28 days (which is the initial\nconfiguration set for bulk coretime)."),(0,o.kt)("h3",{id:"task"},"Task"),(0,o.kt)("p",null,'The term "Task" captures the abstraction of utility of the core. Tasks on the cores are not just\nlimited to securing parachains.'),(0,o.kt)("h2",{id:"agile-coretime-implementation"},"Agile Coretime Implementation"),(0,o.kt)("p",null,"Coretime is managed through the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/eefd5fe4499515da66d088505093f75b5aa22550/substrate/frame/broker/src/lib.rs"},"broker pallet"),"\nwhich is deployed on the Coretime Chain. In theory, the Polkadot Relay Chain can support around a\nhundred cores seamlessly and can support over a few hundred cores through optimizations. Preliminary\ntests ran successfully with 80 cores with 12-second block times."),(0,o.kt)("h3",{id:"coretime-sales"},"Coretime Sales"),(0,o.kt)("p",null,"Sales on the Coretime Chain are of ",(0,o.kt)("inlineCode",{parentName:"p"},"timeslice")," length. These sales are divided into two main\nperiods: the Renewal period and the Sale period."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"coretime-sale-timeline",src:i(19908).Z,width:"2000",height:"1015"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Renewal periods are of ",(0,o.kt)("inlineCode",{parentName:"li"},"interlude_length")," blocks long, and it\u2019s where bulk coretime can be\nrenewed."),(0,o.kt)("li",{parentName:"ul"},"Sale periods are as well divided into two periods: a Price Discovery period and a Fixed Price\nperiod. After the Renewal period, a new ",(0,o.kt)("inlineCode",{parentName:"li"},"start_price")," will be set by the Coretime Chain and a\ndutch auction of ",(0,o.kt)("inlineCode",{parentName:"li"},"leading_length")," blocks will start, putting downward pressure on price to find\nthe right equilibrium. This process will set the ",(0,o.kt)("inlineCode",{parentName:"li"},"regular_price")," which will be the one offered at\nthe Fixed Price period.")),(0,o.kt)("p",null,"This discussion on initial coretime pricing can be viewed\n",(0,o.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/initial-coretime-pricing/5187"},"here")),(0,o.kt)("h3",{id:"splitting-and-interlacing"},"Splitting and Interlacing"),(0,o.kt)("p",null,"Splitting and interlacing are actions that can be performed within a region. Performing either of\nthese actions makes you lose the right to a price-capped renewal."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Splitting"),": the action of dividing a region into several regions with different start and end\ntimeslices."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Interlacing:")," the action of dividing a region into the execution of different tasks for each\nblock of a timeslice. The result regions will have the same start and end timeslice as the parent\nregion, but different tasks will be executed at different blocks.")),(0,o.kt)("h3",{id:"elastic-scaling"},"Elastic Scaling"),(0,o.kt)("p",null,"With elastic scaling (still under development) projects can scale seamlessly and without being\nlimited to previously allocated resources. Elastic scaling is the process of getting multiple cores\nfor one task. This allows parachains to include more blocks per unit time (Relay Chain-side), and\nproduce more blocks per unit time (async backing on the parachain side). Elastic scaling can be\npaired with on-demand coretime to increase your bandwidth seamlessly."),(0,o.kt)("h2",{id:"agile-coretime-faq"},"Agile Coretime FAQ"),(0,o.kt)("h3",{id:"roadmap"},"Roadmap"),(0,o.kt)("h4",{id:"where-can-we-track-agile-coretime-progress"},"Where can we track Agile Coretime Progress"),(0,o.kt)("p",null,"Agile Coretime project logistics can be tracked on the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/orgs/paritytech/projects/119/views/20"},"Parachains Team GitHub Dashboard")),(0,o.kt)("h4",{id:"is-all-of-rfc-1-coming-at-once-or-in-parts"},"Is all of RFC-1 coming at once or in parts?"),(0,o.kt)("p",null,"No, with the initial Kusama launch, the following features mentioned in\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot-fellows.github.io/RFCs/approved/0001-agile-coretime.html"},"RFC-1")," are rolled out:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"The purchase of bulk coretime and placement of on-demand orders"),(0,o.kt)("li",{parentName:"ul"},"Renewing leases"),(0,o.kt)("li",{parentName:"ul"},"Splitting and interlacing regions")),(0,o.kt)("p",null,"These features are still under development and will be rolled out in later releases:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Getting rewards for adding your region to the on-demand pool"),(0,o.kt)("li",{parentName:"ul"},"Credits for on-demand coretime (currently you are able to buy with native tokens of relay chain)")),(0,o.kt)("h4",{id:"what-is-currently-being-developed-in-the-ecosystem-to-support-agile-coretime"},"What is currently being developed in the ecosystem to support Agile Coretime?"),(0,o.kt)("p",null,"There are several ecosystem projects in the making, such as the secondary markets for coretime,\n",(0,o.kt)("a",{parentName:"p",href:"https://www.lastic.xyz/"},"Lastic"),"\xa0(focusing on frontend)\nand\xa0",(0,o.kt)("a",{parentName:"p",href:"https://app.regionx.tech/"},"RegionX"),"\xa0(focusing on backend)."),(0,o.kt)("p",null,"Always do your own research. If you feel your project should be listed on the Wiki, please follow\nthe ",(0,o.kt)("a",{parentName:"p",href:"/docs/contributing"},"contributor's guide"),"."),(0,o.kt)("h4",{id:"will-all-the-current-leaseholder-parachains-migrate-and-when"},"Will all the current leaseholder parachains migrate and when?"),(0,o.kt)("p",null,"They will migrate when the runtime upgrade with Agile Coretime is performed on the relay chain. Any\nparachains with existing lease periods will be automatically credited bulk coretime for the\nremainder of their lease period."),(0,o.kt)("h4",{id:"when-will-the-auction-mechanism-be-deprecated"},"When will the auction mechanism be deprecated?"),(0,o.kt)("p",null,"Auctions will stop directly with the runtime upgrade of Agile Coretime. Current leases will be\nmigrated to bulk coretime automatically."),(0,o.kt)("h3",{id:"product"},"Product"),(0,o.kt)("h4",{id:"where-will-coretime-be-maintained"},"Where will coretime be maintained?"),(0,o.kt)("p",null,"Coretime will be managed by the broker pallet which is deployed on the Coretime Chain."),(0,o.kt)("h4",{id:"is-the-broker-chain-the-same-as-the-coretime-chain"},"Is the Broker Chain the same as the Coretime Chain?"),(0,o.kt)("p",null,"Yes, the broker pallet runs on the Coretime Chain."),(0,o.kt)("h4",{id:"can-cores-be-shared-at-the-same-time"},"Can cores be shared at the same time?"),(0,o.kt)("p",null,"Currently not. Cores can be shared, but only in time. For example, you get a core at block X,\nanother one gets it at block Y. This may change in future."),(0,o.kt)("h4",{id:"what-limits-are-there-to-the-number-of-cores"},"What limits are there to the number of cores?"),(0,o.kt)("p",null,"Successful tests were made with around 80 cores and 12-second block times for parachains. A single\ntest validator set is able to validate 80 blockchains simultaneously. In theory a single Relay Chain\nshould be able to support a few hundred cores. Optimizations to get closer to this theoretical limit\nwill be developed and deployed continuously."),(0,o.kt)("p",null,"Once that theoretical limit is reached, ideas for further scaling are already on the table. The goal\nis not to scale by ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=O9QZveTdW5I"},"lowering security guarantees"),"\n(similarly to optimistic rollups) but to optimize and improve allocation efficiency (by making\nbetter use of the existing cores)."),(0,o.kt)("h4",{id:"is-there-a-ui-for-the-coretime-chain"},"Is there a UI for the Coretime Chain?"),(0,o.kt)("p",null,"Teams in the ecosystem are working on a UI. RegionX has released an app for testing on\nRococo:\xa0",(0,o.kt)("a",{parentName:"p",href:"https://app.regionx.tech/"},"https://app.regionx.tech/"),". Without the UI, this would be automated from the parachains\u2019\nruntimes or manually with Coretime Chain extrinsics via polkadot.js."),(0,o.kt)("h3",{id:"coretime-pricing-and-purchasing"},"Coretime Pricing and Purchasing"),(0,o.kt)("h4",{id:"how-is-the-price-for-bulk-coretime-calculated"},"How is the price for bulk coretime calculated?"),(0,o.kt)("p",null,"The pricing for bulk coretime depends on factors from several sources:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"The first source is the implementation directly in the pallet, which is not exposed as a\nconfiguration"),(0,o.kt)("li",{parentName:"ol"},"The second source is configurable in the runtime of the Coretime Chain"),(0,o.kt)("li",{parentName:"ol"},"Configurable parameters, such as the starting sales price, ideal bulk ration and the number of\ncores offered per sale, which are set through governance"),(0,o.kt)("li",{parentName:"ol"},"Market forces, such as the demand and perceived true market price of a core - the impact of which\ncan be increased or decreased through the configuration set by governance")),(0,o.kt)("p",null,"A more detailed description of the elements that have an influence on the bulk coretime price can be\nfound ",(0,o.kt)("a",{parentName:"p",href:"https://hackmd.io/@seadanda/Sk9pLYm3a"},"here"),"."),(0,o.kt)("p",null,"After a\n",(0,o.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/initial-coretime-pricing/5187/7?u=joyce"},"thorough analysis")," it was\ndecided to open a governance proposal for an initial price ~5 KSM. The price will be set with the\n\u201cstart sales\u201d call, which will go through governance after runtime upgrade. Keep an eye on the post\nto be informed and decide with us upon the initial price for Agile Coretime on KSM. The price for\nPolkadot is still under discussion."),(0,o.kt)("h4",{id:"how-do-sale-periods-work-on-the-coretime-chain"},"How do sale periods work on the Coretime Chain?"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"coretime-sale-timeline",src:i(19908).Z,width:"2000",height:"1015"})),(0,o.kt)("p",null,"Sales on the Coretime Chain are of region length. These sales are divided into two main periods: the\nRenewal period and the Sale period."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Renewal periods are of the length of the interlude, which is defined as a number of blocks in the\nbroker pallet configuration, and it\u2019s where bulk coretime can be renewed."),(0,o.kt)("li",{parentName:"ul"},"Sale periods are as well divided into two periods: a Price Discovery period and a Fixed Price\nperiod. After the Renewal period, a new start price will be set by the Coretime Chain and a dutch\nauction of lead-in length blocks will start, putting downward pressure on price to find the right\nequilibrium. This process will set the base price which will be the one offered at the Fixed Price\nperiod.")),(0,o.kt)("h4",{id:"how-does-the-pricing-mechanism-for-on-demand-coretime-work"},"How does the pricing mechanism for on-demand coretime work?"),(0,o.kt)("p",null,"There will be a minimum price configured, the rest is based on demand via a price function: the\nlonger the queue, the higher the price."),(0,o.kt)("h4",{id:"do-i-need-to-pay-a-deposit-to-register-for-coretime"},"Do I need to pay a deposit to register for coretime?"),(0,o.kt)("p",null,"All newly registered parachains must\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/pull/3020"},"place a deposit")," equivalent to the cost of\nregistering the maximum size of runtime (business logic) code. After a successful registration,\nparachains are allowed to be assigned to regions. The runtime of these parachains can then be\nupgraded without any additional costs. The maximum size is pre-defined and equal to everyone on the\nnetwork. This way, every registration will cost the same independent of the size of the registered\nruntime code (Wasm blob)."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/RFCs/pull/44"},"RFC-44")," is proposing a new rent-based\nregistration price model, which will become an alternative (if it gets approved)."),(0,o.kt)("h4",{id:"how-does-the-price-change-over-time"},"How does the price change over time?"),(0,o.kt)("p",null,"On-demand coretime will always be subject to market conditions. The price of bulk coretime changes\nbased on the outcome of the previous sale. Factors such as the number of cores sold, the target\n(from the ideal bulk ratio) and the number of cores offered in the sale are used in combination with\nthe price for which the last core was sold. Bulk renewals are capped within a percentage of the\nprevious purchase price. The algorithm that is used is implemented in each runtime and can differ\nbetween chains."),(0,o.kt)("p",null,"The bulk price in Kusama might vary between a 50% decrease in case no cores were sold in the\nprevious sales and can increase by 5x depending on the number of cores sold and when they sell.\nThese numbers represent extreme cases though."),(0,o.kt)("h4",{id:"can-the-renewal-price-be-different-per-taskid-parachain-or-will-each-sale-cycle-have-a-fix-renewal-price"},"Can the renewal price be different per taskID (Parachain)? Or will each sale cycle have a fix renewal price?"),(0,o.kt)("p",null,"It is in general different per task if they hit their caps."),(0,o.kt)("p",null,"With the current configuration on Kusama, if the price is going up, every renewal pays a maximum of 3% more than they paid for the sale before. That keeps going back to the sale cycle they first bought their coretime (or the sale cycle they renewed their lease). And because people buy in different sale cycles, or even at different times in each sale cycle, their prices can be wildly different from one another. There\u2019s a special case for leaseholders at the end of their lease. They pay the base price in the sale in which they expire."),(0,o.kt)("p",null,"The story is different if the prices are decreasing, since the caps are irrelevant. If it drops far enough it could mean that all parachains renew at the same price."),(0,o.kt)("h4",{id:"if-purchased-in-bulk-do-you-then-have-one-core-or-one-bucket-of-coretime-that-you-can-use-in-your-own-time-or-is-there-a-specific-slot"},"If purchased in bulk, do you then have \u201cone core\u201d or \u201cone bucket of coretime\u201d that you can use in your own time? Or is there a specific slot?"),(0,o.kt)("p",null,"You have a specific core for the duration of four weeks, and have the ability to split the region\nup. Splitting or interlacing the region makes you lose the right to a price-capped renewal."),(0,o.kt)("h4",{id:"what-happens-to-purchased-coretime-if-i-dont-use-it"},"What happens to purchased coretime if I don't use it?"),(0,o.kt)("p",null,"Unused coretime can't be carried over. If the coretime within the time allocation (timeslice) is not\nused, then it is lost. If previously purchased coretime is no longer needed, it be sold on secondary\nmarkets."),(0,o.kt)("h4",{id:"can-i-buy-coretime-in-advance-and-start-using-it-when-im-ready"},"Can I buy coretime in advance and start using it when I'm ready?"),(0,o.kt)("p",null,"Coretime can be purchased up to 28 days in advance. Later, \u201cfutures\u201d markets to hedge against price\nfluctuations could be a possible solution to increase predictability further."),(0,o.kt)("h3",{id:"concepts"},"Concepts"),(0,o.kt)("h4",{id:"is-it-on-demand-coretime-or-instantaneous-coretime"},"Is it \u201con-demand coretime\u201d or \u201cInstantaneous coretime\u201d?"),(0,o.kt)("p",null,'It was decided to stick with the term "on-demand".'),(0,o.kt)("h4",{id:"whats-the-correct-spelling-and-its-usage"},"What's the correct spelling and its usage?"),(0,o.kt)("p",null,"Other than Agile Coretime and the Coretime Chain, do not capitalize coretime or blockspace."),(0,o.kt)("h4",{id:"whats-the-connection-between-blockspace-and-coretime"},"What\u2019s the connection between blockspace and coretime?"),(0,o.kt)("p",null,"(Secure) blockspace is the resource Polkadot provides, which is measured in and allocated through\ncoretime."),(0,o.kt)("h3",{id:"value-proposition"},"Value Proposition"),(0,o.kt)("h4",{id:"what-are-the-benefits-of-agile-coretime-and-how-do-the-on-demand-and-bulk-models-suit-different-customers"},"What are the benefits of Agile Coretime, and how do the on-demand and bulk models suit different customers?"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"On a high level, Agile Coretime brings a new era of scaling to Web3 with optimal resource\nallocation across the entire network."),(0,o.kt)("li",{parentName:"ul"},"The on-demand model democratizes blockchain access by opening the door to everyone building a\ncustom, sovereign Web3 application; the bulk model brings a new level of cost-predictability for\nteams and projects.")),(0,o.kt)("p",null,"Specific benefits for decision makers and developers:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Agile Coretime brings efficient utilization of resources, enabling scale and agility for better\nUX, without compromising security or decentralisation."),(0,o.kt)("li",{parentName:"ul"},"More flexible economic models for every stage of growth enable builders to innovate without\nboundaries."),(0,o.kt)("li",{parentName:"ul"},"Developers benefit from streamlined development through simplified resource management, as well as\nfrom a consistent development environment through flexible and predictable cost modelling over\ntime."),(0,o.kt)("li",{parentName:"ul"},"On-demand coretime removes barriers to entry: spin up your proof of concept quickly with full\naccess to Polkadot\u2019s entire ecosystem."),(0,o.kt)("li",{parentName:"ul"},"Cost effectiveness: Remove inefficiencies by buying coretime on-demand only, or sell access to\ncoretime on secondary marketplaces."),(0,o.kt)("li",{parentName:"ul"},"With elastic scaling (not supported yet) projects can scale seamlessly and without being limited\nto previously allocated resources. Elastic scaling is the process of getting multiple cores for\none task. This allows parachains to include more blocks per unit time (Relay Chain-side), and\nproduce more blocks per unit time (async backing on the parachain side). With elastic scaling, add\non-demand coretime to increase your bandwidth seamlessly."),(0,o.kt)("li",{parentName:"ul"},"Bulk coretime enables strategic resource planning: secure bulk coretime at a fixed price to\nprevent spiking fees during high demand. This helps you future-proof your projects. Bulk coretime\nprovides a solid foundation for your long-term business plans, allowing for sustainable growth.")),(0,o.kt)("h4",{id:"what-makes-the-coretime-model-on-polkadot-competitive"},"What makes the coretime model on Polkadot competitive?"),(0,o.kt)("p",null,"The on-demand option removes barriers to entry and enables builders to start and innovate quickly.\nCombined with the bulk model, builders also mitigate risks of spiking fees during times of high\ndemand."),(0,o.kt)("p",null,"However, as compared to running on an L1 or a scaling solution, builders still have the benefits of\nrunning on a purpose-made parachain, which is more efficient and thus cheaper than running a smart\ncontract on a generic L1. In addition, you are connected to and secured by the entire Polkadot\nnetwork."),(0,o.kt)("p",null,"Polkadot thus offers all the benefits of building high-performing, purpose-made, and composable\nappchains, combined with the most flexible economics."),(0,o.kt)("h4",{id:"how-close-do-we-get-to-web2-scale-for-web3"},"How close do we get to Web2 scale for Web3?"),(0,o.kt)("p",null,"Agile Coretime mainly improves allocation efficiency. With\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/issues/1829"},"elastic scaling"),", we take a big step\ntowards enabling Web2 scale in Web3 by reducing parachain block production below 6 seconds.\nTheoretically, parachains will be able to produce blocks very fast and the limitations will lie on\nthe Relay Chain side\u2019s cores and how many cores a parachain uses."),(0,o.kt)("h3",{id:"implementation"},"Implementation"),(0,o.kt)("admonition",{title:"Unable to use multiple cores!",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The coretime chain does not prohibit ordering multiple cores and assigning them to the same\nparachain. However, elastic scaling is still in the works ",(0,o.kt)("strong",{parentName:"p"},"so don't do this, you will not be able\nto use those cores."))),(0,o.kt)("h4",{id:"what-do-i-need-to-do-for-my-parachain-to-continue-working-in-the-switch-to-coretime"},"What do I need to do for my parachain to continue working in the switch to coretime?"),(0,o.kt)("p",null,"Current parachain slots will be converted to legacy leases automatically in the runtime upgrade\nthrough a migration, with no intervention needed. The lease will grant your parachain a core until\nthe end of the region in which its slot would have expired."),(0,o.kt)("h4",{id:"when-does-the-last-auction-take-place"},"When does the last auction take place?"),(0,o.kt)("p",null,"Auctions take place until the launch of coretime. With the runtime upgrade, enabling Agile Coretime,\nany still ongoing auction will be canceled. Existing active leases of previous auctions will be\nmigrated to Agile Coretime: In case you have a lease secured, you automatically get corresponding\ncoretime, with renewal right."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: if your team secured a lease with a new paraID, please\n",(0,o.kt)("a",{parentName:"em",href:"#will-i-be-able-to-still-swap-my-lease-with-another-project"},"read the question about swapping"),".")),(0,o.kt)("h4",{id:"when-and-how-can-i-renew-my-legacy-lease"},"When and how can I renew my legacy lease?"),(0,o.kt)("p",null,"The ",(0,o.kt)("inlineCode",{parentName:"p"},"slots.leases")," are migrated to ",(0,o.kt)("inlineCode",{parentName:"p"},"leases")," in the broker pallet with an expiry ",(0,o.kt)("inlineCode",{parentName:"p"},"timeslice")," that\ncorresponds to your original expiry block. When the lease expires, the parachain has a core until\nthe end of the sales period that it expired in. After that, the ",(0,o.kt)("inlineCode",{parentName:"p"},"interlude")," period starts. In that\nsale period you can renew your bulk coretime by calling\xa0",(0,o.kt)("inlineCode",{parentName:"p"},"renew"),"\xa0on the lease's core. The price will\nbe charged and will be equal to the market price of a bulk core in that sale."),(0,o.kt)("p",null,"For more details, check out our\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot-public.notion.site/Implementation-reference-Coretime-from-Trappist-c930796e8c884011adb1fa24ef22f77c?pvs=4"},"technical guide"),"."),(0,o.kt)("h4",{id:"will-all-leases-be-migrated-to-agile-coretime"},"Will all leases be migrated to Agile Coretime?"),(0,o.kt)("p",null,"If your team has a lease secured by the time Agile Coretime launches, they will also have a lease on\nAgile Coretime and the right for renewal when the lease expires. If the lease of your project would\nonly start ",(0,o.kt)("em",{parentName:"p"},"after")," Agile Coretime launch (not yet active at launch time), the lease will be\ncancelled and your locked KSM refunded. You will need to purchase and assign coretime."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: Your lease will also be canceled and refunded, in case it is not continuous, as leases with\n\u201choles\u201d are not supported by Agile Coretime.")),(0,o.kt)("h4",{id:"will-i-be-able-to-still-swap-my-lease-with-another-project"},"Will I be able to still swap my lease with another project?"),(0,o.kt)("p",null,"Unfortunately you won\u2019t be able for the current Kusama release, and it\u2019s advisable to avoid doing it\non Polkadot too, as swapping is not something that will exist with Agile Coretime. Yet to ensure a\nsmooth migration, we\u2019re implementing a solution for Polkadot. Once we release Agile Coretime on\nPolkadot, you should be able to call the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/issues/3552"},"swap extrinsic")," to swap your lease with\nanother project and the change will be reflected on Agile Coretime as well."),(0,o.kt)("h4",{id:"my-lease-is-about-to-end-what-do-i-need-to-do"},"My lease is about to end, what do I need to do?"),(0,o.kt)("p",null,"If your lease is about to expire, your core is added to the allowed renewals and you are able to\nrenew your core for a fixed percentage increase before the rest of the market is able to bid on it.\nPlease, make sure to renew your lease within the period defined by the broker chain to avoid\ndowntime for your chain and potentially losing your fixed renewal cost."),(0,o.kt)("h4",{id:"can-any-account-renew-coretime-on-behalf-of-a-parachain-or-does-this-need-to-be-from-the-parachain-sovereign-account"},"Can any account renew coretime on behalf of a parachain or does this need to be from the parachain sovereign account?"),(0,o.kt)("p",null,"Yes, any account with enough funds can renew it for any given parachain on a core which qualifies\nfor renewal."),(0,o.kt)("h4",{id:"how-is-the-coretime-price-determined-in-practice"},"How is the coretime price determined in practice?"),(0,o.kt)("p",null,"The starting price is initially configured by a referendum. In subsequent sales, it depends on the\nnumber of cores which were sold vs those which were for sale. If the ideal ratio was sold (the ratio\nis configured by referendum, too) then the price remains the same. If fewer cores than the ideal\nwere sold, then the price decreases. If more cores are sold than ideal, then the price increases. In\nthis way the price is sensitive to market conditions, the initial configuration, and the number of\ncores offered in the sales."),(0,o.kt)("h4",{id:"how-is-coretime-measured-and-allocated-technically"},"How is coretime measured and allocated technically?"),(0,o.kt)("p",null,"The Coretime Chain is a proposed new system parachain within the Polkadot network that is\nresponsible for the management of coretime. It is designed to handle the allocation of bulk coretime\nand track ownership of coretime as non-fungible assets (NFTs). The Coretime Chain provides\ninformation to the Relay Chain regarding the number of cores available, the tasks running on each\ncore, and accounting information for on-demand coretime credit. Additionally, it processes renewals\nand allows for various manipulations of bulk coretime, such as transfers, partitioning, interlacing,\nassignment to tasks, and pooling for on-demand coretime."),(0,o.kt)("h4",{id:"why-are-sales-of-on-demand-coretime-happening-on-the-relay-chain"},"Why are sales of on-demand coretime happening on the Relay Chain?"),(0,o.kt)("p",null,"In the beginning, sales are executed on the Relay Chain, but they could move to the Coretime Chain.\nLatency is the only drawback: at low demand, the buyer would receive the coretime instantly when via\nthe Relay Chain, but there\u2019ll be a delay when executed on the Coretime Chain. At times of high\ndemand, there will be a queue anyway and this delay matters less."),(0,o.kt)("h4",{id:"whats-the-best-way-for-on-demand-tasks-previously-known-as-on-demand-parachains-or-parathreads-to-regularly-send-extrinsics-to-the-relay-chain-for-allowing-a-block-to-be-validate"},"What's the best way for on-demand tasks (previously known as on-demand parachains or parathreads) to regularly send extrinsics to the Relay Chain for allowing a block to be validate?"),(0,o.kt)("p",null,"A ready-to-use automated and decentralized method for ordering on-demand coretime is\ncurrently\xa0",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/issues/1487"},"being implemented"),". Some teams\nalready implemented a simplified\xa0",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Magport/Magnet/issues/4"},"variant"),'. What works\nin any case is ordering on-demand coretime "by hand", by sending the\xa0',(0,o.kt)("inlineCode",{parentName:"p"},"placeOrderKeepAlive"),"\xa0extrinsic\nof the\xa0",(0,o.kt)("inlineCode",{parentName:"p"},"onDemandAssignmentProvider"),", via polkadot js for example. You can find an easy step-by-step\nguide\n",(0,o.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/parachain-consensus-updates-coretime-asynchronous-backing-scalability/4396/8?u=kianenigma"},"here"),"."),(0,o.kt)("h4",{id:"how-many-cores-will-be-configured-for-on-demand-coretime"},"How many cores will be configured for on-demand coretime?"),(0,o.kt)("p",null,"We will certainly start with one core on Kusama and one on Polkadot, and then see if this is\nsufficient initially."),(0,o.kt)("h4",{id:"what-happens-if-my-chain-runs-out-of-coretime"},"What happens if my chain runs out of coretime?"),(0,o.kt)("p",null,"Your chain won\u2019t be able to validate further blocks and will halt."),(0,o.kt)("h4",{id:"what-does-splitting-and-interlacing-mean"},"What does splitting and interlacing mean?"),(0,o.kt)("p",null,"Splitting and interlacing are actions anyone can make within its own region. Performing any of these\nwill result in a new region with new characteristics, and will make the owner of the original region\nunable to renew it."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Splitting"),": the action of dividing a region into several regions with different start and end\ntimeslices."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Interlacing:")," the action of dividing a region into the execution of different tasks for each\nblock of a timeslice. The result regions will have the same start and end timeslice as the parent\nregion, but different tasks will be executed at different blocks.")))}u.isMDXComponent=!0},4544:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/core-usage-agile-rangeSplit-d8511cbb8658052ac0a639bd6a722982.png"},42030:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/core-usage-dumb-6419ee60a3606e10d89a1c91dbf24e20.png"},19908:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Coretime-Sale-Timeline-d621574ae5a430c8e80861693985631d.png"}}]); \ No newline at end of file diff --git a/assets/js/804b1e9f.1169be28.js b/assets/js/804b1e9f.1169be28.js deleted file mode 100644 index c08da920d22d..000000000000 --- a/assets/js/804b1e9f.1169be28.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[230],{47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>c});var o=a(74165),n=a(15861),i=a(67294),s=a(87152),r=a(9712),l=a(67425);function p(t,e,a){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,o.Z)().mark((function t(e,a,n){var i,l,p,d,u;return(0,o.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:i=void 0,l=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){t.next=18;break}return t.abrupt("return");case 18:return p=new s.U(i),t.next=21,r.G.create({provider:p});case 21:d=t.sent,(u=a.split(".")).forEach((function(t){t in d&&(d=d[t])})),t.t1=u[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return l=d.toString(),t.abrupt("break",35);case 29:return t.next=31,d();case 31:return l=(l=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+u[0]+") in "+a);case 35:return t.abrupt("return",l);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function u(t,e,a,o){switch(e){case"humanReadable":(0,l.HumanReadable)(t,a,o);break;case"precise":(0,l.Precise)(t,a,o);break;case"blocksToDays":(0,l.BlocksToDays)(t,o);break;case"erasToDays":(0,l.ErasToDays)(t,o,a);break;case"percentage":(0,l.Percentage)(t,o);break;case"permillToPercent":(0,l.PermillToPercent)(t,o);break;case"arrayLength":(0,l.ArrayLength)(t,o);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(t){var e=t.network,a=t.path,s=t.defaultValue,r=t.filter,l=void 0===r?void 0:r,d=(0,i.useState)(""),c=d[0],k=d[1];return e=e.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?u(s.toString(),l,e,k):k(s.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":t="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var t=(0,n.Z)((0,o.Z)().mark((function t(){var n;return(0,o.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p(e,a,k);case 2:if(void 0!==(n=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==l?u(n,l,e,k):k(n);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{i()}catch(r){console.log(r)}}}),[]),c}},67425:t=>{var e="polkadot",a="kusama",o="statemine",n="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,s,r){var l=void 0;if(s===e||s===n)l=3;else{if(s!==a&&s!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}t=parseFloat(t),r((t=Number.isInteger(t/i[s].precision)?t/i[s].precision+" "+i[s].symbol:(t/i[s].precision).toFixed(l)+" "+i[s].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/i[e].precision+" "+i[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,i,s){var r=void 0;if(s===e||s===n)r=1;else{if(s!==a&&s!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}i((t/=r).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},46494:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>p,toc:()=>u});var o=a(87462),n=a(63366),i=(a(67294),a(3905)),s=(a(47940),["components"]),r={id:"learn-guides-nominator",title:"Polkadot-JS Guides For Nominators",sidebar_label:"Nominator Guides",description:"Polkadot-JS Guides for Nominators.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js"],slug:"../learn-guides-nominator"},l=void 0,p={unversionedId:"learn/learn-guides-nominator",id:"learn/learn-guides-nominator",title:"Polkadot-JS Guides For Nominators",description:"Polkadot-JS Guides for Nominators.",source:"@site/../docs/learn/learn-guides-nominator.md",sourceDirName:"learn",slug:"/learn-guides-nominator",permalink:"/docs/learn-guides-nominator",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-nominator.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1713872889,formattedLastUpdatedAt:"Apr 23, 2024",frontMatter:{id:"learn-guides-nominator",title:"Polkadot-JS Guides For Nominators",sidebar_label:"Nominator Guides",description:"Polkadot-JS Guides for Nominators.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js"],slug:"../learn-guides-nominator"},sidebar:"docs",previous:{title:"Staking Guides",permalink:"/docs/learn-guides-staking"},next:{title:"Nomination Pool Guides",permalink:"/docs/learn-guides-staking-pools"}},d={},u=[{value:"Nominate Using Polkadot-JS",id:"nominate-using-polkadot-js",level:2},{value:"Bond your tokens",id:"bond-your-tokens",level:3},{value:"Nominate a validator",id:"nominate-a-validator",level:3},{value:"Stop nominating",id:"stop-nominating",level:3},{value:"Claiming Rewards with Polkadot-JS",id:"claiming-rewards-with-polkadot-js",level:2},{value:"Using Command-Line Interface (CLI)",id:"using-command-line-interface-cli",level:2},{value:"Step 1: Install @polkadot/api-cli",id:"step-1-install-polkadotapi-cli",level:3},{value:"Step 2: Bond Tokens",id:"step-2-bond-tokens",level:3},{value:"Step 3: Nominate a validator",id:"step-3-nominate-a-validator",level:3}],c={toc:u},k="wrapper";function h(t){var e=t.components,r=(0,n.Z)(t,s);return(0,i.kt)(k,(0,o.Z)({},c,r,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,i.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,i.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,i.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"this page")," to learn about staking."),(0,i.kt)("h2",{id:"nominate-using-polkadot-js"},"Nominate Using Polkadot-JS"),(0,i.kt)("admonition",{title:"Video Tutorials",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://youtu.be/FCXC0CDhyS4?t=219"},"How to Nominate/Stake")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://youtu.be/7VlTncHCGPc"},"Staking with a Ledger device and Polkadot-JS")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=jL-N_IWiYVA"},"Staking with a Ledger device and Ledger Live")))),(0,i.kt)("h3",{id:"bond-your-tokens"},"Bond your tokens"),(0,i.kt)("admonition",{title:"Support Article",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Read the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000168057-polkadot-js-ui-how-do-i-stake-nominate-on-polkadot-"},"How to Bond Tokens and Nominate"),".")),(0,i.kt)("p",null,"On the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS UI"),' navigate to the "Staking" tab (within the\n"Network" menu).'),(0,i.kt)("p",null,'The "Staking Overview" subsection will show you all the active validators and their information -\ntheir identities, the amount of KSM that are staking for them, amount that is their own provided\nstake, how much they charge in commission, the era points they\'ve earned in the current era, and the\nlast block number that they produced. If you click on the chart button it will take you to the\n"Validator Stats" page for that validator that shows you more detailed and historical information\nabout the validator\'s stake, rewards and slashes.'),(0,i.kt)("p",null,'The "Account actions" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/actions"},"link"),") allows you\nto stake and nominate."),(0,i.kt)("p",null,'The "Payouts" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/payouts"},"link"),") allows you to\nclaim rewards from staking."),(0,i.kt)("p",null,'The "Targets" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/targets"},"link"),") will help you\nestimate your earnings and this is where it's good to start picking favorites."),(0,i.kt)("p",null,'The "Waiting" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/waiting"},"link"),") lists all pending\nvalidators that are awaiting more nominations to enter the active validator set. Validators will\nstay in the waiting queue until they have enough KSM backing them (as allocated through the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n election mechanism"),"). It is possible validator can remain in the\nqueue for a very long time if they never get enough backing."),(0,i.kt)("p",null,'The "Validator Stats" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/query"},"link"),") allows you\nto query a validator's stash address and see historical charts on era points, elected stake,\nrewards, and slashes."),(0,i.kt)("p",null,'Pick "Account actions" underneath "Network" > "Staking", then click the "+ Nominator" button.'),(0,i.kt)("p",null,"You will see a modal window that looks like the below:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"nominator-update-1",src:a(86367).Z,width:"2194",height:"1170"})),(0,i.kt)("p",null,'Select a "value bonded" that is ',(0,i.kt)("strong",{parentName:"p"},"less")," than the total amount of KSM you have, so you have some\nleft over to pay transaction fees. Transaction fees are currently at least 0.01 KSM, but they are\ndynamic based on a variety of factors including the load of recent blocks."),(0,i.kt)("p",null,"Also be mindful of the reaping threshold - the amount that must remain in an account lest it be\nburned. That amount is 0.01 in Kusama, so it's recommended to keep at least 0.1 KSM in your account\nto be on the safe side."),(0,i.kt)("p",null,"Choose whatever payment destination that makes sense to you. If you're unsure, you can choose \"Stash\naccount (increase amount at stake)\" to simply accrue the rewards into the amount you're staking and\nearn compound interest."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Payout account selection dropdown with the custom account option highlighted",src:a(42394).Z,width:"742",height:"245"})),(0,i.kt)("h3",{id:"nominate-a-validator"},"Nominate a validator"),(0,i.kt)("admonition",{title:"Support Article",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Read the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000150130-how-do-i-know-which-validators-to-choose-"},"How to Select Validators"),".")),(0,i.kt)("p",null,"You are now bonded. Being bonded means your tokens are locked and could be\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking#slashing"},"slashed")," if the validators you nominate misbehave. All bonded funds\ncan now be distributed to up to 16 validators. Be\ncareful about the validators you choose since you will be slashed if your validator commits an\noffence."),(0,i.kt)("p",null,'Click on "Nominate" on an account you\'ve bonded and you will be presented with another popup asking\nyou to select some validators.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Nominating validators",src:a(47043).Z,width:"2208",height:"982"})),(0,i.kt)("p",null,"Select them, confirm the transaction, and you're done - you are now nominating. Your nominations\nwill become active in the next era. Eras last six hours on Kusama - depending on when you do this,\nyour nominations may become active almost immediately, or you may have to wait almost the entire six\nhours before your nominations are active. You can check how far along Kusama is in the current era\non the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking"},"Staking page"),"."),(0,i.kt)("p",null,"Assuming at least one of your nominations ends up in the active validator set, you will start to get\nrewards allocated to you. In order to claim them (i.e., add them to your account), you must manually\nclaim them. To initiate a claim, you can do it yourself or have the validator that you staked for\ninitiate a claim. This is to help optimize the effectiveness and storage of payouts on Kusama. See\nthe ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking#claiming-rewards"},"Claiming Rewards")," section of the Staking wiki page for\nmore details."),(0,i.kt)("h3",{id:"stop-nominating"},"Stop nominating"),(0,i.kt)("admonition",{title:"Support Article",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Read the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000167902-how-can-i-unstake-my-tokens-again-"},"How to Stop Nominating & Unbond Tokens"),".\nSee also the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170241-polkadot-js-ui-how-to-rebond-tokens-during-the-unbonding-period"},"How to Rebond Tokens"),".")),(0,i.kt)("p",null,"At some point, you might decide to stop nominating one or more validators. You can always change who\nyou're nominating, but you cannot withdraw your tokens unless you unbond them."),(0,i.kt)("h2",{id:"claiming-rewards-with-polkadot-js"},"Claiming Rewards with Polkadot-JS"),(0,i.kt)("p",null,"Anyone can trigger a payout for any validator, as long as they are willing to pay the transaction\nfee. Someone must submit a transaction with a validator ID and an era index.\nPolkadot will automatically calculate that\nvalidator's reward and distribute the rewards pro rata."),(0,i.kt)("p",null,"These details are handled for you automatically if you use the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/payout"},"Polkadot-JS UI"),", which also allows you to submit\nbatches of eras at once."),(0,i.kt)("p",null,'To claim rewards on Polkadot-JS UI, you will need to be in the "Payouts" tab underneath "Staking",\nwhich will list all the pending payouts for your stashes.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"pending-payouts",src:a(26416).Z,width:"2876",height:"600"})),(0,i.kt)("p",null,'To then claim your reward, select the "Payout all" button. This will prompt you to select your stash\naccounts for payout.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"select-payouts",src:a(32348).Z,width:"2192",height:"624"})),(0,i.kt)("p",null,"Once you are done with payout, another screen will appear asking for you to sign and submit the\ntransaction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"transaction-payouts",src:a(41083).Z,width:"2878",height:"818"})),(0,i.kt)("h2",{id:"using-command-line-interface-cli"},"Using Command-Line Interface (CLI)"),(0,i.kt)("p",null,"Apart from using the Polkadot-JS UI to participate in the staking, you can do all these things in\nCLI instead. The CLI approach allows you to interact with the\nPolkadot network without using Polkadot-JS."),(0,i.kt)("h3",{id:"step-1-install-polkadotapi-cli"},"Step 1: Install @polkadot/api-cli"),(0,i.kt)("p",null,"We assume you have installed ",(0,i.kt)("a",{parentName:"p",href:"https://nodejs.org"},"NodeJS with npm"),". Run the following command to\ninstall the ",(0,i.kt)("inlineCode",{parentName:"p"},"@polkadot/api-cli")," globally:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm install -g @polkadot/api-cli\n")),(0,i.kt)("h3",{id:"step-2-bond-tokens"},"Step 2: Bond Tokens"),(0,i.kt)("admonition",{title:"Controller accounts are deprecated",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Controller accounts are deprecated. For more information, see\n",(0,i.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748"},"this discussion"),".")),(0,i.kt)("p",null,"Executing the following command:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "MNEMONIC_PHRASE" tx.staking.bond CONTROLLER_ADDRESS NUMBER_OF_TOKENS REWARD_DESTINATION --ws WEBSOCKET_ENDPOINT\n')),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"CONTROLLER_ADDRESS"),": An address you would like to bond to the stash account. (Controller accounts\nare now deprecated. Refer to\n",(0,i.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748"},"this discussion"),"\nfor additional context)"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"NUMBER_OF_TOKENS"),": The number of DOT you would\nlike to stake to the network.\nDOT has ten decimal places and is always represented as an integer with zeroes at the end. So 1 DOT = 10_000_000_000 Plancks. For more information, see ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"this page"),"."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"REWARD_DESTINATION"),":"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Staked")," - Pay into the stash account, increasing the amount at stake accordingly."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Stash")," - Pay into the stash account, not increasing the amount at stake."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Account")," - Pay into a custom account, like so:\n",(0,i.kt)("inlineCode",{parentName:"li"},"Account 1n8msHozaNxHicWFnRnNXzvqkYPWczkzUUkHhKw6o2BLBdo"),"","."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Controller")," - Pay into the controller account.")),(0,i.kt)("p",null,"Example for Kusama:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "xxxx xxxxx xxxx xxxxx" tx.staking.bond DMTHrNcmA8QbqRS4rBq8LXn8ipyczFoNMb1X4cY2WD9tdBX 1000000000000 Staked --ws wss://kusama-rpc.polkadot.io\n')),(0,i.kt)("p",null,"For wss endpoints see ",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-endpoints"},"this page"),"."),(0,i.kt)("p",null,"Result:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'...\n...\n "status": {\n "InBlock": "0x0ed1ec0ba69564e8f98958d69f826adef895b5617366a32a3aa384290e98514e"\n }\n')),(0,i.kt)("p",null,"You can check the transaction status by using the value of the ",(0,i.kt)("inlineCode",{parentName:"p"},"InBlock")," in\n",(0,i.kt)("a",{parentName:"p",href:"https://www.subscan.io/"},"Subscan"),". Also, you can verify the bonding state under the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/actions"},"Staking")," page on the Polkadot-JS UI."),(0,i.kt)("h3",{id:"step-3-nominate-a-validator"},"Step 3: Nominate a validator"),(0,i.kt)("p",null,"To nominate a validator, you can execute the following command:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "MNEMONIC_PHRASE" tx.staking.nominate \'["VALIDATOR_ADDRESS"]\' --ws WS_ENDPOINT\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "xxxx xxxxx xxxx xxxxx" tx.staking.nominate \'["CmD9vaMYoiKe7HiFnfkftwvhKbxN9bhyjcDrfFRGbifJEG8","E457XaKbj2yTB2URy8N4UuzmyuFRkcdxYs67UvSgVr7HyFb"]\' --ws wss://kusama-rpc.polkadot.io\n')),(0,i.kt)("p",null,"After a few seconds, you should see the hash of the transaction, and if you would like to verify the\nnomination status, you can check that on the Polkadot-JS UI as well."))}h.isMDXComponent=!0},86367:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const o=a.p+"assets/images/kusama_nominator_popup-633f75e8b404699f33b7d78f5ad7fd34.png"},47043:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const o=a.p+"assets/images/kusama_nominator_selection-8e7c4058648339294ebce2e1ce0c58e8.png"},42394:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const o=a.p+"assets/images/01-cc60f0cb7494041501c0ed80e5dca352.png"},41083:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const o=a.p+"assets/images/polkadotjs_payout_complete-87ad124d5d70e50c16f1434074562d70.png"},26416:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const o=a.p+"assets/images/polkadotjs_payout_page-fc4f62399f71b542e9eaac01405ef528.png"},32348:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const o=a.p+"assets/images/polkadotjs_payout_popup-feb847cdfae64f3fa247cdb2beea4ba6.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/804b1e9f.999165c4.js b/assets/js/804b1e9f.999165c4.js new file mode 100644 index 000000000000..50edd21c7b0a --- /dev/null +++ b/assets/js/804b1e9f.999165c4.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[230],{35703:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});var n=a(67294);const o=function(t){var e,a=t.message,o=(0,n.useState)(!0),i=o[0],s=o[1];return n.createElement(n.Fragment,null,i&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(e=a,e.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>p});var n=a(74165),o=a(15861),i=a(67294),s=a(87152),r=a(9712),l=a(67425);function d(t,e,a){return c.apply(this,arguments)}function c(){return(c=(0,o.Z)((0,n.Z)().mark((function t(e,a,o){var i,l,d,c,u;return(0,n.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:i=void 0,l=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){t.next=18;break}return t.abrupt("return");case 18:return d=new s.U(i),t.next=21,r.G.create({provider:d});case 21:c=t.sent,(u=a.split(".")).forEach((function(t){t in c&&(c=c[t])})),t.t1=u[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return l=c.toString(),t.abrupt("break",35);case 29:return t.next=31,c();case 31:return l=(l=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+u[0]+") in "+a);case 35:return t.abrupt("return",l);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function u(t,e,a,n){switch(e){case"humanReadable":(0,l.HumanReadable)(t,a,n);break;case"precise":(0,l.Precise)(t,a,n);break;case"blocksToDays":(0,l.BlocksToDays)(t,n);break;case"erasToDays":(0,l.ErasToDays)(t,n,a);break;case"percentage":(0,l.Percentage)(t,n);break;case"permillToPercent":(0,l.PermillToPercent)(t,n);break;case"arrayLength":(0,l.ArrayLength)(t,n);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(t){var e=t.network,a=t.path,s=t.defaultValue,r=t.filter,l=void 0===r?void 0:r,c=(0,i.useState)(""),p=c[0],m=c[1];return e=e.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?u(s.toString(),l,e,m):m(s.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":t="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var t=(0,o.Z)((0,n.Z)().mark((function t(){var o;return(0,n.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,d(e,a,m);case 2:if(void 0!==(o=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==l?u(o,l,e,m):m(o);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{i()}catch(r){console.log(r)}}}),[]),p}},67425:t=>{var e="polkadot",a="kusama",n="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,s,r){var l=void 0;if(s===e||s===o)l=3;else{if(s!==a&&s!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}t=parseFloat(t),r((t=Number.isInteger(t/i[s].precision)?t/i[s].precision+" "+i[s].symbol:(t/i[s].precision).toFixed(l)+" "+i[s].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/i[e].precision+" "+i[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,i,s){var r=void 0;if(s===e||s===o)r=1;else{if(s!==a&&s!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}i((t/=r).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},52991:(t,e,a)=>{"use strict";a.d(e,{Z:()=>g});var n=a(67294),o=a(86010),i=a(53438),s=a(39960),r=a(13919),l=a(95999);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function c(t){var e=t.href,a=t.children;return n.createElement(s.Z,{href:e,className:(0,o.Z)("card padding--lg",d.cardContainer)},a)}function u(t){var e=t.href,a=t.icon,i=t.title,s=t.description;return n.createElement(c,{href:e},n.createElement("h2",{className:(0,o.Z)("text--truncate",d.cardTitle),title:i},a," ",i),s&&n.createElement("p",{className:(0,o.Z)("text--truncate",d.cardDescription),title:s},s))}function p(t){var e,a=t.item,o=(0,i.Wl)(a);return o?n.createElement(u,{href:o,icon:"\ud83d\uddc3\ufe0f",title:a.label,description:null!=(e=a.description)?e:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:a.items.length})}):null}function m(t){var e,a,o=t.item,s=(0,r.Z)(o.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,i.xz)(null!=(e=o.docId)?e:void 0);return n.createElement(u,{href:o.href,icon:s,title:o.label,description:null!=(a=o.description)?a:null==l?void 0:l.description})}function k(t){var e=t.item;switch(e.type){case"link":return n.createElement(m,{item:e});case"category":return n.createElement(p,{item:e});default:throw new Error("unknown item type "+JSON.stringify(e))}}function h(t){var e=t.className,a=(0,i.jA)();return n.createElement(g,{items:a.items,className:e})}function g(t){var e=t.items,a=t.className;if(!e)return n.createElement(h,t);var s=(0,i.MN)(e);return n.createElement("section",{className:(0,o.Z)("row",a)},s.map((function(t,e){return n.createElement("article",{key:e,className:"col col--6 margin-bottom--lg"},n.createElement(k,{item:t}))})))}},46494:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var n=a(87462),o=a(63366),i=(a(67294),a(3905)),s=(a(47940),a(35703)),r=(a(52991),["components"]),l={id:"learn-guides-nominator",title:"Polkadot-JS Guides For Nominators",sidebar_label:"Nominator Guides",description:"Polkadot-JS Guides for Nominators.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js"],slug:"../learn-guides-nominator"},d=void 0,c={unversionedId:"learn/learn-guides-nominator",id:"learn/learn-guides-nominator",title:"Polkadot-JS Guides For Nominators",description:"Polkadot-JS Guides for Nominators.",source:"@site/../docs/learn/learn-guides-nominator.md",sourceDirName:"learn",slug:"/learn-guides-nominator",permalink:"/docs/learn-guides-nominator",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-nominator.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-nominator",title:"Polkadot-JS Guides For Nominators",sidebar_label:"Nominator Guides",description:"Polkadot-JS Guides for Nominators.",keyword:["nominate","stake","staking","claim","rewards","polkadot-js"],slug:"../learn-guides-nominator"},sidebar:"docs",previous:{title:"Staking Guides",permalink:"/docs/learn-guides-staking"},next:{title:"Nomination Pool Guides",permalink:"/docs/learn-guides-staking-pools"}},u={},p=[{value:"Nominate Using Polkadot-JS",id:"nominate-using-polkadot-js",level:2},{value:"Bond your tokens",id:"bond-your-tokens",level:3},{value:"Nominate a validator",id:"nominate-a-validator",level:3},{value:"Stop nominating",id:"stop-nominating",level:3},{value:"Claiming Rewards with Polkadot-JS",id:"claiming-rewards-with-polkadot-js",level:2},{value:"Using Command-Line Interface (CLI)",id:"using-command-line-interface-cli",level:2},{value:"Step 1: Install @polkadot/api-cli",id:"step-1-install-polkadotapi-cli",level:3},{value:"Step 2: Bond Tokens",id:"step-2-bond-tokens",level:3},{value:"Step 3: Nominate a validator",id:"step-3-nominate-a-validator",level:3}],m={toc:p},k="wrapper";function h(t){var e=t.components,l=(0,o.Z)(t,r);return(0,i.kt)(k,(0,n.Z)({},m,l,{components:e,mdxType:"MDXLayout"}),(0,i.kt)(s.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"this page")," to learn about staking."),(0,i.kt)("h2",{id:"nominate-using-polkadot-js"},"Nominate Using Polkadot-JS"),(0,i.kt)("admonition",{title:"Video Tutorials",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://youtu.be/FCXC0CDhyS4?t=219"},"How to Nominate/Stake")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://youtu.be/7VlTncHCGPc"},"Staking with a Ledger device and Polkadot-JS")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=jL-N_IWiYVA"},"Staking with a Ledger device and Ledger Live")))),(0,i.kt)("h3",{id:"bond-your-tokens"},"Bond your tokens"),(0,i.kt)("admonition",{title:"Support Article",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Read the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000168057-polkadot-js-ui-how-do-i-stake-nominate-on-polkadot-"},"How to Bond Tokens and Nominate"),".")),(0,i.kt)("p",null,"On the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot-JS UI"),' navigate to the "Staking" tab (within the\n"Network" menu).'),(0,i.kt)("p",null,'The "Staking Overview" subsection will show you all the active validators and their information -\ntheir identities, the amount of KSM that are staking for them, amount that is their own provided\nstake, how much they charge in commission, the era points they\'ve earned in the current era, and the\nlast block number that they produced. If you click on the chart button it will take you to the\n"Validator Stats" page for that validator that shows you more detailed and historical information\nabout the validator\'s stake, rewards and slashes.'),(0,i.kt)("p",null,'The "Account actions" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/actions"},"link"),") allows you\nto stake and nominate."),(0,i.kt)("p",null,'The "Payouts" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/payouts"},"link"),") allows you to\nclaim rewards from staking."),(0,i.kt)("p",null,'The "Targets" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/targets"},"link"),") will help you\nestimate your earnings and this is where it's good to start picking favorites."),(0,i.kt)("p",null,'The "Waiting" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/waiting"},"link"),") lists all pending\nvalidators that are awaiting more nominations to enter the active validator set. Validators will\nstay in the waiting queue until they have enough KSM backing them (as allocated through the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n election mechanism"),"). It is possible validator can remain in the\nqueue for a very long time if they never get enough backing."),(0,i.kt)("p",null,'The "Validator Stats" subsection (',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/query"},"link"),") allows you\nto query a validator's stash address and see historical charts on era points, elected stake,\nrewards, and slashes."),(0,i.kt)("p",null,'Pick "Account actions" underneath "Network" > "Staking", then click the "+ Nominator" button.'),(0,i.kt)("p",null,"You will see a modal window that looks like the below:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"nominator-update-1",src:a(86367).Z,width:"2194",height:"1170"})),(0,i.kt)("p",null,'Select a "value bonded" that is ',(0,i.kt)("strong",{parentName:"p"},"less")," than the total amount of KSM you have, so you have some\nleft over to pay transaction fees. Transaction fees are currently at least 0.01 KSM, but they are\ndynamic based on a variety of factors including the load of recent blocks."),(0,i.kt)("p",null,"Also be mindful of the reaping threshold - the amount that must remain in an account lest it be\nburned. That amount is 0.01 in Kusama, so it's recommended to keep at least 0.1 KSM in your account\nto be on the safe side."),(0,i.kt)("p",null,"Choose whatever payment destination that makes sense to you. If you're unsure, you can choose \"Stash\naccount (increase amount at stake)\" to simply accrue the rewards into the amount you're staking and\nearn compound interest."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Payout account selection dropdown with the custom account option highlighted",src:a(42394).Z,width:"742",height:"245"})),(0,i.kt)("h3",{id:"nominate-a-validator"},"Nominate a validator"),(0,i.kt)("admonition",{title:"Support Article",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Read the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000150130-how-do-i-know-which-validators-to-choose-"},"How to Select Validators"),".")),(0,i.kt)("p",null,"You are now bonded. Being bonded means your tokens are locked and could be\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking#slashing"},"slashed")," if the validators you nominate misbehave. All bonded funds\ncan now be distributed to up to 16 validators. Be\ncareful about the validators you choose since you will be slashed if your validator commits an\noffence."),(0,i.kt)("p",null,'Click on "Nominate" on an account you\'ve bonded and you will be presented with another popup asking\nyou to select some validators.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Nominating validators",src:a(47043).Z,width:"2208",height:"982"})),(0,i.kt)("p",null,"Select them, confirm the transaction, and you're done - you are now nominating. Your nominations\nwill become active in the next era. Eras last six hours on Kusama - depending on when you do this,\nyour nominations may become active almost immediately, or you may have to wait almost the entire six\nhours before your nominations are active. You can check how far along Kusama is in the current era\non the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking"},"Staking page"),"."),(0,i.kt)("p",null,"Assuming at least one of your nominations ends up in the active validator set, you will start to get\nrewards allocated to you. In order to claim them (i.e., add them to your account), you must manually\nclaim them. To initiate a claim, you can do it yourself or have the validator that you staked for\ninitiate a claim. This is to help optimize the effectiveness and storage of payouts on Kusama. See\nthe ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-staking#claiming-rewards"},"Claiming Rewards")," section of the Staking wiki page for\nmore details."),(0,i.kt)("h3",{id:"stop-nominating"},"Stop nominating"),(0,i.kt)("admonition",{title:"Support Article",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Read the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000167902-how-can-i-unstake-my-tokens-again-"},"How to Stop Nominating & Unbond Tokens"),".\nSee also the support article about\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170241-polkadot-js-ui-how-to-rebond-tokens-during-the-unbonding-period"},"How to Rebond Tokens"),".")),(0,i.kt)("p",null,"At some point, you might decide to stop nominating one or more validators. You can always change who\nyou're nominating, but you cannot withdraw your tokens unless you unbond them."),(0,i.kt)("h2",{id:"claiming-rewards-with-polkadot-js"},"Claiming Rewards with Polkadot-JS"),(0,i.kt)("p",null,"Anyone can trigger a payout for any validator, as long as they are willing to pay the transaction\nfee. Someone must submit a transaction with a validator ID and an era index.\nPolkadot will automatically calculate that\nvalidator's reward and distribute the rewards pro rata."),(0,i.kt)("p",null,"These details are handled for you automatically if you use the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/payout"},"Polkadot-JS UI"),", which also allows you to submit\nbatches of eras at once."),(0,i.kt)("p",null,'To claim rewards on Polkadot-JS UI, you will need to be in the "Payouts" tab underneath "Staking",\nwhich will list all the pending payouts for your stashes.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"pending-payouts",src:a(26416).Z,width:"2876",height:"600"})),(0,i.kt)("p",null,'To then claim your reward, select the "Payout all" button. This will prompt you to select your stash\naccounts for payout.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"select-payouts",src:a(32348).Z,width:"2192",height:"624"})),(0,i.kt)("p",null,"Once you are done with payout, another screen will appear asking for you to sign and submit the\ntransaction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"transaction-payouts",src:a(41083).Z,width:"2878",height:"818"})),(0,i.kt)("h2",{id:"using-command-line-interface-cli"},"Using Command-Line Interface (CLI)"),(0,i.kt)("p",null,"Apart from using the Polkadot-JS UI to participate in the staking, you can do all these things in\nCLI instead. The CLI approach allows you to interact with the\nPolkadot network without using Polkadot-JS."),(0,i.kt)("h3",{id:"step-1-install-polkadotapi-cli"},"Step 1: Install @polkadot/api-cli"),(0,i.kt)("p",null,"We assume you have installed ",(0,i.kt)("a",{parentName:"p",href:"https://nodejs.org"},"NodeJS with npm"),". Run the following command to\ninstall the ",(0,i.kt)("inlineCode",{parentName:"p"},"@polkadot/api-cli")," globally:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm install -g @polkadot/api-cli\n")),(0,i.kt)("h3",{id:"step-2-bond-tokens"},"Step 2: Bond Tokens"),(0,i.kt)("admonition",{title:"Controller accounts are deprecated",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Controller accounts are deprecated. For more information, see\n",(0,i.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748"},"this discussion"),".")),(0,i.kt)("p",null,"Executing the following command:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "MNEMONIC_PHRASE" tx.staking.bond CONTROLLER_ADDRESS NUMBER_OF_TOKENS REWARD_DESTINATION --ws WEBSOCKET_ENDPOINT\n')),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"CONTROLLER_ADDRESS"),": An address you would like to bond to the stash account. (Controller accounts\nare now deprecated. Refer to\n",(0,i.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/staking-controller-deprecation-plan-staking-ui-leads-comms/2748"},"this discussion"),"\nfor additional context)"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"NUMBER_OF_TOKENS"),": The number of DOT you would\nlike to stake to the network.\nDOT has ten decimal places and is always represented as an integer with zeroes at the end. So 1 DOT = 10_000_000_000 Plancks. For more information, see ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"this page"),"."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"REWARD_DESTINATION"),":"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Staked")," - Pay into the stash account, increasing the amount at stake accordingly."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Stash")," - Pay into the stash account, not increasing the amount at stake."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Account")," - Pay into a custom account, like so:\n",(0,i.kt)("inlineCode",{parentName:"li"},"Account 1n8msHozaNxHicWFnRnNXzvqkYPWczkzUUkHhKw6o2BLBdo"),"","."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Controller")," - Pay into the controller account.")),(0,i.kt)("p",null,"Example for Kusama:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "xxxx xxxxx xxxx xxxxx" tx.staking.bond DMTHrNcmA8QbqRS4rBq8LXn8ipyczFoNMb1X4cY2WD9tdBX 1000000000000 Staked --ws wss://kusama-rpc.polkadot.io\n')),(0,i.kt)("p",null,"For wss endpoints see ",(0,i.kt)("a",{parentName:"p",href:"/docs/maintain-endpoints"},"this page"),"."),(0,i.kt)("p",null,"Result:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'...\n...\n "status": {\n "InBlock": "0x0ed1ec0ba69564e8f98958d69f826adef895b5617366a32a3aa384290e98514e"\n }\n')),(0,i.kt)("p",null,"You can check the transaction status by using the value of the ",(0,i.kt)("inlineCode",{parentName:"p"},"InBlock")," in\n",(0,i.kt)("a",{parentName:"p",href:"https://www.subscan.io/"},"Subscan"),". Also, you can verify the bonding state under the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/staking/actions"},"Staking")," page on the Polkadot-JS UI."),(0,i.kt)("h3",{id:"step-3-nominate-a-validator"},"Step 3: Nominate a validator"),(0,i.kt)("p",null,"To nominate a validator, you can execute the following command:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "MNEMONIC_PHRASE" tx.staking.nominate \'["VALIDATOR_ADDRESS"]\' --ws WS_ENDPOINT\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'polkadot-js-api --seed "xxxx xxxxx xxxx xxxxx" tx.staking.nominate \'["CmD9vaMYoiKe7HiFnfkftwvhKbxN9bhyjcDrfFRGbifJEG8","E457XaKbj2yTB2URy8N4UuzmyuFRkcdxYs67UvSgVr7HyFb"]\' --ws wss://kusama-rpc.polkadot.io\n')),(0,i.kt)("p",null,"After a few seconds, you should see the hash of the transaction, and if you would like to verify the\nnomination status, you can check that on the Polkadot-JS UI as well."))}h.isMDXComponent=!0},86367:(t,e,a)=>{"use strict";a.d(e,{Z:()=>n});const n=a.p+"assets/images/kusama_nominator_popup-633f75e8b404699f33b7d78f5ad7fd34.png"},47043:(t,e,a)=>{"use strict";a.d(e,{Z:()=>n});const n=a.p+"assets/images/kusama_nominator_selection-8e7c4058648339294ebce2e1ce0c58e8.png"},42394:(t,e,a)=>{"use strict";a.d(e,{Z:()=>n});const n=a.p+"assets/images/01-cc60f0cb7494041501c0ed80e5dca352.png"},41083:(t,e,a)=>{"use strict";a.d(e,{Z:()=>n});const n=a.p+"assets/images/polkadotjs_payout_complete-87ad124d5d70e50c16f1434074562d70.png"},26416:(t,e,a)=>{"use strict";a.d(e,{Z:()=>n});const n=a.p+"assets/images/polkadotjs_payout_page-fc4f62399f71b542e9eaac01405ef528.png"},32348:(t,e,a)=>{"use strict";a.d(e,{Z:()=>n});const n=a.p+"assets/images/polkadotjs_payout_popup-feb847cdfae64f3fa247cdb2beea4ba6.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/84ede15a.051917ce.js b/assets/js/84ede15a.051917ce.js deleted file mode 100644 index bb3abe3e8aac..000000000000 --- a/assets/js/84ede15a.051917ce.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[4338],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>p});var n=a(74165),o=a(15861),r=a(67294),i=a(87152),s=a(9712),l=a(67425);function u(e,t,a){return c.apply(this,arguments)}function c(){return(c=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var r,l,u,c,d;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return u=new i.U(r),e.next=21,s.G.create({provider:u});case 21:c=e.sent,(d=a.split(".")).forEach((function(e){e in c&&(c=c[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=c.toString(),e.abrupt("break",35);case 29:return e.next=31,c();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,a,n){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,n);break;case"precise":(0,l.Precise)(e,a,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,a);break;case"percentage":(0,l.Percentage)(e,n);break;case"permillToPercent":(0,l.PermillToPercent)(e,n);break;case"arrayLength":(0,l.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,a=e.path,i=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,c=(0,r.useState)(""),p=c[0],h=c[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(i.toString(),l,t,h):h(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,n.Z)().mark((function e(){var o;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t,a,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),p}},67425:e=>{var t="polkadot",a="kusama",n="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,s){var l=void 0;if(i===t||i===o)l=3;else{if(i!==a&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/r[i].precision)?e/r[i].precision+" "+r[i].symbol:(e/r[i].precision).toFixed(l)+" "+r[i].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,i){var s=void 0;if(i===t||i===o)s=1;else{if(i!==a&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},52991:(e,t,a)=>{"use strict";a.d(t,{Z:()=>m});var n=a(67294),o=a(86010),r=a(53438),i=a(39960),s=a(13919),l=a(95999);const u={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function c(e){var t=e.href,a=e.children;return n.createElement(i.Z,{href:t,className:(0,o.Z)("card padding--lg",u.cardContainer)},a)}function d(e){var t=e.href,a=e.icon,r=e.title,i=e.description;return n.createElement(c,{href:t},n.createElement("h2",{className:(0,o.Z)("text--truncate",u.cardTitle),title:r},a," ",r),i&&n.createElement("p",{className:(0,o.Z)("text--truncate",u.cardDescription),title:i},i))}function p(e){var t,a=e.item,o=(0,r.Wl)(a);return o?n.createElement(d,{href:o,icon:"\ud83d\uddc3\ufe0f",title:a.label,description:null!=(t=a.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:a.items.length})}):null}function h(e){var t,a,o=e.item,i=(0,s.Z)(o.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,r.xz)(null!=(t=o.docId)?t:void 0);return n.createElement(d,{href:o.href,icon:i,title:o.label,description:null!=(a=o.description)?a:null==l?void 0:l.description})}function k(e){var t=e.item;switch(t.type){case"link":return n.createElement(h,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function f(e){var t=e.className,a=(0,r.jA)();return n.createElement(m,{items:a.items,className:t})}function m(e){var t=e.items,a=e.className;if(!t)return n.createElement(f,e);var i=(0,r.MN)(t);return n.createElement("section",{className:(0,o.Z)("row",a)},i.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(k,{item:e}))})))}},85162:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});var n=a(67294),o=a(86010);const r={tabItem:"tabItem_Ymn6"};function i(e){var t=e.children,a=e.hidden,i=e.className;return n.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,i),hidden:a},t)}},74866:(e,t,a)=>{"use strict";a.d(t,{Z:()=>y});var n=a(87462),o=a(67294),r=a(86010),i=a(12466),s=a(16550),l=a(91980),u=a(67392),c=a(50012);function d(e){return function(e){var t,a;return null!=(t=null==(a=o.Children.map(e,(function(e){if(!e||(0,o.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:a.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,a=e.children;return(0,o.useMemo)((function(){var e=null!=t?t:d(a);return function(e){var t=(0,u.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,a])}function h(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function k(e){var t=e.queryString,a=void 0!==t&&t,n=e.groupId,r=(0,s.k6)(),i=function(e){var t=e.queryString,a=void 0!==t&&t,n=e.groupId;if("string"==typeof a)return a;if(!1===a)return null;if(!0===a&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=n?n:null}({queryString:a,groupId:n});return[(0,l._X)(i),(0,o.useCallback)((function(e){if(i){var t=new URLSearchParams(r.location.search);t.set(i,e),r.replace(Object.assign({},r.location,{search:t.toString()}))}}),[i,r])]}function f(e){var t,a,n,r,i=e.defaultValue,s=e.queryString,l=void 0!==s&&s,u=e.groupId,d=p(e),f=(0,o.useState)((function(){return function(e){var t,a=e.defaultValue,n=e.tabValues;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(a){if(!h({value:a,tabValues:n}))throw new Error('Docusaurus error: The has a defaultValue "'+a+'" but none of its children has the corresponding value. Available values are: '+n.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return a}var o=null!=(t=n.find((function(e){return e.default})))?t:n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:i,tabValues:d})})),m=f[0],g=f[1],v=k({queryString:l,groupId:u}),b=v[0],w=v[1],y=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:u}.groupId),a=(0,c.Nk)(t),n=a[0],r=a[1],[n,(0,o.useCallback)((function(e){t&&r.set(e)}),[t,r])]),N=y[0],x=y[1],T=function(){var e=null!=b?b:N;return h({value:e,tabValues:d})?e:null}();return(0,o.useLayoutEffect)((function(){T&&g(T)}),[T]),{selectedValue:m,selectValue:(0,o.useCallback)((function(e){if(!h({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);g(e),w(e),x(e)}),[w,x,d]),tabValues:d}}var m=a(72389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){var t=e.className,a=e.block,s=e.selectedValue,l=e.selectValue,u=e.tabValues,c=[],d=(0,i.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,a=c.indexOf(t),n=u[a].value;n!==s&&(d(t),l(n))},h=function(e){var t,a=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var n,o=c.indexOf(e.currentTarget)+1;a=null!=(n=c[o])?n:c[0];break;case"ArrowLeft":var r,i=c.indexOf(e.currentTarget)-1;a=null!=(r=c[i])?r:c[c.length-1]}null==(t=a)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":a},t)},u.map((function(e){var t=e.value,a=e.label,i=e.attributes;return o.createElement("li",(0,n.Z)({role:"tab",tabIndex:s===t?0:-1,"aria-selected":s===t,key:t,ref:function(e){return c.push(e)},onKeyDown:h,onClick:p},i,{className:(0,r.Z)("tabs__item",g.tabItem,null==i?void 0:i.className,{"tabs__item--active":s===t})}),null!=a?a:t)})))}function b(e){var t=e.lazy,a=e.children,n=e.selectedValue,r=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){var i=r.find((function(e){return e.props.value===n}));return i?(0,o.cloneElement)(i,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map((function(e,t){return(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==n})})))}function w(e){var t=f(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",g.tabList)},o.createElement(v,(0,n.Z)({},e,t)),o.createElement(b,(0,n.Z)({},e,t)))}function y(e){var t=(0,m.Z)();return o.createElement(w,(0,n.Z)({key:String(t)},e))}},6555:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>f,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=a(47940),s=(a(74866),a(85162),a(52991),["components"]),l={id:"learn-guides-transfers",title:"Polkadot-JS Guides about Transfers",sidebar_label:"Transfer Guides",description:"Polkadot-JS Guides about Balances Transfers.",keywords:["gides","advanced","polkadot-js","transfers"],slug:"../learn-guides-transfers"},u=void 0,c={unversionedId:"learn/learn-guides-transfers",id:"learn/learn-guides-transfers",title:"Polkadot-JS Guides about Transfers",description:"Polkadot-JS Guides about Balances Transfers.",source:"@site/../docs/learn/learn-guides-transfers.md",sourceDirName:"learn",slug:"/learn-guides-transfers",permalink:"/docs/learn-guides-transfers",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-transfers.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1712558849,formattedLastUpdatedAt:"Apr 8, 2024",frontMatter:{id:"learn-guides-transfers",title:"Polkadot-JS Guides about Transfers",sidebar_label:"Transfer Guides",description:"Polkadot-JS Guides about Balances Transfers.",keywords:["gides","advanced","polkadot-js","transfers"],slug:"../learn-guides-transfers"},sidebar:"docs",previous:{title:"Pure Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy-pure"},next:{title:"Staking Guides",permalink:"/docs/learn-guides-staking"}},d={},p=[{value:"Metadata Updates with the Polkadot-JS Browser Extension",id:"metadata-updates-with-the-polkadot-js-browser-extension",level:2},{value:"Transfers using the Polkadot-JS UI and Browser Extension",id:"transfers-using-the-polkadot-js-ui-and-browser-extension",level:2},{value:"Verify Extrinsics with the Polkadot-JS Browser Extension",id:"verify-extrinsics-with-the-polkadot-js-browser-extension",level:3},{value:"Verify Extrinsics with the Polkadot-JS UI",id:"verify-extrinsics-with-the-polkadot-js-ui",level:3},{value:"Keep-Alive Checks with the Polkadot-JS UI",id:"keep-alive-checks-with-the-polkadot-js-ui",level:3},{value:"Vested Transfers with the Polkadot-JS UI",id:"vested-transfers-with-the-polkadot-js-ui",level:3},{value:"Lazy Vesting",id:"lazy-vesting",level:4},{value:"Calculating When Vesting DOT Will Be Available",id:"calculating-when-vesting-dot-will-be-available",level:4},{value:"Batch Transfers with the Polkadot-JS UI",id:"batch-transfers-with-the-polkadot-js-ui",level:3},{value:"Teleporting Tokens using the Polkadot-JS UI",id:"teleporting-tokens-using-the-polkadot-js-ui",level:3},{value:"Calculating Fees with Polkadot-JS",id:"calculating-fees-with-polkadot-js",level:2},{value:"Existing Reference Error",id:"existing-reference-error",level:2},{value:"Bonded Tokens",id:"bonded-tokens",level:3},{value:"Checking for Locks",id:"checking-for-locks",level:3},{value:"Purging Session Keys",id:"purging-session-keys",level:3},{value:"Existing Recovery Info",id:"existing-recovery-info",level:3},{value:"Existing Non-Native Assets",id:"existing-non-native-assets",level:3}],h={toc:p},k="wrapper";function f(e){var t=e.components,l=(0,o.Z)(e,s);return(0,r.kt)(k,(0,n.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,r.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,r.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,r.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,r.kt)("h2",{id:"metadata-updates-with-the-polkadot-js-browser-extension"},"Metadata Updates with the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"Before signing extrinsics with the Polkadot-JS Browser Extension, always check for metadata updates.\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=84"},(0,r.kt)("strong",{parentName:"a"},"This video tutorial"))," will explain how to do it."),(0,r.kt)("admonition",{title:"Polkadot Vault vs Polkadot-JS Browser Extension",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Vault app updates the full metadata through the QR fountain while the extension updates\nthe metadata index (the metadata is not loaded into it). As a consequence the process of updating\nmetadata is different in this two cases (you will notice that on the Vault app the update takes\nlonger for example). Having outdated metadata on the Vault app will prevent you from signing, while\non the extension you will be able to click the sign button but the extrinsic will likely fail\n(similarly of having an outdated Ledger app). In general, failing to update metadata will most\nlikely result in you not being able to sign extrinsics.")),(0,r.kt)("h2",{id:"transfers-using-the-polkadot-js-ui-and-browser-extension"},"Transfers using the Polkadot-JS UI and Browser Extension"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=gbvrHzr4EDY"},"this video tutorial")," to learn how to send funds\nusing the Polkadot-JS UI and Browser Extension. See also the Polkadot Support pages for detailed\ninformation about signing transactions using\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181993-how-to-sign-a-transaction-directly-on-polkadot-js-ui"},"the Polkadot-JS UI"),"\nand\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181989"},"the Polkadot-JS browser extension"),"."),(0,r.kt)("h3",{id:"verify-extrinsics-with-the-polkadot-js-browser-extension"},"Verify Extrinsics with the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"Visit the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-in-the-Polkadot-extension"},(0,r.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=261"},(0,r.kt)("strong",{parentName:"a"},"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."),(0,r.kt)("h3",{id:"verify-extrinsics-with-the-polkadot-js-ui"},"Verify Extrinsics with the Polkadot-JS UI"),(0,r.kt)("p",null,"Visit the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-in-the-Polkadot-JS-UI"},(0,r.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=163"},(0,r.kt)("strong",{parentName:"a"},"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."),(0,r.kt)("h3",{id:"keep-alive-checks-with-the-polkadot-js-ui"},"Keep-Alive Checks with the Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/mgPHVztHJWk"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000168651-what-is-the-existential-deposit-"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn about keep-alive checks and existential deposit.")),(0,r.kt)("p",null,"In Polkadot there are two main ways to\ntransfer funds from one account to another:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"transfer keep-alive")," (default option) will not allow you to send an amount that would allow the\nsending account to be removed due to it going below the\n",(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000168651-what-is-the-existential-deposit-"},"existential deposit"),"\nof\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),".\n",""),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"transfer allow-death")," will allow you to send\nDOT regardless of the consequence. If the\nbalance drops below the existential deposit your account will be reaped. It may be that you do not\nwant to keep the account alive (for example, because you are moving all of your funds to a\ndifferent address). To switch the keep-alive check off visit\n",(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000169248"},"this support article"),".")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Attempting to send less than the existential deposit to an account with\n0 DOT will always fail, no matter if the\nkeep-alive check is on or not. For instance, attempting to transfer\n0.1 DOT to an account you just generated\n(and thus has no balance) will fail, since\n0.1 DOT is less than the existential\ndeposit of\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"\n","\nand the account cannot be initialized with such a low balance."),(0,r.kt)("p",{parentName:"admonition"},"Even if the transfer fails due to a keep-alive check, the transaction fee will be deducted from the\nsending account if you attempt to transfer.")),(0,r.kt)("h3",{id:"vested-transfers-with-the-polkadot-js-ui"},"Vested Transfers with the Polkadot-JS UI"),(0,r.kt)("p",null,"You can watch ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/JVlwTQBwNGc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to understand how to do vested\ntransfers using the Polkadot-JS UI, including linear and cliff vesting. Note the tutorial uses the\nWestend Testnet, but the same applies to\nPolkadot."),(0,r.kt)("p",null,"There are two ways that vesting schedules can be created."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"One way is through an extrinsic type available in the Vesting pallet, ",(0,r.kt)("inlineCode",{parentName:"li"},"vested_transfer"),". The\nvested transfer function allows anyone to create a vesting schedule with a transfer of funds, as\nlong as the account for which the vesting schedule will be created does not already have one and\nthe transfer moves at least ",(0,r.kt)("inlineCode",{parentName:"li"},"MinVestedTransfer")," funds, which is specified as a chain constant."),(0,r.kt)("li",{parentName:"ul"},"A second way is as part of the genesis configuration of the chain. In the case of\nPolkadot, the chain specification genesis\nscript reads the state of the Claims contract that exists on the Ethereum blockchain and creates\nvesting schedules in genesis for all the allocations registered as being vested.")),(0,r.kt)("p",null,"Vesting schedules have three parameters:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"locked"),", the amount of tokens to be transferred in\n",(0,r.kt)("a",{parentName:"li",href:"../learn/learn-DOT#the-planck-unit"},"Planck units"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"per block"),", the number of tokens that are released per block"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"starting block"),", the block number after which the vesting schedule starts")),(0,r.kt)("p",null,"The configuration of these three fields dictates the amount of funds that are originally locked, the\nslope of the unlock line and the block number for when the unlocking begins."),(0,r.kt)("h4",{id:"lazy-vesting"},"Lazy Vesting"),(0,r.kt)("p",null,"Like ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking-advanced"},"simple payouts"),", vesting is ",(0,r.kt)("em",{parentName:"p"},"lazy"),", which means that someone must\nexplicitly call an extrinsic to update the lock that is placed on an account."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"vest")," extrinsic will update the lock that is placed on the caller."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"vest_other"),' will update the lock that is placed on another "target" account\'s funds.')),(0,r.kt)("p",null,"These extrinsics are exposed from the Vesting pallet."),(0,r.kt)("p",null,"If you are using the Polkadot-JS UI, when there are\nDOT available to vest for an account, then you\nwill have the ability to unlock DOT which has\nalready vested from the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Accounts")," page."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"unbond",src:a(27152).Z,width:"241",height:"301"})),(0,r.kt)("h4",{id:"calculating-when-vesting-dot-will-be-available"},"Calculating When Vesting DOT Will Be Available"),(0,r.kt)("p",null,"Generally, you should be able to see from the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Accounts"),' by\nlooking at your accounts and seeing when the vesting will finish. However, some DOT vest with\n"cliffs" - a single block where all the DOT are released, instead of vesting over time. In this\ncase, you will have to query the chain state directly to see when they will be available (since\ntechnically, the vesting has not yet started - all of the vesting will occur in a single block in\nthe future).'),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Navigate to the\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate"},"Chain State")," page on\nPolkadot-JS."),(0,r.kt)("li",{parentName:"ol"},"Query chain state for ",(0,r.kt)("inlineCode",{parentName:"li"},"vesting.vesting(ACCOUNT_ID)")),(0,r.kt)("li",{parentName:"ol"},"Note the ",(0,r.kt)("inlineCode",{parentName:"li"},"startingBlock")," where the unlock starts, and how much DOT is unlocked per block\n(",(0,r.kt)("inlineCode",{parentName:"li"},"perBlock"),")."),(0,r.kt)("li",{parentName:"ol"},'You will have to calculate the result into \u201chuman time". To do this, remember that there are\napproximately 14\u2019400 blocks per day, and you can see what the latest block is shown on the\n',(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/explorer"},"Explorer")," page.")),(0,r.kt)("h3",{id:"batch-transfers-with-the-polkadot-js-ui"},"Batch Transfers with the Polkadot-JS UI"),(0,r.kt)("p",null,"Batch transfers are balances transfers to multiple accounts executed by one account. In order to\nconstruct a batch transfer you need to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Create a ",(0,r.kt)("inlineCode",{parentName:"li"},"utility.batch(calls)")," extrinsic using the\n",(0,r.kt)("a",{parentName:"li",href:"https://paritytech.github.io/substrate/master/pallet_utility/index.html"},"utility pallet"),", and"),(0,r.kt)("li",{parentName:"ul"},"Within the batch call you can create multiple ",(0,r.kt)("inlineCode",{parentName:"li"},"balances.transferKeepAlive")," extrinsics using the\n",(0,r.kt)("a",{parentName:"li",href:"https://paritytech.github.io/substrate/master/pallet_balances/index.html"},"balances pallet"),". You\ncan specify as many receivers as you desire.")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can watch ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/uoUC2K8muvw"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to do batch\ntransfers. Note the tutorial uses the Westend Testnet, but the same applies to both Polkadot and\nKusama.")),(0,r.kt)("h3",{id:"teleporting-tokens-using-the-polkadot-js-ui"},"Teleporting Tokens using the Polkadot-JS UI"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/3tE9ouub5Tg"},"this video tutorial")," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181119-how-to-teleport-dot-or-ksm-between-statemint-or-statemine"},"this additional support article"),"\nto learn more about how to teleport tokens."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},'If you do not see "Accounts > Teleport" in the Polkadot-JS UI, the source chain that you have\nselected does not support teleportation yet.')),(0,r.kt)("h2",{id:"calculating-fees-with-polkadot-js"},"Calculating Fees with Polkadot-JS"),(0,r.kt)("p",null,"One useful utility for estimating transaction fees programmatically is the via the\n",(0,r.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/@polkadot/api"},"@polkadot/api"),". Check out the following script that\nlogs some relevant fee information:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"// Estimate the fees as RuntimeDispatchInfo using the signer\nconst info = await api.tx.balances.transfer(recipient, 123).paymentInfo(sender);\n\n// Log relevant info, partialFee is Balance, estimated for current\nconsole.log(`\n class=${info.class.toString()},\n weight=${info.weight.toString()},\n partialFee=${info.partialFee.toHuman()}\n`);\n")),(0,r.kt)("p",null,"For additional information on interacting with the API, checkout\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs"},"Polkadot-JS"),"."),(0,r.kt)("h2",{id:"existing-reference-error"},"Existing Reference Error"),(0,r.kt)("p",null,"If you are trying to reap an account and you receive an error similar to\n",(0,r.kt)("inlineCode",{parentName:"p"},'"There is an existing reference count on the sender account. As such the account cannot be reaped from the state"'),",\nthen you have existing references to this account that must be first removed before it can be\nreaped. References may still exist from:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Bonded tokens (most likely)"),(0,r.kt)("li",{parentName:"ul"},"Unpurged session keys (if you were previously a validator)"),(0,r.kt)("li",{parentName:"ul"},"Token locks"),(0,r.kt)("li",{parentName:"ul"},"Existing recovery info"),(0,r.kt)("li",{parentName:"ul"},"Existing assets")),(0,r.kt)("h3",{id:"bonded-tokens"},"Bonded Tokens"),(0,r.kt)("p",null,"If you have tokens that are bonded, you will need to unbond them before you can reap your account.\nFollow the instructions at ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-nominator#bond-your-tokens"},"Unbonding and Rebonding"),"\nto check if you have bonded tokens, stop nominating (if necessary) and unbond your tokens."),(0,r.kt)("h3",{id:"checking-for-locks"},"Checking for Locks"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/LHgY7ds_bZ0"},"this video tutorial")," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169437-why-can-t-i-transfer-tokens-"},"this support page"),"\nto learn how to check for locks and remove them.")),(0,r.kt)("p",null,"You can also check for locks by querying ",(0,r.kt)("inlineCode",{parentName:"p"},"system.account(AccountId)")," in\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},(0,r.kt)("inlineCode",{parentName:"a"},"Chain state")," tab under the ",(0,r.kt)("inlineCode",{parentName:"a"},"Developer")," drop-down menu in the Polkadot-JS UI"),'.\nSelect your account, then click the "+" button next to the dropdowns, and check the relative ',(0,r.kt)("inlineCode",{parentName:"p"},"data"),"\nJSON object. If you see a non-zero value for anything other than ",(0,r.kt)("inlineCode",{parentName:"p"},"free"),", you have locks on your\naccount that need to get resolved."),(0,r.kt)("h3",{id:"purging-session-keys"},"Purging Session Keys"),(0,r.kt)("p",null,"If you used this account to set up a validator and you did not purge your keys before unbonding your\ntokens, you need to purge your keys. You can do this by seeing the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-guides-how-to-stop-validating"},"How to Stop Validating")," page. This can also\nbe checked by checking ",(0,r.kt)("inlineCode",{parentName:"p"},"session.nextKeys")," in the chain state for an existing key."),(0,r.kt)("h3",{id:"existing-recovery-info"},"Existing Recovery Info"),(0,r.kt)("p",null,"Currently, Polkadot does not use the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/frame/recovery/"},"Recovery Pallet"),", so this is\nprobably not the reason for your tokens having existing references."),(0,r.kt)("p",null,"","","",""),(0,r.kt)("h3",{id:"existing-non-native-assets"},"Existing Non-Native Assets"),(0,r.kt)("p",null,"Currently, Polkadot does not use the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/assets"},"Assets Pallet"),", so\nthis is probably not the reason for your tokens having existing references."))}f.isMDXComponent=!0},27152:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/unlock-vesting-deefc0d6d9a08a91af1490a82e01069b.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/84ede15a.9e73f8fb.js b/assets/js/84ede15a.9e73f8fb.js new file mode 100644 index 000000000000..2dccf8834793 --- /dev/null +++ b/assets/js/84ede15a.9e73f8fb.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[4338],{35703:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});var n=a(67294);const o=function(e){var t,a=e.message,o=(0,n.useState)(!0),r=o[0],s=o[1];return n.createElement(n.Fragment,null,r&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>p});var n=a(74165),o=a(15861),r=a(67294),s=a(87152),i=a(9712),l=a(67425);function u(e,t,a){return c.apply(this,arguments)}function c(){return(c=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var r,l,u,c,d;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return u=new s.U(r),e.next=21,i.G.create({provider:u});case 21:c=e.sent,(d=a.split(".")).forEach((function(e){e in c&&(c=c[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=c.toString(),e.abrupt("break",35);case 29:return e.next=31,c();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,a,n){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,n);break;case"precise":(0,l.Precise)(e,a,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,a);break;case"percentage":(0,l.Percentage)(e,n);break;case"permillToPercent":(0,l.PermillToPercent)(e,n);break;case"arrayLength":(0,l.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,a=e.path,s=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,c=(0,r.useState)(""),p=c[0],h=c[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(s.toString(),l,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,n.Z)().mark((function e(){var o;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t,a,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",a="kusama",n="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var l=void 0;if(s===t||s===o)l=3;else{if(s!==a&&s!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(l)+" "+r[s].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===o)i=1;else{if(s!==a&&s!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},85162:(e,t,a)=>{"use strict";a.d(t,{Z:()=>s});var n=a(67294),o=a(86010);const r={tabItem:"tabItem_Ymn6"};function s(e){var t=e.children,a=e.hidden,s=e.className;return n.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,s),hidden:a},t)}},74866:(e,t,a)=>{"use strict";a.d(t,{Z:()=>y});var n=a(87462),o=a(67294),r=a(86010),s=a(12466),i=a(16550),l=a(91980),u=a(67392),c=a(50012);function d(e){return function(e){var t,a;return null!=(t=null==(a=o.Children.map(e,(function(e){if(!e||(0,o.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:a.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,a=e.children;return(0,o.useMemo)((function(){var e=null!=t?t:d(a);return function(e){var t=(0,u.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,a])}function h(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function k(e){var t=e.queryString,a=void 0!==t&&t,n=e.groupId,r=(0,i.k6)(),s=function(e){var t=e.queryString,a=void 0!==t&&t,n=e.groupId;if("string"==typeof a)return a;if(!1===a)return null;if(!0===a&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=n?n:null}({queryString:a,groupId:n});return[(0,l._X)(s),(0,o.useCallback)((function(e){if(s){var t=new URLSearchParams(r.location.search);t.set(s,e),r.replace(Object.assign({},r.location,{search:t.toString()}))}}),[s,r])]}function f(e){var t,a,n,r,s=e.defaultValue,i=e.queryString,l=void 0!==i&&i,u=e.groupId,d=p(e),f=(0,o.useState)((function(){return function(e){var t,a=e.defaultValue,n=e.tabValues;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(a){if(!h({value:a,tabValues:n}))throw new Error('Docusaurus error: The has a defaultValue "'+a+'" but none of its children has the corresponding value. Available values are: '+n.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return a}var o=null!=(t=n.find((function(e){return e.default})))?t:n[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:s,tabValues:d})})),m=f[0],g=f[1],v=k({queryString:l,groupId:u}),b=v[0],w=v[1],y=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:u}.groupId),a=(0,c.Nk)(t),n=a[0],r=a[1],[n,(0,o.useCallback)((function(e){t&&r.set(e)}),[t,r])]),N=y[0],x=y[1],T=function(){var e=null!=b?b:N;return h({value:e,tabValues:d})?e:null}();return(0,o.useLayoutEffect)((function(){T&&g(T)}),[T]),{selectedValue:m,selectValue:(0,o.useCallback)((function(e){if(!h({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);g(e),w(e),x(e)}),[w,x,d]),tabValues:d}}var m=a(72389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){var t=e.className,a=e.block,i=e.selectedValue,l=e.selectValue,u=e.tabValues,c=[],d=(0,s.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,a=c.indexOf(t),n=u[a].value;n!==i&&(d(t),l(n))},h=function(e){var t,a=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var n,o=c.indexOf(e.currentTarget)+1;a=null!=(n=c[o])?n:c[0];break;case"ArrowLeft":var r,s=c.indexOf(e.currentTarget)-1;a=null!=(r=c[s])?r:c[c.length-1]}null==(t=a)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":a},t)},u.map((function(e){var t=e.value,a=e.label,s=e.attributes;return o.createElement("li",(0,n.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:function(e){return c.push(e)},onKeyDown:h,onClick:p},s,{className:(0,r.Z)("tabs__item",g.tabItem,null==s?void 0:s.className,{"tabs__item--active":i===t})}),null!=a?a:t)})))}function b(e){var t=e.lazy,a=e.children,n=e.selectedValue,r=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){var s=r.find((function(e){return e.props.value===n}));return s?(0,o.cloneElement)(s,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map((function(e,t){return(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==n})})))}function w(e){var t=f(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",g.tabList)},o.createElement(v,(0,n.Z)({},e,t)),o.createElement(b,(0,n.Z)({},e,t)))}function y(e){var t=(0,m.Z)();return o.createElement(w,(0,n.Z)({key:String(t)},e))}},6555:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>m,frontMatter:()=>u,metadata:()=>d,toc:()=>h});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),s=a(47940),i=(a(74866),a(85162),a(35703)),l=["components"],u={id:"learn-guides-transfers",title:"Polkadot-JS Guides about Transfers",sidebar_label:"Transfer Guides",description:"Polkadot-JS Guides about Balances Transfers.",keywords:["gides","advanced","polkadot-js","transfers"],slug:"../learn-guides-transfers"},c=void 0,d={unversionedId:"learn/learn-guides-transfers",id:"learn/learn-guides-transfers",title:"Polkadot-JS Guides about Transfers",description:"Polkadot-JS Guides about Balances Transfers.",source:"@site/../docs/learn/learn-guides-transfers.md",sourceDirName:"learn",slug:"/learn-guides-transfers",permalink:"/docs/learn-guides-transfers",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-transfers.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-transfers",title:"Polkadot-JS Guides about Transfers",sidebar_label:"Transfer Guides",description:"Polkadot-JS Guides about Balances Transfers.",keywords:["gides","advanced","polkadot-js","transfers"],slug:"../learn-guides-transfers"},sidebar:"docs",previous:{title:"Pure Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy-pure"},next:{title:"Staking Guides",permalink:"/docs/learn-guides-staking"}},p={},h=[{value:"Metadata Updates with the Polkadot-JS Browser Extension",id:"metadata-updates-with-the-polkadot-js-browser-extension",level:2},{value:"Transfers using the Polkadot-JS UI and Browser Extension",id:"transfers-using-the-polkadot-js-ui-and-browser-extension",level:2},{value:"Verify Extrinsics with the Polkadot-JS Browser Extension",id:"verify-extrinsics-with-the-polkadot-js-browser-extension",level:3},{value:"Verify Extrinsics with the Polkadot-JS UI",id:"verify-extrinsics-with-the-polkadot-js-ui",level:3},{value:"Keep-Alive Checks with the Polkadot-JS UI",id:"keep-alive-checks-with-the-polkadot-js-ui",level:3},{value:"Vested Transfers with the Polkadot-JS UI",id:"vested-transfers-with-the-polkadot-js-ui",level:3},{value:"Lazy Vesting",id:"lazy-vesting",level:4},{value:"Calculating When Vesting DOT Will Be Available",id:"calculating-when-vesting-dot-will-be-available",level:4},{value:"Batch Transfers with the Polkadot-JS UI",id:"batch-transfers-with-the-polkadot-js-ui",level:3},{value:"Teleporting Tokens using the Polkadot-JS UI",id:"teleporting-tokens-using-the-polkadot-js-ui",level:3},{value:"Calculating Fees with Polkadot-JS",id:"calculating-fees-with-polkadot-js",level:2},{value:"Existing Reference Error",id:"existing-reference-error",level:2},{value:"Bonded Tokens",id:"bonded-tokens",level:3},{value:"Checking for Locks",id:"checking-for-locks",level:3},{value:"Purging Session Keys",id:"purging-session-keys",level:3},{value:"Existing Recovery Info",id:"existing-recovery-info",level:3},{value:"Existing Non-Native Assets",id:"existing-non-native-assets",level:3}],k={toc:h},f="wrapper";function m(e){var t=e.components,u=(0,o.Z)(e,l);return(0,r.kt)(f,(0,n.Z)({},k,u,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)("h2",{id:"metadata-updates-with-the-polkadot-js-browser-extension"},"Metadata Updates with the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"Before signing extrinsics with the Polkadot-JS Browser Extension, always check for metadata updates.\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=84"},(0,r.kt)("strong",{parentName:"a"},"This video tutorial"))," will explain how to do it."),(0,r.kt)("admonition",{title:"Polkadot Vault vs Polkadot-JS Browser Extension",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Vault app updates the full metadata through the QR fountain while the extension updates\nthe metadata index (the metadata is not loaded into it). As a consequence the process of updating\nmetadata is different in this two cases (you will notice that on the Vault app the update takes\nlonger for example). Having outdated metadata on the Vault app will prevent you from signing, while\non the extension you will be able to click the sign button but the extrinsic will likely fail\n(similarly of having an outdated Ledger app). In general, failing to update metadata will most\nlikely result in you not being able to sign extrinsics.")),(0,r.kt)("h2",{id:"transfers-using-the-polkadot-js-ui-and-browser-extension"},"Transfers using the Polkadot-JS UI and Browser Extension"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=gbvrHzr4EDY"},"this video tutorial")," to learn how to send funds\nusing the Polkadot-JS UI and Browser Extension. See also the Polkadot Support pages for detailed\ninformation about signing transactions using\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181993-how-to-sign-a-transaction-directly-on-polkadot-js-ui"},"the Polkadot-JS UI"),"\nand\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181989"},"the Polkadot-JS browser extension"),"."),(0,r.kt)("h3",{id:"verify-extrinsics-with-the-polkadot-js-browser-extension"},"Verify Extrinsics with the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"Visit the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-in-the-Polkadot-extension"},(0,r.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=261"},(0,r.kt)("strong",{parentName:"a"},"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."),(0,r.kt)("h3",{id:"verify-extrinsics-with-the-polkadot-js-ui"},"Verify Extrinsics with the Polkadot-JS UI"),(0,r.kt)("p",null,"Visit the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-in-the-Polkadot-JS-UI"},(0,r.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=163"},(0,r.kt)("strong",{parentName:"a"},"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."),(0,r.kt)("h3",{id:"keep-alive-checks-with-the-polkadot-js-ui"},"Keep-Alive Checks with the Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/mgPHVztHJWk"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000168651-what-is-the-existential-deposit-"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn about keep-alive checks and existential deposit.")),(0,r.kt)("p",null,"In Polkadot there are two main ways to\ntransfer funds from one account to another:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"transfer keep-alive")," (default option) will not allow you to send an amount that would allow the\nsending account to be removed due to it going below the\n",(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000168651-what-is-the-existential-deposit-"},"existential deposit"),"\nof\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),".\n",""),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"transfer allow-death")," will allow you to send\nDOT regardless of the consequence. If the\nbalance drops below the existential deposit your account will be reaped. It may be that you do not\nwant to keep the account alive (for example, because you are moving all of your funds to a\ndifferent address). To switch the keep-alive check off visit\n",(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000169248"},"this support article"),".")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Attempting to send less than the existential deposit to an account with\n0 DOT will always fail, no matter if the\nkeep-alive check is on or not. For instance, attempting to transfer\n0.1 DOT to an account you just generated\n(and thus has no balance) will fail, since\n0.1 DOT is less than the existential\ndeposit of\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"\n","\nand the account cannot be initialized with such a low balance."),(0,r.kt)("p",{parentName:"admonition"},"Even if the transfer fails due to a keep-alive check, the transaction fee will be deducted from the\nsending account if you attempt to transfer.")),(0,r.kt)("h3",{id:"vested-transfers-with-the-polkadot-js-ui"},"Vested Transfers with the Polkadot-JS UI"),(0,r.kt)("p",null,"You can watch ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/JVlwTQBwNGc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to understand how to do vested\ntransfers using the Polkadot-JS UI, including linear and cliff vesting. Note the tutorial uses the\nWestend Testnet, but the same applies to\nPolkadot."),(0,r.kt)("p",null,"There are two ways that vesting schedules can be created."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"One way is through an extrinsic type available in the Vesting pallet, ",(0,r.kt)("inlineCode",{parentName:"li"},"vested_transfer"),". The\nvested transfer function allows anyone to create a vesting schedule with a transfer of funds, as\nlong as the account for which the vesting schedule will be created does not already have one and\nthe transfer moves at least ",(0,r.kt)("inlineCode",{parentName:"li"},"MinVestedTransfer")," funds, which is specified as a chain constant."),(0,r.kt)("li",{parentName:"ul"},"A second way is as part of the genesis configuration of the chain. In the case of\nPolkadot, the chain specification genesis\nscript reads the state of the Claims contract that exists on the Ethereum blockchain and creates\nvesting schedules in genesis for all the allocations registered as being vested.")),(0,r.kt)("p",null,"Vesting schedules have three parameters:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"locked"),", the amount of tokens to be transferred in\n",(0,r.kt)("a",{parentName:"li",href:"../learn/learn-DOT#the-planck-unit"},"Planck units"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"per block"),", the number of tokens that are released per block"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"starting block"),", the block number after which the vesting schedule starts")),(0,r.kt)("p",null,"The configuration of these three fields dictates the amount of funds that are originally locked, the\nslope of the unlock line and the block number for when the unlocking begins."),(0,r.kt)("h4",{id:"lazy-vesting"},"Lazy Vesting"),(0,r.kt)("p",null,"Like ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking-advanced"},"simple payouts"),", vesting is ",(0,r.kt)("em",{parentName:"p"},"lazy"),", which means that someone must\nexplicitly call an extrinsic to update the lock that is placed on an account."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"vest")," extrinsic will update the lock that is placed on the caller."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"vest_other"),' will update the lock that is placed on another "target" account\'s funds.')),(0,r.kt)("p",null,"These extrinsics are exposed from the Vesting pallet."),(0,r.kt)("p",null,"If you are using the Polkadot-JS UI, when there are\nDOT available to vest for an account, then you\nwill have the ability to unlock DOT which has\nalready vested from the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Accounts")," page."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"unbond",src:a(27152).Z,width:"241",height:"301"})),(0,r.kt)("h4",{id:"calculating-when-vesting-dot-will-be-available"},"Calculating When Vesting DOT Will Be Available"),(0,r.kt)("p",null,"Generally, you should be able to see from the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Accounts"),' by\nlooking at your accounts and seeing when the vesting will finish. However, some DOT vest with\n"cliffs" - a single block where all the DOT are released, instead of vesting over time. In this\ncase, you will have to query the chain state directly to see when they will be available (since\ntechnically, the vesting has not yet started - all of the vesting will occur in a single block in\nthe future).'),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Navigate to the\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate"},"Chain State")," page on\nPolkadot-JS."),(0,r.kt)("li",{parentName:"ol"},"Query chain state for ",(0,r.kt)("inlineCode",{parentName:"li"},"vesting.vesting(ACCOUNT_ID)")),(0,r.kt)("li",{parentName:"ol"},"Note the ",(0,r.kt)("inlineCode",{parentName:"li"},"startingBlock")," where the unlock starts, and how much DOT is unlocked per block\n(",(0,r.kt)("inlineCode",{parentName:"li"},"perBlock"),")."),(0,r.kt)("li",{parentName:"ol"},'You will have to calculate the result into \u201chuman time". To do this, remember that there are\napproximately 14\u2019400 blocks per day, and you can see what the latest block is shown on the\n',(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/explorer"},"Explorer")," page.")),(0,r.kt)("h3",{id:"batch-transfers-with-the-polkadot-js-ui"},"Batch Transfers with the Polkadot-JS UI"),(0,r.kt)("p",null,"Batch transfers are balances transfers to multiple accounts executed by one account. In order to\nconstruct a batch transfer you need to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Create a ",(0,r.kt)("inlineCode",{parentName:"li"},"utility.batch(calls)")," extrinsic using the\n",(0,r.kt)("a",{parentName:"li",href:"https://paritytech.github.io/substrate/master/pallet_utility/index.html"},"utility pallet"),", and"),(0,r.kt)("li",{parentName:"ul"},"Within the batch call you can create multiple ",(0,r.kt)("inlineCode",{parentName:"li"},"balances.transferKeepAlive")," extrinsics using the\n",(0,r.kt)("a",{parentName:"li",href:"https://paritytech.github.io/substrate/master/pallet_balances/index.html"},"balances pallet"),". You\ncan specify as many receivers as you desire.")),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can watch ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/uoUC2K8muvw"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to do batch\ntransfers. Note the tutorial uses the Westend Testnet, but the same applies to both Polkadot and\nKusama.")),(0,r.kt)("h3",{id:"teleporting-tokens-using-the-polkadot-js-ui"},"Teleporting Tokens using the Polkadot-JS UI"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/3tE9ouub5Tg"},"this video tutorial")," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181119-how-to-teleport-dot-or-ksm-between-statemint-or-statemine"},"this additional support article"),"\nto learn more about how to teleport tokens."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},'If you do not see "Accounts > Teleport" in the Polkadot-JS UI, the source chain that you have\nselected does not support teleportation yet.')),(0,r.kt)("h2",{id:"calculating-fees-with-polkadot-js"},"Calculating Fees with Polkadot-JS"),(0,r.kt)("p",null,"One useful utility for estimating transaction fees programmatically is the via the\n",(0,r.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/@polkadot/api"},"@polkadot/api"),". Check out the following script that\nlogs some relevant fee information:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"// Estimate the fees as RuntimeDispatchInfo using the signer\nconst info = await api.tx.balances.transfer(recipient, 123).paymentInfo(sender);\n\n// Log relevant info, partialFee is Balance, estimated for current\nconsole.log(`\n class=${info.class.toString()},\n weight=${info.weight.toString()},\n partialFee=${info.partialFee.toHuman()}\n`);\n")),(0,r.kt)("p",null,"For additional information on interacting with the API, checkout\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs"},"Polkadot-JS"),"."),(0,r.kt)("h2",{id:"existing-reference-error"},"Existing Reference Error"),(0,r.kt)("p",null,"If you are trying to reap an account and you receive an error similar to\n",(0,r.kt)("inlineCode",{parentName:"p"},'"There is an existing reference count on the sender account. As such the account cannot be reaped from the state"'),",\nthen you have existing references to this account that must be first removed before it can be\nreaped. References may still exist from:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Bonded tokens (most likely)"),(0,r.kt)("li",{parentName:"ul"},"Unpurged session keys (if you were previously a validator)"),(0,r.kt)("li",{parentName:"ul"},"Token locks"),(0,r.kt)("li",{parentName:"ul"},"Existing recovery info"),(0,r.kt)("li",{parentName:"ul"},"Existing assets")),(0,r.kt)("h3",{id:"bonded-tokens"},"Bonded Tokens"),(0,r.kt)("p",null,"If you have tokens that are bonded, you will need to unbond them before you can reap your account.\nFollow the instructions at ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-nominator#bond-your-tokens"},"Unbonding and Rebonding"),"\nto check if you have bonded tokens, stop nominating (if necessary) and unbond your tokens."),(0,r.kt)("h3",{id:"checking-for-locks"},"Checking for Locks"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/LHgY7ds_bZ0"},"this video tutorial")," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169437-why-can-t-i-transfer-tokens-"},"this support page"),"\nto learn how to check for locks and remove them.")),(0,r.kt)("p",null,"You can also check for locks by querying ",(0,r.kt)("inlineCode",{parentName:"p"},"system.account(AccountId)")," in\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},(0,r.kt)("inlineCode",{parentName:"a"},"Chain state")," tab under the ",(0,r.kt)("inlineCode",{parentName:"a"},"Developer")," drop-down menu in the Polkadot-JS UI"),'.\nSelect your account, then click the "+" button next to the dropdowns, and check the relative ',(0,r.kt)("inlineCode",{parentName:"p"},"data"),"\nJSON object. If you see a non-zero value for anything other than ",(0,r.kt)("inlineCode",{parentName:"p"},"free"),", you have locks on your\naccount that need to get resolved."),(0,r.kt)("h3",{id:"purging-session-keys"},"Purging Session Keys"),(0,r.kt)("p",null,"If you used this account to set up a validator and you did not purge your keys before unbonding your\ntokens, you need to purge your keys. You can do this by seeing the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-guides-how-to-stop-validating"},"How to Stop Validating")," page. This can also\nbe checked by checking ",(0,r.kt)("inlineCode",{parentName:"p"},"session.nextKeys")," in the chain state for an existing key."),(0,r.kt)("h3",{id:"existing-recovery-info"},"Existing Recovery Info"),(0,r.kt)("p",null,"Currently, Polkadot does not use the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/frame/recovery/"},"Recovery Pallet"),", so this is\nprobably not the reason for your tokens having existing references."),(0,r.kt)("p",null,"","","",""),(0,r.kt)("h3",{id:"existing-non-native-assets"},"Existing Non-Native Assets"),(0,r.kt)("p",null,"Currently, Polkadot does not use the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/assets"},"Assets Pallet"),", so\nthis is probably not the reason for your tokens having existing references."))}m.isMDXComponent=!0},27152:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/unlock-vesting-deefc0d6d9a08a91af1490a82e01069b.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/89a76fd2.0e17b6e0.js b/assets/js/89a76fd2.0e17b6e0.js deleted file mode 100644 index 564b36e54d9e..000000000000 --- a/assets/js/89a76fd2.0e17b6e0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9771],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>p});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=o.createContext({}),d=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},h=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,h=l(e,["components","mdxType","originalType","parentName"]),c=d(n),m=a,p=c["".concat(s,".").concat(m)]||c[m]||u[m]||i;return n?o.createElement(p,r(r({ref:t},h),{},{components:n})):o.createElement(p,r({ref:t},h))}));function p(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,r=new Array(i);r[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:a,r[1]=l;for(var d=2;d{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>s,default:()=>p,frontMatter:()=>l,metadata:()=>d,toc:()=>c});var o=n(87462),a=n(63366),i=(n(67294),n(3905)),r=["components"],l={id:"learn-redenomination",title:"Redenomination of DOT",sidebar_label:"Redenomination of DOT",description:"Everything about the DOT Token Redenomination.",keywords:["DOT","redenomination"],slug:"../learn-redenomination"},s=void 0,d={unversionedId:"learn/archive/learn-redenomination",id:"learn/archive/learn-redenomination",title:"Redenomination of DOT",description:"Everything about the DOT Token Redenomination.",source:"@site/../docs/learn/archive/learn-redenomination.md",sourceDirName:"learn/archive",slug:"/learn/learn-redenomination",permalink:"/docs/learn/learn-redenomination",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-redenomination.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"learn-redenomination",title:"Redenomination of DOT",sidebar_label:"Redenomination of DOT",description:"Everything about the DOT Token Redenomination.",keywords:["DOT","redenomination"],slug:"../learn-redenomination"},sidebar:"docs",previous:{title:"Polkadot Launch Phases",permalink:"/docs/learn/learn-launch"},next:{title:"Controller Accounts",permalink:"/docs/learn/learn-controller"}},h={},c=[{value:"Origins",id:"origins",level:2},{value:"The Vote",id:"the-vote",level:2},{value:"The Outcome",id:"the-outcome",level:2},{value:"What This Means for the Community",id:"what-this-means-for-the-community",level:3},{value:"What This Means for Builders of Tools",id:"what-this-means-for-builders-of-tools",level:3}],u={toc:c},m="wrapper";function p(e){var t=e.components,l=(0,a.Z)(e,r);return(0,i.kt)(m,(0,o.Z)({},u,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"The content on this page is archived.")),(0,i.kt)("p",null,"On August 21, 2020, the redenomination of DOT, the native token on Polkadot, occurred. From this\ndate, one DOT (old) equals 100 new DOT."),(0,i.kt)("admonition",{title:"Denomination Day",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The DOT redenomination took place on 21 August 2020, known as Denomination Day, at block number\n1_248_328.")),(0,i.kt)("p",null,"While ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"DOT"),' is the unit of currency on Polkadot that most people use when\ninteracting with the system, the smallest unit of account is the Planck. A Planck\'s relation to DOT\nis like the relation of a Satoshi to Bitcoin. Before 21 August, the DOT was denominated as 1e12\nPlancks, that is, twelve decimal places. After Denomination Day, DOT is denominated as 1e10 Plancks,\nas in, ten decimal places. DOT denominated to twelve decimal places is referred to as "DOT (old)"\nand DOT denominated to ten decimal places is generally referred to as "DOT". When the difference\nmust be made explicit, the current ten-decimal-denominated DOT is referred to as "',(0,i.kt)("em",{parentName:"p"},"New DOT"),'".'),(0,i.kt)("admonition",{title:"Redenomination Explainer",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Check out our\n",(0,i.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=xXIcnBV4uUE&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=22&ab_channel=Polkadot"},"technical explainer video that explains more of Redenomination"),".")),(0,i.kt)("p",null,"The change in denomination, henceforth referred to as the ",(0,i.kt)("em",{parentName:"p"},"redenomination"),", was voted on by the\ncommunity of DOT holders. The community decided between four options, to change the DOT denomination\nby a factor of ten, one hundred, one thousand, or not at all. The end result was to change the\ndenomination by a factor of one hundred."),(0,i.kt)("p",null,"The overall effect of this change was that the number of Polkadot's smallest unit, the Planck,\nremained constant, while the DOT balance for all holders was increased by a factor of one hundred.\nAs one can see from the example below, the number of Plancks a user has does not change, only the\nnumber of Plancks that constitute a single DOT. A user with 1_000_000_000_000 Plancks still has the\nsame number of Plancks but will have 100 DOT under the new denomination, as opposed to one DOT under\nthe old denomination."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," Before the change the decimal was here\n v\n 1.000000000000 DOT\n\n 100.0000000000 DOT\n ^\n After the change the decimal is here\n")),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"There are no state changes with redenomination. There are no transfers. The real change regards the\nsocial consensus around where to put the decimal place when we talk about what constitutes a DOT.")),(0,i.kt)("h2",{id:"origins"},"Origins"),(0,i.kt)("p",null,"The initial vote for redenomination occurred as a\n",(0,i.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/referendum/52"},"referendum")," on the Kusama blockchain. The referendum\nwas summarized as having four effects if approved by KSM holders."),(0,i.kt)("admonition",{title:"Referendum Summary",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"The total allocations of DOT will increase one hundred times from 10 million to 1 billion."),(0,i.kt)("li",{parentName:"ul"},"DOT allocation balances will increase by a factor of one hundred, such that 1 DOT will be 100 DOT."),(0,i.kt)("li",{parentName:"ul"},"The distribution of DOT does not change, and holders of DOT still own an equal share of the\nnetwork as before the change."),(0,i.kt)("li",{parentName:"ul"},"The precision of DOT will change from 12 decimal places to 10 decimal places."),(0,i.kt)("li",{parentName:"ul"},"The main benefit of this change is to avoid using small decimals when dealing with DOT and to\nachieve an easier calculation system."))),(0,i.kt)("p",null,"The initial referendum was proposed before the Polkadot genesis block, assuming that making a\nredenomination would be simpler before the Polkadot chain was live. However, many in the community\npointed out the disconnect between the two networks and how it was unfair for holders of DOT to be\nimpacted by a vote by a different token holder set. For this reason, Web3 Foundation\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/results-of-dot-redenomination-referendum/"},"decided to make a new vote on Polkadot"),"\nwhen it went live, although the Kusama vote ended with a majority in favor of the redenomination\nchange."),(0,i.kt)("p",null,"Web3 Foundation summarized the decision not to change:"),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"However, given the non-negligible amount of opposition, including from some within the ranks of Web3\nFoundation and Parity, ",(0,i.kt)("strong",{parentName:"p"},"the Foundation decided that we cannot, in good faith, sponsor the\nredenomination."))),(0,i.kt)("h2",{id:"the-vote"},"The Vote"),(0,i.kt)("p",null,"After the genesis block of Polkadot was created and the network was running with a decentralized\ncommunity of validators securing the network, Web3 Foundation decided to put the redenomination\ntopic up for a vote again. This time, the vote was explicitly binding ","\u2014"," meaning that it would\nbe executed if voted through. In comparison, the vote on Kusama was non-binding to capture a signal\nwithout a direct way to affect the Polkadot chain."),(0,i.kt)("p",null,"Based on the feedback received during the Kusama referendum, the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/the-first-polkadot-vote/"},"Polkadot vote")," was held as an approval vote,\nwith four available options. DOT holders could issue votes for any configuration of the four\noptions: no change, a change of 10x, a change of 100x, or a change of 1000x. The voting logic was\ncontained in a specially-built Substrate pallet included in Polkadot's runtime for this poll."),(0,i.kt)("admonition",{title:"Summary of the Vote",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"Any combination of the four options may have been approved by the voter. There was no need to\nselect only one option."),(0,i.kt)("li",{parentName:"ul"},"Approving all or none of the options was equivalent and did not affect the outcome."),(0,i.kt)("li",{parentName:"ul"},"All voters could alter their votes any number of times before the close of the poll."),(0,i.kt)("li",{parentName:"ul"},"No discretionary lock-voting was in place; all DOT used to vote counts the same."),(0,i.kt)("li",{parentName:"ul"},"Voting was made on a per-account basis; a single account must have voted the same way and could\nnot split its vote."),(0,i.kt)("li",{parentName:"ul"},"This vote did not affect any economics of the Polkadot platform. As in, staking rewards,\ninflation, effective market capitalization, and the underlying balances of every account remained\ncompletely unchanged. It was \u201cmerely\u201d about what units the network uses to denominate the balances\ninto \u201cDOT\u201d."))),(0,i.kt)("p",null,"With a voting period of two weeks set, the redenomination was now in the hands of the Polkadot\ncommunity for a final, binding decision."),(0,i.kt)("h2",{id:"the-outcome"},"The Outcome"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"redenomination",src:n(75421).Z,width:"2000",height:"1000"})),(0,i.kt)("p",null,"After two weeks of voting, the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/the-results-are-in/"},"results")," of the\nredenomination vote were tallied. About one-third of the total DOT in the network participated in\nthe vote. The redenomination proposal passed with 86% of the voters favoring a 100x factor increase\n(or two decimal places of precision loss)."),(0,i.kt)("p",null,"Polkadot's redenomination then took place on 21 August, now known as Denomination Day, at block\n#1_248_328."),(0,i.kt)("h3",{id:"what-this-means-for-the-community"},"What This Means for the Community"),(0,i.kt)("p",null,"If you are a DOT holder or user of the network, then you do not need to take any action. The DOT\nredenomination was a purely front-end change. You still hold the same amount of Plancks after the\nchange, but now it will appear that you hold 100x more DOT. This change applies proportionally to\nevery account."),(0,i.kt)("h3",{id:"what-this-means-for-builders-of-tools"},"What This Means for Builders of Tools"),(0,i.kt)("p",null,"If you are the builder of a tool that consumes the\n",(0,i.kt)("a",{parentName:"p",href:"https://yarnpkg.com/package/@polkadot/api"},(0,i.kt)("inlineCode",{parentName:"a"},"@polkadot/api"))," package ","\u2014"," then there should be no\nreal changes to be made in your application. The denomination is technically a cosmetic change, and\nevery value remains a constant amount of Plancks."),(0,i.kt)("p",null,"However ","\u2014"," if you are a builder of a tool that displays DOT balances to users (e.g. a wallet)\nor handles DOT balances in an off-chain or custodial way, then you will need to ensure that you\ndisplay the correct denomination of DOT to users."),(0,i.kt)("p",null,"Please see our\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1yAzoDh99PgR_7dYAKTWLMVu2Fy5Ga-J6t9lof4f4JUw/edit#"},"Ecosystem Redenomination Guide"),"\nfor recommendations."),(0,i.kt)("p",null,"Please reach out to ",(0,i.kt)("a",{parentName:"p",href:"mailto:support@polkadot.network"},"support@polkadot.network")," if you need any\nassistance in making sure your software is compatible with the redenomination."))}p.isMDXComponent=!0},75421:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/redenomination-49b0f06a8bd85c8944fb35b6fd864759.png"}}]); \ No newline at end of file diff --git a/assets/js/89a76fd2.be039c22.js b/assets/js/89a76fd2.be039c22.js new file mode 100644 index 000000000000..efd6462ea5f5 --- /dev/null +++ b/assets/js/89a76fd2.be039c22.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9771],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>p});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=o.createContext({}),d=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},c=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},h="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),h=d(n),u=a,p=h["".concat(s,".").concat(u)]||h[u]||m[u]||i;return n?o.createElement(p,r(r({ref:t},c),{},{components:n})):o.createElement(p,r({ref:t},c))}));function p(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,r=new Array(i);r[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[h]="string"==typeof e?e:a,r[1]=l;for(var d=2;d{n.d(t,{Z:()=>a});var o=n(67294);const a=function(e){var t,n=e.message,a=(0,o.useState)(!0),i=a[0],r=a[1];return o.createElement(o.Fragment,null,i&&o.createElement("div",{className:"message-box"},o.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),o.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},31703:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>d,default:()=>f,frontMatter:()=>s,metadata:()=>c,toc:()=>m});var o=n(87462),a=n(63366),i=(n(67294),n(3905)),r=n(35703),l=["components"],s={id:"learn-redenomination",title:"Redenomination of DOT",sidebar_label:"Redenomination of DOT",description:"Everything about the DOT Token Redenomination.",keywords:["DOT","redenomination"],slug:"../learn-redenomination"},d=void 0,c={unversionedId:"learn/archive/learn-redenomination",id:"learn/archive/learn-redenomination",title:"Redenomination of DOT",description:"Everything about the DOT Token Redenomination.",source:"@site/../docs/learn/archive/learn-redenomination.md",sourceDirName:"learn/archive",slug:"/learn/learn-redenomination",permalink:"/docs/learn/learn-redenomination",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-redenomination.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-redenomination",title:"Redenomination of DOT",sidebar_label:"Redenomination of DOT",description:"Everything about the DOT Token Redenomination.",keywords:["DOT","redenomination"],slug:"../learn-redenomination"},sidebar:"docs",previous:{title:"Polkadot Launch Phases",permalink:"/docs/learn/learn-launch"},next:{title:"Controller Accounts",permalink:"/docs/learn/learn-controller"}},h={},m=[{value:"Origins",id:"origins",level:2},{value:"The Vote",id:"the-vote",level:2},{value:"The Outcome",id:"the-outcome",level:2},{value:"What This Means for the Community",id:"what-this-means-for-the-community",level:3},{value:"What This Means for Builders of Tools",id:"what-this-means-for-builders-of-tools",level:3}],u={toc:m},p="wrapper";function f(e){var t=e.components,s=(0,a.Z)(e,l);return(0,i.kt)(p,(0,o.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(r.Z,{message:"The content on this page is archived.",mdxType:"MessageBox"}),(0,i.kt)("p",null,"On August 21, 2020, the redenomination of DOT, the native token on Polkadot, occurred. From this\ndate, one DOT (old) equals 100 new DOT."),(0,i.kt)("admonition",{title:"Denomination Day",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The DOT redenomination took place on 21 August 2020, known as Denomination Day, at block number\n1_248_328.")),(0,i.kt)("p",null,"While ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"DOT"),' is the unit of currency on Polkadot that most people use when\ninteracting with the system, the smallest unit of account is the Planck. A Planck\'s relation to DOT\nis like the relation of a Satoshi to Bitcoin. Before 21 August, the DOT was denominated as 1e12\nPlancks, that is, twelve decimal places. After Denomination Day, DOT is denominated as 1e10 Plancks,\nas in, ten decimal places. DOT denominated to twelve decimal places is referred to as "DOT (old)"\nand DOT denominated to ten decimal places is generally referred to as "DOT". When the difference\nmust be made explicit, the current ten-decimal-denominated DOT is referred to as "',(0,i.kt)("em",{parentName:"p"},"New DOT"),'".'),(0,i.kt)("admonition",{title:"Redenomination Explainer",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Check out our\n",(0,i.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=xXIcnBV4uUE&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=22&ab_channel=Polkadot"},"technical explainer video that explains more of Redenomination"),".")),(0,i.kt)("p",null,"The change in denomination, henceforth referred to as the ",(0,i.kt)("em",{parentName:"p"},"redenomination"),", was voted on by the\ncommunity of DOT holders. The community decided between four options, to change the DOT denomination\nby a factor of ten, one hundred, one thousand, or not at all. The end result was to change the\ndenomination by a factor of one hundred."),(0,i.kt)("p",null,"The overall effect of this change was that the number of Polkadot's smallest unit, the Planck,\nremained constant, while the DOT balance for all holders was increased by a factor of one hundred.\nAs one can see from the example below, the number of Plancks a user has does not change, only the\nnumber of Plancks that constitute a single DOT. A user with 1_000_000_000_000 Plancks still has the\nsame number of Plancks but will have 100 DOT under the new denomination, as opposed to one DOT under\nthe old denomination."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"}," Before the change the decimal was here\n v\n 1.000000000000 DOT\n\n 100.0000000000 DOT\n ^\n After the change the decimal is here\n")),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"There are no state changes with redenomination. There are no transfers. The real change regards the\nsocial consensus around where to put the decimal place when we talk about what constitutes a DOT.")),(0,i.kt)("h2",{id:"origins"},"Origins"),(0,i.kt)("p",null,"The initial vote for redenomination occurred as a\n",(0,i.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/referendum/52"},"referendum")," on the Kusama blockchain. The referendum\nwas summarized as having four effects if approved by KSM holders."),(0,i.kt)("admonition",{title:"Referendum Summary",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"The total allocations of DOT will increase one hundred times from 10 million to 1 billion."),(0,i.kt)("li",{parentName:"ul"},"DOT allocation balances will increase by a factor of one hundred, such that 1 DOT will be 100 DOT."),(0,i.kt)("li",{parentName:"ul"},"The distribution of DOT does not change, and holders of DOT still own an equal share of the\nnetwork as before the change."),(0,i.kt)("li",{parentName:"ul"},"The precision of DOT will change from 12 decimal places to 10 decimal places."),(0,i.kt)("li",{parentName:"ul"},"The main benefit of this change is to avoid using small decimals when dealing with DOT and to\nachieve an easier calculation system."))),(0,i.kt)("p",null,"The initial referendum was proposed before the Polkadot genesis block, assuming that making a\nredenomination would be simpler before the Polkadot chain was live. However, many in the community\npointed out the disconnect between the two networks and how it was unfair for holders of DOT to be\nimpacted by a vote by a different token holder set. For this reason, Web3 Foundation\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/results-of-dot-redenomination-referendum/"},"decided to make a new vote on Polkadot"),"\nwhen it went live, although the Kusama vote ended with a majority in favor of the redenomination\nchange."),(0,i.kt)("p",null,"Web3 Foundation summarized the decision not to change:"),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"However, given the non-negligible amount of opposition, including from some within the ranks of Web3\nFoundation and Parity, ",(0,i.kt)("strong",{parentName:"p"},"the Foundation decided that we cannot, in good faith, sponsor the\nredenomination."))),(0,i.kt)("h2",{id:"the-vote"},"The Vote"),(0,i.kt)("p",null,"After the genesis block of Polkadot was created and the network was running with a decentralized\ncommunity of validators securing the network, Web3 Foundation decided to put the redenomination\ntopic up for a vote again. This time, the vote was explicitly binding ","\u2014"," meaning that it would\nbe executed if voted through. In comparison, the vote on Kusama was non-binding to capture a signal\nwithout a direct way to affect the Polkadot chain."),(0,i.kt)("p",null,"Based on the feedback received during the Kusama referendum, the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/the-first-polkadot-vote/"},"Polkadot vote")," was held as an approval vote,\nwith four available options. DOT holders could issue votes for any configuration of the four\noptions: no change, a change of 10x, a change of 100x, or a change of 1000x. The voting logic was\ncontained in a specially-built Substrate pallet included in Polkadot's runtime for this poll."),(0,i.kt)("admonition",{title:"Summary of the Vote",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"Any combination of the four options may have been approved by the voter. There was no need to\nselect only one option."),(0,i.kt)("li",{parentName:"ul"},"Approving all or none of the options was equivalent and did not affect the outcome."),(0,i.kt)("li",{parentName:"ul"},"All voters could alter their votes any number of times before the close of the poll."),(0,i.kt)("li",{parentName:"ul"},"No discretionary lock-voting was in place; all DOT used to vote counts the same."),(0,i.kt)("li",{parentName:"ul"},"Voting was made on a per-account basis; a single account must have voted the same way and could\nnot split its vote."),(0,i.kt)("li",{parentName:"ul"},"This vote did not affect any economics of the Polkadot platform. As in, staking rewards,\ninflation, effective market capitalization, and the underlying balances of every account remained\ncompletely unchanged. It was \u201cmerely\u201d about what units the network uses to denominate the balances\ninto \u201cDOT\u201d."))),(0,i.kt)("p",null,"With a voting period of two weeks set, the redenomination was now in the hands of the Polkadot\ncommunity for a final, binding decision."),(0,i.kt)("h2",{id:"the-outcome"},"The Outcome"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"redenomination",src:n(75421).Z,width:"2000",height:"1000"})),(0,i.kt)("p",null,"After two weeks of voting, the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.network/the-results-are-in/"},"results")," of the\nredenomination vote were tallied. About one-third of the total DOT in the network participated in\nthe vote. The redenomination proposal passed with 86% of the voters favoring a 100x factor increase\n(or two decimal places of precision loss)."),(0,i.kt)("p",null,"Polkadot's redenomination then took place on 21 August, now known as Denomination Day, at block\n#1_248_328."),(0,i.kt)("h3",{id:"what-this-means-for-the-community"},"What This Means for the Community"),(0,i.kt)("p",null,"If you are a DOT holder or user of the network, then you do not need to take any action. The DOT\nredenomination was a purely front-end change. You still hold the same amount of Plancks after the\nchange, but now it will appear that you hold 100x more DOT. This change applies proportionally to\nevery account."),(0,i.kt)("h3",{id:"what-this-means-for-builders-of-tools"},"What This Means for Builders of Tools"),(0,i.kt)("p",null,"If you are the builder of a tool that consumes the\n",(0,i.kt)("a",{parentName:"p",href:"https://yarnpkg.com/package/@polkadot/api"},(0,i.kt)("inlineCode",{parentName:"a"},"@polkadot/api"))," package ","\u2014"," then there should be no\nreal changes to be made in your application. The denomination is technically a cosmetic change, and\nevery value remains a constant amount of Plancks."),(0,i.kt)("p",null,"However ","\u2014"," if you are a builder of a tool that displays DOT balances to users (e.g. a wallet)\nor handles DOT balances in an off-chain or custodial way, then you will need to ensure that you\ndisplay the correct denomination of DOT to users."),(0,i.kt)("p",null,"Please see our\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1yAzoDh99PgR_7dYAKTWLMVu2Fy5Ga-J6t9lof4f4JUw/edit#"},"Ecosystem Redenomination Guide"),"\nfor recommendations."),(0,i.kt)("p",null,"Please reach out to ",(0,i.kt)("a",{parentName:"p",href:"mailto:support@polkadot.network"},"support@polkadot.network")," if you need any\nassistance in making sure your software is compatible with the redenomination."))}f.isMDXComponent=!0},75421:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/redenomination-49b0f06a8bd85c8944fb35b6fd864759.png"}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.7fe65712.js b/assets/js/935f2afb.87b7dfd8.js similarity index 69% rename from assets/js/935f2afb.7fe65712.js rename to assets/js/935f2afb.87b7dfd8.js index 3972f12a4106..bd0d0748495c 100644 --- a/assets/js/935f2afb.7fe65712.js +++ b/assets/js/935f2afb.87b7dfd8.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53],{22624:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Explore","description":"Wallets and Apps in the Polkadot Ecosystem.","items":[{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"general/getting-started"},{"type":"category","label":"Wallets","description":"Beginner friendly wallets with advanced features.","items":[{"type":"link","label":"Polkadot Ecosystem Wallets","description":"Wallets listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/wallets/"},{"type":"link","label":"Wallets and Extensions","href":"/docs/wallets-and-extensions","docId":"general/wallets-and-extensions"},{"type":"link","label":"Ledger","href":"/docs/ledger","docId":"general/ledger"},{"type":"link","label":"Polkadot Vault","href":"/docs/polkadot-vault","docId":"general/polkadot-vault"}],"collapsed":true,"collapsible":true,"href":"/docs/wallets-index"},{"type":"category","label":"Apps","description":"Apps for Staking, Governance, Multisigs, NFTs and many more use cases.","items":[{"type":"link","label":"Polkadot Ecosystem Apps","description":"Apps listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/dapps/"},{"type":"link","label":"DotAppStore","description":"Apps upvoted by the community.","href":"https://dotappstore.com/"},{"type":"link","label":"Staking Apps","href":"/docs/staking-apps","docId":"general/staking-apps"},{"type":"link","label":"Governance Apps","href":"/docs/governance-apps","docId":"general/governance-apps"},{"type":"link","label":"Multisig Apps","href":"/docs/multisig-apps","docId":"general/multisig-apps"},{"type":"link","label":"NFT Projects","href":"/docs/learn-nft-projects","docId":"learn/learn-nft-projects"},{"type":"link","label":"Parachain Apps","href":"/docs/parachains-apps","docId":"general/parachains-apps"}],"collapsed":true,"collapsible":true,"href":"/docs/apps-index"},{"type":"category","label":"Dashboards","description":"Dashboards in the Polkadot Ecosystem.","items":[{"type":"link","label":"Staking Dashboard","href":"/docs/staking-dashboard","docId":"general/staking-dashboard"}],"collapsed":true,"collapsible":true,"href":"/docs/dashboards-index"},{"type":"category","label":"Community & Contributors","description":"Polkadot Community and Wiki Contributors.","items":[{"type":"link","label":"Community","href":"/docs/community","docId":"general/community"},{"type":"link","label":"Contributing to the Wiki","href":"/docs/contributing","docId":"general/contributing"},{"type":"link","label":"Contributors","href":"/docs/contributors","docId":"general/contributors"}],"collapsed":true,"collapsible":true,"href":"/docs/community-index"},{"type":"category","label":"Programs","description":"Programs for Grants, Bounties, Ambassadors and many more inititatives.","items":[{"type":"link","label":"Decentralized Futures","href":"/docs/decentralized-futures","docId":"general/decentralized-futures"},{"type":"link","label":"Decentralized Voices","href":"/docs/decentralized-voices","docId":"general/decentralized-voices"},{"type":"link","label":"Grants","href":"/docs/grants","docId":"general/grants"},{"type":"link","label":"Bug Bounty","href":"/docs/bug-bounty","docId":"general/bug-bounty"},{"type":"link","label":"Polkadot Ambassadors","href":"/docs/ambassadors","docId":"general/ambassadors"},{"type":"link","label":"Alpha Program","href":"/docs/alpha-program","docId":"general/alpha-program"},{"type":"link","label":"Thousand Validators","href":"/docs/thousand-validators","docId":"general/doc-thousand-validators"},{"type":"link","label":"Thousand Contributors","href":"/docs/thousand-contributors","docId":"general/doc-thousand-contributors"},{"type":"link","label":"Developer Heroes","href":"/docs/dev-heroes","docId":"general/dev-heroes"}],"collapsed":true,"collapsible":true,"href":"/docs/programs-index"},{"type":"link","label":"Metadata Explorer","href":"/docs/metadata","docId":"general/metadata"}],"collapsed":true,"collapsible":true,"href":"/docs/explore-index"},{"type":"category","label":"Learn","items":[{"type":"category","label":"General","description":"General Information to get started with Polkadot and Web3.","items":[{"type":"link","label":"Web3 and Polkadot","href":"/docs/web3-and-polkadot","docId":"general/web3-and-polkadot"},{"type":"category","label":"Polkadot Vision","description":"Polkadot\'s Vision revealed by Gavin Wood at Decoded 2023.","items":[{"type":"link","label":"Polkadot 1.0","href":"/docs/polkadot-v1","docId":"general/polkadot-v1"},{"type":"link","label":"Polkadot Direction","href":"/docs/polkadot-direction","docId":"general/polkadot-direction"}],"collapsed":true,"collapsible":true,"href":"/docs/polkadot-vision-index"},{"type":"category","label":"Stay Safe","description":"Good-practices to Stay Safe while Surfing in Web3.","items":[{"type":"link","label":"Do Your Own Research","href":"/docs/how-to-dyor","docId":"general/how-to-dyor"},{"type":"link","label":"Scam Protection","href":"/docs/learn-scams","docId":"general/scams"},{"type":"link","label":"Transaction Verification","href":"/docs/transaction-attacks","docId":"general/transaction-attacks"}],"collapsed":true,"collapsible":true,"href":"/docs/stay-safe-index"},{"type":"link","label":"Build on Polkadot","href":"/docs/start-building","docId":"general/start-building"},{"type":"link","label":"Research Pages","href":"/docs/research","docId":"general/research"},{"type":"link","label":"FAQ","href":"/docs/faq","docId":"general/faq"},{"type":"link","label":"Glossary","href":"/docs/glossary","docId":"general/glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/general-index"},{"type":"category","label":"Basics","description":"Staking, Accounts, Transactions, Tokens and NFTs, and Governance.","items":[{"type":"category","label":"Accounts","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Account Abstraction","href":"/docs/learn-account-abstraction","docId":"learn/learn-account-abstraction"},{"type":"link","label":"Account Identity","href":"/docs/learn-identity","docId":"learn/learn-identity"},{"type":"link","label":"Multi-Signature Accounts","href":"/docs/learn-account-multisig","docId":"learn/learn-account-multisig"},{"type":"link","label":"Proxy Accounts","href":"/docs/learn-proxies","docId":"learn/learn-proxies"},{"type":"link","label":"Pure Proxy Accounts","href":"/docs/learn-proxies-pure","docId":"learn/learn-proxies-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-accounts"},{"type":"category","label":"Transactions","description":"Extrinsics, Balance Transfers, and Fees.","items":[{"type":"link","label":"Transaction Fees","href":"/docs/learn-transaction-fees","docId":"learn/learn-transaction-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-transactions"},{"type":"category","label":"Staking","description":"Mechanics of Staking.","items":[{"type":"link","label":"Introduction to Staking","href":"/docs/learn-staking","docId":"learn/learn-staking"},{"type":"link","label":"Nomination Pools","href":"/docs/learn-nomination-pools","docId":"learn/learn-nomination-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-staking-index"},{"type":"category","label":"Polkadot OpenGov","description":"Everything about Polkadot OpenGov.","items":[{"type":"link","label":"Polkadot OpenGov","href":"/docs/learn-polkadot-opengov","docId":"learn/learn-polkadot-opengov"},{"type":"link","label":"OpenGov Origins","href":"/docs/learn-polkadot-opengov-origins","docId":"learn/learn-polkadot-opengov-origins"},{"type":"link","label":"Technical Fellowship","href":"/docs/learn-polkadot-technical-fellowship","docId":"learn/learn-polkadot-technical-fellowship"},{"type":"link","label":"OpenGov.Watch","description":"Community-maintained Support Pages about Polkadot OpenGov.","href":"https://www.opengov.watch/"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-opengov-index"},{"type":"link","label":"Treasury","href":"/docs/learn-polkadot-opengov-treasury","docId":"learn/learn-polkadot-opengov-treasury"},{"type":"category","label":"Tokens and Assets","description":"DOT Token, Asset Hub, and Teleports.","items":[{"type":"link","label":"DOT","href":"/docs/learn-DOT","docId":"learn/learn-DOT"},{"type":"link","label":"Token Inflation","href":"/docs/learn-inflation","docId":"learn/learn-inflation"},{"type":"category","label":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","items":[{"type":"link","label":"Asset Conversion","href":"/docs/learn-asset-conversion-assethub","docId":"learn/learn-asset-conversion-assethub"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets"},{"type":"link","label":"Teleporting Assets","href":"/docs/learn-teleport","docId":"learn/learn-teleport"},{"type":"link","label":"Introduction to NFTs","href":"/docs/learn-nft","docId":"learn/learn-nft"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets-index"},{"type":"category","label":"Network Participants","description":"Participants in the Polkadot Ecosystem.","items":[{"type":"link","label":"Collator","href":"/docs/learn-collator","docId":"learn/learn-collator"},{"type":"link","label":"Nominator","href":"/docs/learn-nominator","docId":"learn/learn-nominator"},{"type":"link","label":"Validator","href":"/docs/learn-validator","docId":"learn/learn-validator"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-participants-index"},{"type":"category","label":"Components","description":"OpenGov, Treasury, WASM, Runtime Upgrades, and more.","items":[{"type":"link","label":"Polkadot Host","href":"/docs/learn-polkadot-host","docId":"learn/learn-polkadot-host"},{"type":"link","label":"WebAssembly (Wasm)","href":"/docs/learn-wasm","docId":"learn/learn-wasm"},{"type":"link","label":"Runtime Upgrades","href":"/docs/learn-runtime-upgrades","docId":"learn/learn-runtime-upgrades"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-components-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-basics-index"},{"type":"category","label":"Advanced","description":"Advanced Concepts & Guides about Accounts, Staking, and NFTs.","items":[{"type":"category","label":"Polkadot-JS","description":"Overview of Polkadot-JS.","items":[{"type":"link","label":"Polkadot-JS Tooling","href":"/docs/polkadotjs","docId":"general/polkadotjs"},{"type":"link","label":"Polkadot-JS UI","href":"/docs/polkadotjs-ui","docId":"general/polkadotjs-ui"},{"type":"category","label":"Polkadot-JS Guides","description":"Polkadot-JS Guides about Staking, Asset Hub, Vault App, and more.","items":[{"type":"category","label":"Account Guides","description":"Polkadot-JS Guides about Accounts.","items":[{"type":"link","label":"Multisig Guides","href":"/docs/learn-guides-accounts-multisig","docId":"learn/learn-guides-accounts-multisig"},{"type":"link","label":"Proxy Guides","href":"/docs/learn-guides-accounts-proxy","docId":"learn/learn-guides-accounts-proxy"},{"type":"link","label":"Pure Proxy Guides","href":"/docs/learn-guides-accounts-proxy-pure","docId":"learn/learn-guides-accounts-proxy-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-accounts"},{"type":"link","label":"Transfer Guides","href":"/docs/learn-guides-transfers","docId":"learn/learn-guides-transfers"},{"type":"category","label":"Staking Guides","description":"Polkadot-JS Guides about Staking.","items":[{"type":"link","label":"Nominator Guides","href":"/docs/learn-guides-nominator","docId":"learn/learn-guides-nominator"},{"type":"link","label":"Nomination Pool Guides","href":"/docs/learn-guides-staking-pools","docId":"learn/learn-guides-staking-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-staking"},{"type":"link","label":"OpenGov Guides","href":"/docs/learn-guides-polkadot-opengov","docId":"learn/learn-guides-polkadot-opengov"},{"type":"link","label":"Treasury Guides","href":"/docs/learn-guides-treasury","docId":"learn/learn-guides-treasury"},{"type":"link","label":"Bounty Guides","href":"/docs/learn-guides-bounties","docId":"learn/learn-guides-bounties"},{"type":"link","label":"Identity Guides","href":"/docs/learn-guides-identity","docId":"learn/learn-guides-identity"},{"type":"link","label":"Ledger Guides","href":"/docs/learn-guides-ledger","docId":"learn/learn-guides-ledger"},{"type":"link","label":"Polkadot Vault Guides","href":"/docs/learn-guides-vault","docId":"learn/learn-guides-vault"},{"type":"category","label":"Asset Hub Guides","description":"Polkadot-JS Guides about Asset Hub.","items":[{"type":"link","label":"Create Asset Guides","href":"/docs/learn-guides-assets-create","docId":"learn/learn-guides-assets-create"},{"type":"link","label":"Asset Hub Ledger Guides","href":"/docs/learn-guides-assets-ledger","docId":"learn/learn-guides-assets-ledger"},{"type":"link","label":"Asset Conversion Tutorials","href":"/docs/learn-guides-asset-conversion","docId":"learn/learn-guides-asset-conversion"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-assets"},{"type":"category","label":"Bridge Hub Guides","description":"Polkadot-JS Guides for Bridge Hub.","items":[{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-guides-dot-ksm-bridge","docId":"learn/learn-guides-dot-ksm-bridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-bridges"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-js-guides"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadotjs"},{"type":"category","label":"Architecture","description":"Nominators, Validators, Collators, Parachains, and more.","items":[{"type":"link","label":"Consensus","href":"/docs/learn-consensus","docId":"learn/learn-consensus"},{"type":"category","label":"Parachains","description":"Parachains\' Protocol, Auctions, Crowdloans, and more.","items":[{"type":"link","label":"Introduction to Parachains","href":"/docs/learn-parachains","docId":"learn/learn-parachains"},{"type":"link","label":"Protocol Overview","href":"/docs/learn-parachains-protocol","docId":"learn/learn-parachains-protocol"},{"type":"link","label":"System Parachains","href":"/docs/learn-system-chains","docId":"learn/learn-system-chains"},{"type":"link","label":"Parachain Slot Auctions","href":"/docs/learn-auction","docId":"learn/learn-auction"},{"type":"link","label":"Parachain Crowdloans","href":"/docs/learn-crowdloans","docId":"learn/learn-crowdloans"},{"type":"link","label":"Parachains FAQ","href":"/docs/learn-parachains-faq","docId":"learn/learn-parachains-faq"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-parachains-index"},{"type":"link","label":"Asynchronous Backing","href":"/docs/learn-async-backing","docId":"learn/learn-async-backing"},{"type":"category","label":"Agile Coretime","description":"Concepts, Implementation and Tutorials on Agile Coretime.","items":[{"type":"link","label":"Agile Coretime Intro","href":"/docs/learn-agile-coretime","docId":"learn/learn-agile-coretime"},{"type":"link","label":"Coretime Marketplaces","href":"/docs/learn-guides-coretime-marketplaces","docId":"learn/learn-guides-coretime-marketplaces"},{"type":"link","label":"Coretime for Parachains","href":"/docs/learn-guides-coretime-parachains","docId":"learn/learn-guides-coretime-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-agile-coretime-index"},{"type":"category","label":"Bridges","description":"Bridging Polkadot to other Blockchain Protocols.","items":[{"type":"link","label":"Bridge Hub","href":"/docs/learn-bridge-hub","docId":"learn/learn-bridge-hub"},{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-dot-ksm-bridge","docId":"learn/learn-dot-ksm-bridge"},{"type":"link","label":"Hyperbridge","href":"/docs/learn-hyperbridge","docId":"learn/learn-hyperbridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-bridges"},{"type":"category","label":"Cross Consensus Messaging (XCM)","description":"Polkadot\'s Cross-Consensus Messaging Format (XCM).","items":[{"type":"link","label":"Cross-Consensus Message Format (XCM)","href":"/docs/learn-xcm","docId":"learn/learn-xcm"},{"type":"link","label":"XCM Pallet","href":"/docs/learn-xcm-pallet","docId":"learn/learn-xcm-pallet"},{"type":"link","label":"XCM Use-cases","href":"/docs/learn-xcm-usecases","docId":"learn/learn-xcm-usecases"},{"type":"link","label":"XCM Transport","href":"/docs/learn-xcm-transport","docId":"learn/learn-xcm-transport"},{"type":"link","label":"XCM Virtual Machine (XCVM)","href":"/docs/learn-xcvm","docId":"learn/learn-xcvm"},{"type":"link","label":"XCM Instructions","href":"/docs/learn-xcm-instructions","docId":"learn/learn-xcm-instructions"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-xcm-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-architecture"},{"type":"link","label":"Accounts","href":"/docs/learn-account-advanced","docId":"learn/learn-account-advanced"},{"type":"link","label":"Advanced Staking Concepts","href":"/docs/learn-staking-advanced","docId":"learn/learn-staking-advanced"},{"type":"link","label":"NFT Pallets","href":"/docs/learn-nft-pallets","docId":"learn/learn-nft-pallets"},{"type":"link","label":"Cryptography","href":"/docs/learn-cryptography","docId":"learn/learn-cryptography"},{"type":"link","label":"NPoS Election Algorithms","href":"/docs/learn-phragmen","docId":"learn/learn-phragmen"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-advanced-index"},{"type":"category","label":"XCM Docs","description":"In-depth documentation about the Polkadot\'s Cross-Chain Messaging (XCM).","items":[{"type":"link","label":"XCM: Cross-Consensus Messaging","href":"/docs/learn/xcm/introduction","docId":"learn/xcm/learn-xcm-docs-intro"},{"type":"category","label":"Overview","description":"Overview of the XCM Documentation.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/overview-summary","docId":"learn/xcm/overview/learn-xcm-docs-overview-summary"},{"type":"link","label":"Introduction","href":"/docs/learn/xcm/overview-intro","docId":"learn/xcm/overview/learn-xcm-docs-overview-intro"},{"type":"link","label":"A Format, not a Protocol","href":"/docs/learn/xcm/overview-format","docId":"learn/xcm/overview/learn-xcm-docs-overview-format"},{"type":"link","label":"The XCVM","href":"/docs/learn/xcm/overview-xcvm","docId":"learn/xcm/overview/learn-xcm-docs-overview-xcvm"},{"type":"link","label":"Architecture","href":"/docs/learn/xcm/overview-architecture","docId":"learn/xcm/overview/learn-xcm-docs-overview-architecture"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/overview"},{"type":"category","label":"Quickstart","description":"Start Diving into XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/quickstart-summary","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary"},{"type":"link","label":"XCM Simulator","href":"/docs/learn/xcm/quickstart-simulator","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator"},{"type":"link","label":"First Look at an XCM","href":"/docs/learn/xcm/quickstart-first-look","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/quickstart"},{"type":"category","label":"Fundamentals","description":"Fundamental Concepts about XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals-summary","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary"},{"type":"category","label":"MultiLocation","description":"The MultiLocation Type.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals/multilocation-summary","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary"},{"type":"link","label":"Junction(s)","href":"/docs/learn/xcm/fundamentals/multilocation-junctions","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions"},{"type":"link","label":"Example","href":"/docs/learn/xcm/fundamentals/multilocation-example","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals/multilocation"},{"type":"link","label":"MultiAsset","href":"/docs/learn/xcm/fundamentals-multiasset","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset"},{"type":"link","label":"XCVM","href":"/docs/learn/xcm/fundamentals-xcvm","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm"},{"type":"link","label":"Weight and Fees","href":"/docs/learn/xcm/fundamentals-fees","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals"},{"type":"category","label":"A Journey through XCM","description":"A Practical Introduction to the XCM Features","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey-summary","docId":"learn/xcm/journey/learn-xcm-docs-journey-summary"},{"type":"category","label":"Transfers","description":"Transferring Assets between Consensus Systems with XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey/transfers-summary","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary"},{"type":"link","label":"Asset Teleportation","href":"/docs/learn/xcm/journey/transfers-teleport","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport"},{"type":"link","label":"Reserve-backed Transfers","href":"/docs/learn/xcm/journey/transfers-reserve","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey/transfers"},{"type":"link","label":"Fee Handling","href":"/docs/learn/xcm/journey-fees","docId":"learn/xcm/journey/learn-xcm-docs-journey-fees"},{"type":"link","label":"Transact: A General Solution","href":"/docs/learn/xcm/journey-transact","docId":"learn/xcm/journey/learn-xcm-docs-journey-transact"},{"type":"link","label":"Origin Manipulation","href":"/docs/learn/xcm/journey-origin","docId":"learn/xcm/journey/learn-xcm-docs-journey-origin"},{"type":"link","label":"More Register Modifiers","href":"/docs/learn/xcm/journey-register","docId":"learn/xcm/journey/learn-xcm-docs-journey-register"},{"type":"link","label":"More Holding Modifiers","href":"/docs/learn/xcm/journey-holding","docId":"learn/xcm/journey/learn-xcm-docs-journey-holding"},{"type":"link","label":"Trap and Claim Assets","href":"/docs/learn/xcm/journey-assets","docId":"learn/xcm/journey/learn-xcm-docs-journey-assets"},{"type":"link","label":"Expectations","href":"/docs/learn/xcm/journey-expectations","docId":"learn/xcm/journey/learn-xcm-docs-journey-expectations"},{"type":"link","label":"Queries","href":"/docs/learn/xcm/journey-queries","docId":"learn/xcm/journey/learn-xcm-docs-journey-queries"},{"type":"link","label":"Version Subscription","href":"/docs/learn/xcm/journey-version","docId":"learn/xcm/journey/learn-xcm-docs-journey-version"},{"type":"link","label":"Locks","href":"/docs/learn/xcm/journey-locks","docId":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks"},{"type":"link","label":"Channels and Bridges","href":"/docs/learn/xcm/journey-channels","docId":"learn/xcm/journey/learn-xcm-docs-journey-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey"},{"type":"link","label":"Executor Configuration","href":"/docs/learn/xcm/config-deep-dive","docId":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive"},{"type":"link","label":"Testing","href":"/docs/learn/xcm/testing","docId":"learn/xcm/learn-xcm-docs-testing"},{"type":"category","label":"References","description":"XCVM Registers and Glossary","items":[{"type":"link","label":"All XCVM Registers","href":"/docs/learn/xcm/reference-xcvm-registers","docId":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers"},{"type":"link","label":"Glossary","href":"/docs/learn/xcm/reference-glossary","docId":"learn/xcm/reference/learn-xcm-docs-reference-glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/references"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm"},{"type":"category","label":"Polkadot Comparisons","description":"Comparison between Polkadot and other Networks. ","items":[{"type":"link","label":"Kusama","href":"/docs/learn-comparisons-kusama","docId":"learn/learn-comparisons-kusama"},{"type":"link","label":"Ethereum","href":"/docs/learn-comparisons-ethereum-2","docId":"learn/learn-comparisons-ethereum-2"},{"type":"link","label":"Cosmos","href":"/docs/learn-comparisons-cosmos","docId":"learn/learn-comparisons-cosmos"},{"type":"link","label":"Avalanche","href":"/docs/learn-comparisons-avalanche","docId":"learn/learn-comparisons-avalanche"},{"type":"link","label":"Other Comparisons","href":"/docs/learn-comparisons","docId":"learn/learn-comparisons"},{"type":"link","label":"Layer Two and Rollups","href":"/docs/learn-comparisons-rollups","docId":"learn/learn-comparisons-rollups"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-comparisons-index"},{"type":"link","label":"Videos","href":"/docs/learn-video-tutorials","docId":"learn/learn-video-tutorials"},{"type":"category","label":"Future Implementations","description":"Implementations that will be deployed on Polkadot.","items":[{"type":"link","label":"SPREE","href":"/docs/learn-spree","docId":"learn/learn-spree"},{"type":"link","label":"Parathreads","href":"/docs/learn-parathreads","docId":"learn/learn-parathreads"},{"type":"link","label":"Elastic Scaling","href":"/docs/learn-elastic-scaling","docId":"learn/learn-elastic-scaling"},{"type":"link","label":"SASSAFRAS","href":"/docs/learn-sassafras","docId":"learn/learn-sassafras"},{"type":"category","label":"JAM","description":"Polkadot\'s Join & Accumulate Machine.","items":[{"type":"link","label":"JAM Chain","href":"/docs/learn-jam-chain","docId":"learn/learn-jam-chain"},{"type":"link","label":"JAM FAQ","href":"/docs/learn-jam-faq","docId":"learn/learn-jam-faq"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-jam"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-future-implementations-index"},{"type":"category","label":"Archive","description":"Implementations no longer live on Polkadot.","items":[{"type":"link","label":"Governance V1","href":"/docs/learn/learn-governance","docId":"learn/archive/learn-governance"},{"type":"link","label":"Gov1 Treasury","href":"/docs/learn/learn-treasury","docId":"learn/archive/learn-treasury"},{"type":"link","label":"Polkadot Launch Phases","href":"/docs/learn/learn-launch","docId":"learn/archive/learn-launch"},{"type":"link","label":"Redenomination of DOT","href":"/docs/learn/learn-redenomination","docId":"learn/archive/learn-redenomination"},{"type":"link","label":"Controller Accounts","href":"/docs/learn/learn-controller","docId":"learn/archive/learn-controller"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-index"},{"type":"category","label":"Build","items":[{"type":"category","label":"Client-side Development","items":[{"type":"link","label":"Building Client-side Apps","href":"/docs/build-client-side","docId":"build/build-client-side"},{"type":"link","label":"Using Light Clients","href":"/docs/build-light-clients","docId":"build/build-light-clients"},{"type":"link","label":"Node Interaction","href":"/docs/build-node-interaction","docId":"build/build-node-interaction"}],"collapsed":true,"collapsible":true,"href":"/docs/build-client-index"},{"type":"link","label":"Smart Contracts","href":"/docs/build-smart-contracts","docId":"build/build-smart-contracts"},{"type":"category","label":"Protocol Development","items":[{"type":"link","label":"Polkadot Protocol Overview","href":"/docs/build-protocol-info","docId":"build/build-protocol-info"},{"type":"link","label":"Using AssetHub","href":"/docs/build-integrate-assets","docId":"build/build-integrate-assets"},{"type":"link","label":"Opening HRMP Channels","href":"/docs/build-hrmp-channels","docId":"build/build-hrmp-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/build-protocol-index"},{"type":"link","label":"Development Networks","href":"/docs/build-network-overview","docId":"build/build-network-overview"},{"type":"category","label":"Tooling","items":[{"type":"link","label":"Explorer, Data, & Indexing Tools","href":"/docs/build-data","docId":"build/build-data"},{"type":"link","label":"Open Source Stack","href":"/docs/build-open-source","docId":"build/build-open-source"}],"collapsed":true,"collapsible":true,"href":"/docs/build-tools-index"},{"type":"link","label":"Hackathons","href":"/docs/build-hackathon","docId":"build/build-hackathon"},{"type":"category","label":"Build Archive","items":[{"type":"link","label":"Transaction Construction","href":"/docs/build-transaction-construction","docId":"build/build-transaction-construction"},{"type":"link","label":"Integration Initiation","href":"/docs/build-integration","docId":"build/build-integration"},{"type":"link","label":"Node Management","href":"/docs/build-node-management","docId":"build/build-node-management"},{"type":"link","label":"Parachain Development","href":"/docs/build-pdk","docId":"build/build-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/build-archive-index"}],"collapsed":true,"collapsible":true,"href":"/docs/build-guide"},{"type":"category","label":"Maintain","items":[{"type":"link","label":"Parameters","href":"/docs/maintain-polkadot-parameters","docId":"maintain/maintain-polkadot-parameters"},{"type":"category","label":"Nodes and Dapps","description":"Learn how to set up a node.","items":[{"type":"link","label":"Node Endpoints","href":"/docs/maintain-endpoints","docId":"maintain/maintain-endpoints"},{"type":"link","label":"Set up a Full Node","href":"/docs/maintain-sync","docId":"maintain/maintain-sync"},{"type":"link","label":"Set up a Boot Node","href":"/docs/maintain-bootnode","docId":"maintain/maintain-bootnode"},{"type":"link","label":"Set up a RPC node","href":"/docs/maintain-rpc","docId":"maintain/maintain-rpc"},{"type":"link","label":"Secure the WebSocket","href":"/docs/maintain-wss","docId":"maintain/maintain-wss"},{"type":"link","label":"Networks","href":"/docs/maintain-networks","docId":"maintain/maintain-networks"},{"type":"link","label":"Resolving Errors","href":"/docs/maintain-errors","docId":"maintain/maintain-errors"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-node-index"},{"type":"category","label":"Collator Guides","description":"Guides for Collator Nodes.","items":[{"type":"link","label":"Async Backing Upgrade","href":"/docs/maintain-guides-async-backing","docId":"maintain/maintain-guides-async-backing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-collator-index"},{"type":"category","label":"Validator Guides","description":"Guides for Validator Nodes.","items":[{"type":"link","label":"How to run a Validator on Polkadot","href":"/docs/maintain-guides-how-to-validate-polkadot","docId":"maintain/maintain-guides-how-to-validate-polkadot"},{"type":"link","label":"Validator Payout Overview","href":"/docs/maintain-guides-validator-payout","docId":"maintain/maintain-guides-validator-payout"},{"type":"link","label":"Using systemd for a Validator Node","href":"/docs/maintain-guides-how-to-systemd","docId":"maintain/maintain-guides-how-to-systemd"},{"type":"link","label":"Secure Validator","href":"/docs/maintain-guides-secure-validator","docId":"maintain/maintain-guides-secure-validator"},{"type":"link","label":"How to Upgrade Your Validator","href":"/docs/maintain-guides-how-to-upgrade","docId":"maintain/maintain-guides-how-to-upgrade"},{"type":"link","label":"Monitor your node","href":"/docs/maintain-guides-how-to-monitor-your-node","docId":"maintain/maintain-guides-how-to-monitor-your-node"},{"type":"link","label":"How to Chill","href":"/docs/maintain-guides-how-to-chill","docId":"maintain/maintain-guides-how-to-chill"},{"type":"link","label":"How to Stop Validating","href":"/docs/maintain-guides-how-to-stop-validating","docId":"maintain/maintain-guides-how-to-stop-validating"},{"type":"link","label":"Validator Community Overview","href":"/docs/maintain-guides-validator-community","docId":"maintain/doc-maintain-guides-validator-community"},{"type":"link","label":"Validator Best Practices","href":"/docs/maintain-guides-avoid-slashing","docId":"maintain/maintain-guides-avoid-slashing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-validator-index"},{"type":"category","label":"Archive","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Participate in Democracy","href":"/docs/maintain/maintain-guides-democracy","docId":"maintain/archive/maintain-guides-democracy"},{"type":"link","label":"Join the Council","href":"/docs/maintain/maintain-guides-how-to-join-council","docId":"maintain/archive/maintain-guides-how-to-join-council"},{"type":"link","label":"Voting for Councillors","href":"/docs/maintain/maintain-guides-how-to-vote-councillor","docId":"maintain/archive/maintain-guides-how-to-vote-councillor"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-index"}]},"docs":{"build/build-client-side":{"id":"build/build-client-side","title":"Building Client-side Apps","description":"An overview about building clients that use Polkadot","sidebar":"docs"},"build/build-dapp":{"id":"build/build-dapp","title":"Building dApps","description":"An overview about building dApps on Polkadot"},"build/build-data":{"id":"build/build-data","title":"Explorer, Data, & Indexing Tools","description":"An overview about building with data analytics","sidebar":"docs"},"build/build-guide":{"id":"build/build-guide","title":"Polkadot Developer Portal","description":"Start building with Polkadot/Kusama.","sidebar":"docs"},"build/build-hackathon":{"id":"build/build-hackathon","title":"Hackathons","description":"Join or host a Hackathon.","sidebar":"docs"},"build/build-hrmp-channels":{"id":"build/build-hrmp-channels","title":"Opening HRMP Channels","description":"Steps on how to open HRMP channels between parachains.","sidebar":"docs"},"build/build-index":{"id":"build/build-index","title":"Builder\'s Guides","description":"Reference point for the Polkadot builder guides."},"build/build-integrate-assets":{"id":"build/build-integrate-assets","title":"Using AssetHub","description":"Tools that you can use for integrating assets.","sidebar":"docs"},"build/build-integration":{"id":"build/build-integration","title":"Polkadot Integration Guide","description":"Reference point for the Polkadot integration guides.","sidebar":"docs"},"build/build-light-clients":{"id":"build/build-light-clients","title":"Using Light Clients","description":"Information about light client options.","sidebar":"docs"},"build/build-network-overview":{"id":"build/build-network-overview","title":"Development Networks","description":"An overview of the different networks on Polkadot","sidebar":"docs"},"build/build-node-interaction":{"id":"build/build-node-interaction","title":"Node Interaction","description":"Tools for node interaction.","sidebar":"docs"},"build/build-node-management":{"id":"build/build-node-management","title":"Node Management","description":"Steps on how to manage your Polkadot node.","sidebar":"docs"},"build/build-open-source":{"id":"build/build-open-source","title":"Open Source Stack","description":"Overview of the open source Polkadot/Kusama Tech Stack","sidebar":"docs"},"build/build-oracle":{"id":"build/build-oracle","title":"Oracles","description":"Information about building with oracles."},"build/build-parachains":{"id":"build/build-parachains","title":"Parachain Development","description":"A guide on what it means to become a Parachain and the steps to do so.","sidebar":"docs"},"build/build-protocol-info":{"id":"build/build-protocol-info","title":"Polkadot Protocol Overview","description":"Characteristics about the Polkadot protocol, and what you need to consider when building.","sidebar":"docs"},"build/build-smart-contracts":{"id":"build/build-smart-contracts","title":"Smart Contracts","description":"How smart contracts play their role in the Polkadot ecosystem.","sidebar":"docs"},"build/build-storage":{"id":"build/build-storage","title":"Decentralized Storage","description":"Information about building with decentralized storage."},"build/build-tools-index":{"id":"build/build-tools-index","title":"Tool Index","description":"Reference point for a list of tools to support your development.","sidebar":"docs"},"build/build-transaction-construction":{"id":"build/build-transaction-construction","title":"Transaction Construction and Signing","description":"Information about how transactions are constructed on Polkadot.","sidebar":"docs"},"general/alpha-program":{"id":"general/alpha-program","title":"Polkadot Alpha Program","description":"The Polkadot Alpha Program and How it can Support your Development.","sidebar":"docs"},"general/ambassadors":{"id":"general/ambassadors","title":"Polkadot Ambassador Program","description":"The Polkadot\'s Ambassador Program and How you can Participate in It.","sidebar":"docs"},"general/bug-bounty":{"id":"general/bug-bounty","title":"Bug Bounty Program","description":"An Overview of How you can Help Catch Bugs.","sidebar":"docs"},"general/community":{"id":"general/community","title":"Community","description":"Connect and stay updated with the Polkadot Community.","sidebar":"docs"},"general/contributing":{"id":"general/contributing","title":"Contributing to the Polkadot Wiki","description":"Contribute to the Polkadot Wiki.","sidebar":"docs"},"general/contributors":{"id":"general/contributors","title":"Contributors","description":"Get to know your Wiki-slayers.","sidebar":"docs"},"general/decentralized-futures":{"id":"general/decentralized-futures","title":"Decentralized Futures Program","description":"Learn about the Decentralized Futures Program.","sidebar":"docs"},"general/decentralized-voices":{"id":"general/decentralized-voices","title":"Decentralized Voices Program","description":"Learn about the Decentralized Voices Program.","sidebar":"docs"},"general/dev-heroes":{"id":"general/dev-heroes","title":"Developer Heroes Program","description":"More Power to Polkadot\'s Developers.","sidebar":"docs"},"general/doc-thousand-contributors":{"id":"general/doc-thousand-contributors","title":"Thousand Contributors Program","description":"The Thousand Contributors Program and How it can Support your Contributions.","sidebar":"docs"},"general/doc-thousand-validators":{"id":"general/doc-thousand-validators","title":"Thousand Validators Programme","description":"The Thousand Validators Program and How it can Support your Validator Endeavors.","sidebar":"docs"},"general/faq":{"id":"general/faq","title":"Frequently Asked Questions (FAQs)","description":"FAQs to Help you Navigate on Polkadot.","sidebar":"docs"},"general/getting-started":{"id":"general/getting-started","title":"Getting Started","description":"Get started with Polkadot and Web3.","sidebar":"docs"},"general/glossary":{"id":"general/glossary","title":"Glossary","description":"Common Terms and Concepts in the Polkadot Ecosystem.","sidebar":"docs"},"general/governance-apps":{"id":"general/governance-apps","title":"Polkadot Governance Apps","description":"Governance Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/grants":{"id":"general/grants","title":"Grants Program","description":"The Grant Programs in the Polkadot Ecosystem.","sidebar":"docs"},"general/how-to-dyor":{"id":"general/how-to-dyor","title":"How to Do Your Own Research (DYOR)","description":"Importance of Doing Your Own Research (DYOR).","sidebar":"docs"},"general/kusama/kusama-adversarial-cheatsheet":{"id":"general/kusama/kusama-adversarial-cheatsheet","title":"Adversarial Cheatsheet","description":"A cheatsheet to help you create chaos."},"general/kusama/kusama-bug-bounty":{"id":"general/kusama/kusama-bug-bounty","title":"Bug Bounty","description":"An overview of how you can help catch bugs."},"general/kusama/kusama-claims":{"id":"general/kusama/kusama-claims","title":"Kusama Claims","description":"Step-by-step guide on how to claim your KSM tokens."},"general/kusama/kusama-coc":{"id":"general/kusama/kusama-coc","title":"Kusama Code of Conduct","description":"Kusama\'s Code of Conduct to sustain chaos."},"general/kusama/kusama-community":{"id":"general/kusama/kusama-community","title":"Kusama Community","description":"Stay in-touch and keep up-to-date by interacting and engaging in the Kusama community."},"general/kusama/kusama-getting-started":{"id":"general/kusama/kusama-getting-started","title":"Interact with Kusama","description":"Reference point for Kusama content."},"general/kusama/kusama-index":{"id":"general/kusama/kusama-index","title":"Kusama","description":"Legacy link to Kusama Wiki document"},"general/kusama/kusama-parameters":{"id":"general/kusama/kusama-parameters","title":"Kusama Parameters","description":"Learn about common Kusama parameters"},"general/kusama/kusama-social-recovery":{"id":"general/kusama/kusama-social-recovery","title":"Social Recovery","description":"Steps on how to perform account recovery on Kusama."},"general/kusama/kusama-timeline":{"id":"general/kusama/kusama-timeline","title":"Kusama Timeline","description":"Stay up-to-date with the latest action on Kusama."},"general/ledger":{"id":"general/ledger","title":"Using the Polkadot & Kusama Ledger Applications","description":"Use the Polkadot Ledger Application.","sidebar":"docs"},"general/metadata":{"id":"general/metadata","title":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","sidebar":"docs"},"general/multisig-apps":{"id":"general/multisig-apps","title":"Polkadot Multisig Apps","description":"Multisig Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/parachains-apps":{"id":"general/parachains-apps","title":"Polkadot Parachain Apps","description":"Polkadot\'s Parachain Apps.","sidebar":"docs"},"general/polkadot-direction":{"id":"general/polkadot-direction","title":"Polkadot Direction","description":"Polkadot as a Decentralized and Secure Ubiquitous Computer.","sidebar":"docs"},"general/polkadot-v1":{"id":"general/polkadot-v1","title":"Polkadot 1.0","description":"Polkadot\'s 1.0, Blockspace, Decentralization and Resilience.","sidebar":"docs"},"general/polkadot-vault":{"id":"general/polkadot-vault","title":"Polkadot Vault (formerly Parity Signer)","description":"Your old Smartphone as an Air-gapped Wallet.","sidebar":"docs"},"general/polkadotjs":{"id":"general/polkadotjs","title":"Polkadot-JS Tooling","description":"The Polkadot-JS Tool Collection.","sidebar":"docs"},"general/polkadotjs-ui":{"id":"general/polkadotjs-ui","title":"Polkadot-JS UI (Wallet)","description":"A Wallet for Power-users and Developers.","sidebar":"docs"},"general/research":{"id":"general/research","title":"Research Pages","description":"Latest Research Developments on Polkadot.","sidebar":"docs"},"general/scams":{"id":"general/scams","title":"How to Protect Yourself from Scams","description":"How to Protect yourself against Scams.","sidebar":"docs"},"general/staking-apps":{"id":"general/staking-apps","title":"Polkadot Staking Apps","description":"Staking Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/staking-dashboard":{"id":"general/staking-dashboard","title":"Polkadot Staking Dashboard","description":"Everything about the Polkadot Staking Dashboard.","sidebar":"docs"},"general/start-building":{"id":"general/start-building","title":"Build on Polkadot","description":"Start Building with the Polkadot SDK.","sidebar":"docs"},"general/transaction-attacks":{"id":"general/transaction-attacks","title":"Why Verify Transactions?","description":"How to Prevent from being a Victim of an Attack","sidebar":"docs"},"general/wallets-and-extensions":{"id":"general/wallets-and-extensions","title":"Wallets and Extensions","description":"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.","sidebar":"docs"},"general/web3-and-polkadot":{"id":"general/web3-and-polkadot","title":"Web3 and Polkadot","description":"Introduction to Web3 and Polkadot\'s Role in shaping the Web3 Vision.","sidebar":"docs"},"learn/archive/learn-controller":{"id":"learn/archive/learn-controller","title":"Controller Accounts","description":"Controller Accounts used in Staking.","sidebar":"docs"},"learn/archive/learn-governance":{"id":"learn/archive/learn-governance","title":"Governance V1","description":"Polkadot\'s First Governance Model.","sidebar":"docs"},"learn/archive/learn-launch":{"id":"learn/archive/learn-launch","title":"Polkadot Launch Phases","description":"Polkadot\'s Launch Process and its Individual Phases.","sidebar":"docs"},"learn/archive/learn-redenomination":{"id":"learn/archive/learn-redenomination","title":"Redenomination of DOT","description":"Everything about the DOT Token Redenomination.","sidebar":"docs"},"learn/archive/learn-treasury":{"id":"learn/archive/learn-treasury","title":"Governance v1 Treasury","description":"The Polkadot\'s On-chain Treasury during Gov1.","sidebar":"docs"},"learn/learn-account-abstraction":{"id":"learn/learn-account-abstraction","title":"Polkadot\'s Account Abstraction","description":"Polkadot\'s Native Account Abstraction.","sidebar":"docs"},"learn/learn-account-advanced":{"id":"learn/learn-account-advanced","title":"Polkadot Accounts In-Depth","description":"Advanced Concepts about Polkadot\'s Accounts.","sidebar":"docs"},"learn/learn-account-multisig":{"id":"learn/learn-account-multisig","title":"Multi-Signature Accounts","description":"Multi-signature Accounts on Polkadot.","sidebar":"docs"},"learn/learn-accounts":{"id":"learn/learn-accounts","title":"Polkadot Accounts","description":"Polkadot Accounts, Account Identity, and Account Reaping.","sidebar":"docs"},"learn/learn-agile-coretime":{"id":"learn/learn-agile-coretime","title":"Introduction to Agile Coretime","description":"Introduction to Agile Coretime and its terminology","sidebar":"docs"},"learn/learn-architecture":{"id":"learn/learn-architecture","title":"Architecture","description":"Key Components to Polkadot\'s Architecture.","sidebar":"docs"},"learn/learn-archive":{"id":"learn/learn-archive","title":"Learn Archive","description":"Archive for the Learn Section.","sidebar":"docs"},"learn/learn-asset-conversion-assethub":{"id":"learn/learn-asset-conversion-assethub","title":"Asset Conversion on AssetHub","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-assets":{"id":"learn/learn-assets","title":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","sidebar":"docs"},"learn/learn-async-backing":{"id":"learn/learn-async-backing","title":"Asynchronous Backing","description":"A brief overview of asynchronous backing, and how it affects Polkadot\'s scalability.","sidebar":"docs"},"learn/learn-auction":{"id":"learn/learn-auction","title":"Parachain Slot Auctions","description":"Polkadot\'s Parachain Slot Auction Mechanism.","sidebar":"docs"},"learn/learn-bridge-hub":{"id":"learn/learn-bridge-hub","title":"Bridge Hub","description":"Overview of Bridge Hub System Parachain.","sidebar":"docs"},"learn/learn-bridges":{"id":"learn/learn-bridges","title":"Bridges","description":"Bridges and Examples of Common Bridges.","sidebar":"docs"},"learn/learn-collator":{"id":"learn/learn-collator","title":"Collator","description":"Role of Collators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-comparisons":{"id":"learn/learn-comparisons","title":"Polkadot Comparisons","description":"Comparison between Polkadot and ETH 1.0 and BSC.","sidebar":"docs"},"learn/learn-comparisons-avalanche":{"id":"learn/learn-comparisons-avalanche","title":"Polkadot vs. Avalanche","description":"Comparison between Polkadot and Avalanche.","sidebar":"docs"},"learn/learn-comparisons-cosmos":{"id":"learn/learn-comparisons-cosmos","title":"Polkadot vs. Cosmos","description":"Comparison between Polkadot and Cosmos.","sidebar":"docs"},"learn/learn-comparisons-ethereum-2":{"id":"learn/learn-comparisons-ethereum-2","title":"Polkadot vs. Ethereum","description":"Comparison between Polkadot and Ethereum.","sidebar":"docs"},"learn/learn-comparisons-kusama":{"id":"learn/learn-comparisons-kusama","title":"Polkadot vs. Kusama","description":"Comparing the cousins.","sidebar":"docs"},"learn/learn-comparisons-rollups":{"id":"learn/learn-comparisons-rollups","title":"Layer Two and Rollups","description":"Comparison between various Rollup and L2 Protocols.","sidebar":"docs"},"learn/learn-consensus":{"id":"learn/learn-consensus","title":"Polkadot\'s Consensus Protocols","description":"The Consensus Mechanisms of Polkadot.","sidebar":"docs"},"learn/learn-crowdloans":{"id":"learn/learn-crowdloans","title":"Parachain Crowdloans","description":"Polkadot\'s Crowdloans and How to Participate.","sidebar":"docs"},"learn/learn-cryptography":{"id":"learn/learn-cryptography","title":"Cryptography on Polkadot","description":"Cryptographic Functions used in Polkadot.","sidebar":"docs"},"learn/learn-DOT":{"id":"learn/learn-DOT","title":"DOT","description":"Tokenomics of Polkadot\'s Native Token DOT.","sidebar":"docs"},"learn/learn-dot-ksm-bridge":{"id":"learn/learn-dot-ksm-bridge","title":"Polkadot <> Kusama Bridge","description":"Overview of Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-elastic-scaling":{"id":"learn/learn-elastic-scaling","title":"Polkadot\'s Elastic Scaling","description":"Enabling parachains to scale on-demand through instantaneous coretime.","sidebar":"docs"},"learn/learn-guides-accounts":{"id":"learn/learn-guides-accounts","title":"Polkadot-JS Guides about Accounts","description":"Polkadot-JS Guides about Accounts","sidebar":"docs"},"learn/learn-guides-accounts-multisig":{"id":"learn/learn-guides-accounts-multisig","title":"Polkadot-JS Guides about Multi-signature Accounts","description":"Polkadot-JS Guides about Multi-signature Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy":{"id":"learn/learn-guides-accounts-proxy","title":"Polkadot-JS Guides about Proxy Accounts","description":"Polkadot-JS Guides about Proxy Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy-pure":{"id":"learn/learn-guides-accounts-proxy-pure","title":"Polkadot-JS Guides about Pure Proxy Accounts","description":"Polkadot-JS Guides about Pure Proxy Accounts","sidebar":"docs"},"learn/learn-guides-asset-conversion":{"id":"learn/learn-guides-asset-conversion","title":"Asset Conversion Tutorials","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-guides-assets":{"id":"learn/learn-guides-assets","title":"Polkadot-JS Guides about Asset Hub","description":"Polkadot-JS Guides about Asset Hub.","sidebar":"docs"},"learn/learn-guides-assets-create":{"id":"learn/learn-guides-assets-create","title":"Polkadot-JS Guides about Creating Assets","description":"Polkadot-JS Guides about Creating Assets.","sidebar":"docs"},"learn/learn-guides-assets-ledger":{"id":"learn/learn-guides-assets-ledger","title":"Polkadot-JS Guides about Asset Hub Ledger App","description":"Polkadot-JS Guides about Ledger and the Asset Hub.","sidebar":"docs"},"learn/learn-guides-bounties":{"id":"learn/learn-guides-bounties","title":"Polkadot-JS Guides about Bounties","description":"Polkadot-JS Guides for Bounties","sidebar":"docs"},"learn/learn-guides-coretime-marketplaces":{"id":"learn/learn-guides-coretime-marketplaces","title":"Coretime Marketplaces","description":"Usage guides for coretime marketplaces","sidebar":"docs"},"learn/learn-guides-coretime-parachains":{"id":"learn/learn-guides-coretime-parachains","title":"Agile Coretime for Parachains","description":"Agile Coretime from Parachains perspective","sidebar":"docs"},"learn/learn-guides-dot-ksm-bridge":{"id":"learn/learn-guides-dot-ksm-bridge","title":"Polkadot and Kusama Bridge Guides","description":"Polkadot-JS Guides about Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-guides-identity":{"id":"learn/learn-guides-identity","title":"Polkadot-JS Guides about Identity","description":"Polkadot-JS Guides about Identity.","sidebar":"docs"},"learn/learn-guides-ledger":{"id":"learn/learn-guides-ledger","title":"Polkadot-JS Guides for Ledger Devices","description":"Polkadot-JS Guides for Ledger Devices.","sidebar":"docs"},"learn/learn-guides-nominator":{"id":"learn/learn-guides-nominator","title":"Polkadot-JS Guides For Nominators","description":"Polkadot-JS Guides for Nominators.","sidebar":"docs"},"learn/learn-guides-polkadot-opengov":{"id":"learn/learn-guides-polkadot-opengov","title":"Polkadot-JS Guides about OpenGov","description":"Polkadot-JS Guides about Polkadot OpenGov.","sidebar":"docs"},"learn/learn-guides-staking":{"id":"learn/learn-guides-staking","title":"Polkadot-JS Guides about Staking","description":"Polkadot-JS Guides about Staking.","sidebar":"docs"},"learn/learn-guides-staking-pools":{"id":"learn/learn-guides-staking-pools","title":"Polkadot-JS Guides for Pool Creators","description":"Polkadot-JS Guides about Nomination Pools.","sidebar":"docs"},"learn/learn-guides-transfers":{"id":"learn/learn-guides-transfers","title":"Polkadot-JS Guides about Transfers","description":"Polkadot-JS Guides about Balances Transfers.","sidebar":"docs"},"learn/learn-guides-treasury":{"id":"learn/learn-guides-treasury","title":"Polkadot-JS Guides about the Treasury","description":"Polkadot-JS Guides about the Polkadot Treasury.","sidebar":"docs"},"learn/learn-guides-vault":{"id":"learn/learn-guides-vault","title":"Polkadot-JS Guides about the Vault App","description":"Polkadot-JS Guides about Polkadot Vault.","sidebar":"docs"},"learn/learn-hyperbridge":{"id":"learn/learn-hyperbridge","title":"Hyperbridge","description":"Polkadot\'s Bridge to Ethereum.","sidebar":"docs"},"learn/learn-identity":{"id":"learn/learn-identity","title":"Account Identity","description":"On-chain Identity, Judgements and Registrars.","sidebar":"docs"},"learn/learn-implementations":{"id":"learn/learn-implementations","title":"Polkadot Implementations","description":"Learn about the different Polkadot implementations."},"learn/learn-inflation":{"id":"learn/learn-inflation","title":"Token Inflation","description":"Explanation of Token\'s Inflation in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-jam-chain":{"id":"learn/learn-jam-chain","title":"Polkadot\'s JAM Chain","description":"Polkadot\'s Join-Accumulate Machine.","sidebar":"docs"},"learn/learn-jam-faq":{"id":"learn/learn-jam-faq","title":"FAQ for Polkadot\'s JAM Chain","description":"FAQ about Polkadot\'s Join-Accumulate Machine.","sidebar":"docs"},"learn/learn-nft":{"id":"learn/learn-nft","title":"NFTs","description":"The NFT Landscape of the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-pallets":{"id":"learn/learn-nft-pallets","title":"NFT Pallets","description":"Functionalities of the NFT Pallets in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-projects":{"id":"learn/learn-nft-projects","title":"NFT projects on Polkadot and Kusama","description":"NFT Projects in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nomination-pools":{"id":"learn/learn-nomination-pools","title":"Nomination Pools","description":"Staking through Polkadot\'s Nomination Pools.","sidebar":"docs"},"learn/learn-nominator":{"id":"learn/learn-nominator","title":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-parachains":{"id":"learn/learn-parachains","title":"Parachains","description":"An Introduction to Polkadot\'s Parachains.","sidebar":"docs"},"learn/learn-parachains-faq":{"id":"learn/learn-parachains-faq","title":"Parachains FAQ","description":"Parachains FAQ.","sidebar":"docs"},"learn/learn-parachains-protocol":{"id":"learn/learn-parachains-protocol","title":"Parachains\' Protocol Overview","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","sidebar":"docs"},"learn/learn-parathreads":{"id":"learn/learn-parathreads","title":"Parathreads","description":"An Introductory Guide to Parathreads.","sidebar":"docs"},"learn/learn-phragmen":{"id":"learn/learn-phragmen","title":"NPoS Election Algorithms","description":"The Election Methods used in Polkadot\'s NPoS Mechanism.","sidebar":"docs"},"learn/learn-polkadot-host":{"id":"learn/learn-polkadot-host","title":"Polkadot Host (PH)","description":"The Polkadot Host and its Components.","sidebar":"docs"},"learn/learn-polkadot-js-guides":{"id":"learn/learn-polkadot-js-guides","title":"Polkadot-JS Guides","description":"Guides about Polkadot-JS.","sidebar":"docs"},"learn/learn-polkadot-opengov":{"id":"learn/learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","sidebar":"docs"},"learn/learn-polkadot-opengov-origins":{"id":"learn/learn-polkadot-opengov-origins","title":"Polkadot OpenGov Origins","description":"All Origins for Polkadot\'s OpenGov.","sidebar":"docs"},"learn/learn-polkadot-opengov-treasury":{"id":"learn/learn-polkadot-opengov-treasury","title":"Treasury","description":"Polkadot\'s On-chain Treasury.","sidebar":"docs"},"learn/learn-polkadot-technical-fellowship":{"id":"learn/learn-polkadot-technical-fellowship","title":"Polkadot Technical Fellowship","description":"Self-governing body of experts and developers of the Polkadot protocol.","sidebar":"docs"},"learn/learn-polkadotjs":{"id":"learn/learn-polkadotjs","title":"Polkadot-JS","description":"Overview of Polkadot-JS.","sidebar":"docs"},"learn/learn-proxies":{"id":"learn/learn-proxies","title":"Proxy Accounts","description":"Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-proxies-pure":{"id":"learn/learn-proxies-pure","title":"Pure Proxy Accounts","description":"Pure Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-runtime-upgrades":{"id":"learn/learn-runtime-upgrades","title":"Runtime Upgrades","description":"Forkless Runtime Upgrades on Polkadot.","sidebar":"docs"},"learn/learn-sassafras":{"id":"learn/learn-sassafras","title":"Polkadot Block Production: SASSAFRAS","description":"The Consensus Mechanism of Polkadot.","sidebar":"docs"},"learn/learn-spree":{"id":"learn/learn-spree","title":"SPREE","description":"Fundamentals of SPREE.","sidebar":"docs"},"learn/learn-staking":{"id":"learn/learn-staking","title":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","sidebar":"docs"},"learn/learn-staking-advanced":{"id":"learn/learn-staking-advanced","title":"Advanced Staking Concepts","description":"Advanced Concepts about Staking on Polkadot.","sidebar":"docs"},"learn/learn-system-chains":{"id":"learn/learn-system-chains","title":"System Parachains","description":"System Parachains currently deployed on Polkadot.","sidebar":"docs"},"learn/learn-teleport":{"id":"learn/learn-teleport","title":"Teleporting Assets","description":"Teleport Assets between Parachains and Relay Chain.","sidebar":"docs"},"learn/learn-transaction-fees":{"id":"learn/learn-transaction-fees","title":"Transaction Fees","description":"How Transaction Fees are Calculated and Handled.","sidebar":"docs"},"learn/learn-transactions":{"id":"learn/learn-transactions","title":"Types of Transactions (a.k.a. Extrinsics)","description":"Types of Transactions on Polkadot.","sidebar":"docs"},"learn/learn-validator":{"id":"learn/learn-validator","title":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-video-tutorials":{"id":"learn/learn-video-tutorials","title":"Videos about Polkadot","description":"Videos about Polkadot and Related Topics.","sidebar":"docs"},"learn/learn-wasm":{"id":"learn/learn-wasm","title":"WebAssembly (Wasm)","description":"WASM and its Role in Polkadot\'s Runtime.","sidebar":"docs"},"learn/learn-xcm":{"id":"learn/learn-xcm","title":"Introduction to Cross-Consensus Message Format (XCM)","description":"XCM, The Messaging Format at the Forefront of Interoperability.","sidebar":"docs"},"learn/learn-xcm-instructions":{"id":"learn/learn-xcm-instructions","title":"XCM Instructions & Register Specification","description":"Specification for Instructions and Registers for the XCM Format.","sidebar":"docs"},"learn/learn-xcm-pallet":{"id":"learn/learn-xcm-pallet","title":"XCM FRAME Pallet Overview","description":"Mechanics of the XCM Pallet and its role in Polkadot\'s Ecosystem.","sidebar":"docs"},"learn/learn-xcm-transport":{"id":"learn/learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","description":"Methods to send XCM Messages across Networks.","sidebar":"docs"},"learn/learn-xcm-usecases":{"id":"learn/learn-xcm-usecases","title":"XCM Use-cases & Examples","description":"Cross-consensus Interactions and the XCM Format.","sidebar":"docs"},"learn/learn-xcvm":{"id":"learn/learn-xcvm","title":"XCM Virtual Machine (XCVM) & XCM Executor","description":"Design of the XCM Executor and Mechanics of the XCM Virtual Machine.","sidebar":"docs"},"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive":{"id":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive","title":"Executor Configuration","description":"Deep Dive into the Configuration of the XCM-Executor.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees","title":"Weight and Fees","description":"Weight and Fees in XCM.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset","title":"MultiAsset","description":"The MultiAsset Datatype.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary","title":"Fundamentals","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm","title":"XCVM","description":"Deep Dive into XCVM.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example","title":"Example","description":"A MultiLocation Example.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions","title":"Junction(s)","description":"The Junction Type in a MultiLocation Struct.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary","title":"MultiLocation","description":"Learn about XCM fundamentals.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-assets":{"id":"learn/xcm/journey/learn-xcm-docs-journey-assets","title":"Trap and Claim Assets","description":"Instructions to Trap and Claim Assets.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-channels":{"id":"learn/xcm/journey/learn-xcm-docs-journey-channels","title":"Channels and Bridges","description":"Establishment of HRMP Channels between Parachains.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-expectations":{"id":"learn/xcm/journey/learn-xcm-docs-journey-expectations","title":"Expectations","description":"Expect Instructions to Check if a Condition is Valid.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-fees":{"id":"learn/xcm/journey/learn-xcm-docs-journey-fees","title":"Fee Handling","description":"How Fees for XCM Transfers are Handled.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-holding":{"id":"learn/xcm/journey/learn-xcm-docs-journey-holding","title":"More Holding Modifiers","description":"More Instructions to Alter the Holding Register.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-origin":{"id":"learn/xcm/journey/learn-xcm-docs-journey-origin","title":"Origin Manipulation","description":"Manipulating the Origin of XCM.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-queries":{"id":"learn/xcm/journey/learn-xcm-docs-journey-queries","title":"Queries","description":"Query Information from another Consensus System.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-register":{"id":"learn/xcm/journey/learn-xcm-docs-journey-register","title":"Register Modifiers","description":"More Instructions to Change the XCVM Registers.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-summary":{"id":"learn/xcm/journey/learn-xcm-docs-journey-summary","title":"A Journey through XCM","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-transact":{"id":"learn/xcm/journey/learn-xcm-docs-journey-transact","title":"Transact","description":"The Transact Instruction to Execute XCM Calls.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-version":{"id":"learn/xcm/journey/learn-xcm-docs-journey-version","title":"Version Subscription","description":"Get Notified about XCM Version Updates.","sidebar":"docs"},"learn/xcm/journey/locks/learn-xcm-docs-journey-locks":{"id":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks","title":"Locks","description":"Restrict Transfer or Withdrawal of Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve","title":"Reserve-backed Transfers","description":"Reserve-backed Transfers: Third-party Reserve to store Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary","title":"Transfers","description":"Summary about XCM Transfers.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport","title":"Asset Teleportation","description":"Teleportation: Sending Assets Across Chains.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-intro":{"id":"learn/xcm/learn-xcm-docs-intro","title":"XCM: Cross-Consensus Messaging","description":"Introduction to the XCM Documentation.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-testing":{"id":"learn/xcm/learn-xcm-docs-testing","title":"Testing","description":"Testing XCM-powered Solutions.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-architecture":{"id":"learn/xcm/overview/learn-xcm-docs-overview-architecture","title":"The XCM Architecture","description":"The XCM Architecture.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-format":{"id":"learn/xcm/overview/learn-xcm-docs-overview-format","title":"XCM is a Format, not a Protocol","description":"XCM is a Format, not a Protocol.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-intro":{"id":"learn/xcm/overview/learn-xcm-docs-overview-intro","title":"Introduction","description":"An Introduction to XCM.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-summary":{"id":"learn/xcm/overview/learn-xcm-docs-overview-summary","title":"XCM: Cross-Consensus Messaging","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-xcvm":{"id":"learn/xcm/overview/learn-xcm-docs-overview-xcvm","title":"The XCVM","description":"The Cross-Consensus Virtual Machine.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look","title":"First Look at an XCM","description":"First Look at an XCM.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator","title":"XCM Simulator","description":"Test XCM using a Simulated Environment.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary","title":"Quickstart","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-glossary":{"id":"learn/xcm/reference/learn-xcm-docs-reference-glossary","title":"Glossary","description":"Glossary.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers":{"id":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers","title":"All XCVM Registers","description":"All XCVM Registers.","sidebar":"docs"},"maintain/archive/maintain-guides-democracy":{"id":"maintain/archive/maintain-guides-democracy","title":"Participate in Democracy","description":"Steps on how to participate in democracy.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-join-council":{"id":"maintain/archive/maintain-guides-how-to-join-council","title":"Join the Council","description":"Steps on how to join the official on-chain council.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-vote-councillor":{"id":"maintain/archive/maintain-guides-how-to-vote-councillor","title":"Voting for Councillors","description":"Steps on how to vote for councillors.","sidebar":"docs"},"maintain/doc-maintain-guides-validator-community":{"id":"maintain/doc-maintain-guides-validator-community","title":"Validator Community Overview","description":"An extensive guide to help you start and build a validator community.","sidebar":"docs"},"maintain/kusama/maintain-guides-how-to-validate-kusama":{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","description":"The fundamentals for running a Kusama validator."},"maintain/kusama/maintain-guides-society-kusama":{"id":"maintain/kusama/maintain-guides-society-kusama","title":"Kappa Sigma Mu","description":"Learn about the Kappa Sigma Mu society and join as a member."},"maintain/maintain-archive":{"id":"maintain/maintain-archive","title":"Maintain Archive","description":"Archive for the Maintain Section.","sidebar":"docs"},"maintain/maintain-bootnode":{"id":"maintain/maintain-bootnode","title":"Set up a Boot Node","description":"Steps on setting up a boot node.","sidebar":"docs"},"maintain/maintain-endpoints":{"id":"maintain/maintain-endpoints","title":"Node Endpoints","description":"List of node endpoints and examples of use.","sidebar":"docs"},"maintain/maintain-errors":{"id":"maintain/maintain-errors","title":"Errors and How to Resolve Them","description":"Common errors you might encounter and how they can be resolved.","sidebar":"docs"},"maintain/maintain-guides-async-backing":{"id":"maintain/maintain-guides-async-backing","title":"Upgrade Parachain for Asynchronous Backing Compatibility","description":"Steps on how to upgrade a parachain to be compatible with the relay chain\'s async backing feature.","sidebar":"docs"},"maintain/maintain-guides-avoid-slashing":{"id":"maintain/maintain-guides-avoid-slashing","title":"Validator Best Practices","description":"Best practices to avoid slashing.","sidebar":"docs"},"maintain/maintain-guides-how-to-chill":{"id":"maintain/maintain-guides-how-to-chill","title":"How to Chill","description":"Steps on chilling as a network participant.","sidebar":"docs"},"maintain/maintain-guides-how-to-monitor-your-node":{"id":"maintain/maintain-guides-how-to-monitor-your-node","title":"Monitor your node","description":"This guide will walk you through how to set up Prometheus with","sidebar":"docs"},"maintain/maintain-guides-how-to-stop-validating":{"id":"maintain/maintain-guides-how-to-stop-validating","title":"How to Stop Validating","description":"Steps on how to stop validating.","sidebar":"docs"},"maintain/maintain-guides-how-to-systemd":{"id":"maintain/maintain-guides-how-to-systemd","title":"Using systemd for a Validator Node","description":"Using a service manager for your validator node.","sidebar":"docs"},"maintain/maintain-guides-how-to-upgrade":{"id":"maintain/maintain-guides-how-to-upgrade","title":"How to Upgrade Your Validator","description":"Validators perform critical functions for the network, and as such, have strict uptime requirements.","sidebar":"docs"},"maintain/maintain-guides-how-to-validate-polkadot":{"id":"maintain/maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","description":"The fundamentals for running a Polkadot validator.","sidebar":"docs"},"maintain/maintain-guides-secure-validator":{"id":"maintain/maintain-guides-secure-validator","title":"Secure Validator","description":"Tips for running a secure validator.","sidebar":"docs"},"maintain/maintain-guides-validator-payout":{"id":"maintain/maintain-guides-validator-payout","title":"Validator Payout Overview","description":"How validator payout works on the network and what you should expect.","sidebar":"docs"},"maintain/maintain-index":{"id":"maintain/maintain-index","title":"Network Maintainers","description":"Reference point for network maintenance guides.","sidebar":"docs"},"maintain/maintain-networks":{"id":"maintain/maintain-networks","title":"Networks","description":"Information about the different networks of the Polkadot ecosystem.","sidebar":"docs"},"maintain/maintain-polkadot-parameters":{"id":"maintain/maintain-polkadot-parameters","title":"Polkadot Parameters","description":"A description about fundamental Polkadot parameters.","sidebar":"docs"},"maintain/maintain-rpc":{"id":"maintain/maintain-rpc","title":"Set up a RPC node","description":"Steps on setting up a RPC node.","sidebar":"docs"},"maintain/maintain-sync":{"id":"maintain/maintain-sync","title":"Set up a Full Node","description":"Steps on how to set up a full node.","sidebar":"docs"},"maintain/maintain-wss":{"id":"maintain/maintain-wss","title":"Secure the WebSocket","description":"Steps on setting up a secure socket for remote connections.","sidebar":"docs"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53],{22624:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Explore","description":"Wallets and Apps in the Polkadot Ecosystem.","items":[{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"general/getting-started"},{"type":"category","label":"Wallets","description":"Beginner friendly wallets with advanced features.","items":[{"type":"link","label":"Polkadot Ecosystem Wallets","description":"Wallets listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/wallets/"},{"type":"link","label":"Wallets and Extensions","href":"/docs/wallets-and-extensions","docId":"general/wallets-and-extensions"},{"type":"link","label":"Ledger","href":"/docs/ledger","docId":"general/ledger"},{"type":"link","label":"Polkadot Vault","href":"/docs/polkadot-vault","docId":"general/polkadot-vault"}],"collapsed":true,"collapsible":true,"href":"/docs/wallets-index"},{"type":"category","label":"Apps","description":"Apps for Staking, Governance, Multisigs, NFTs and many more use cases.","items":[{"type":"link","label":"Polkadot Ecosystem Apps","description":"Apps listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/dapps/"},{"type":"link","label":"DotAppStore","description":"Apps upvoted by the community.","href":"https://dotappstore.com/"},{"type":"link","label":"Staking Apps","href":"/docs/staking-apps","docId":"general/staking-apps"},{"type":"link","label":"Governance Apps","href":"/docs/governance-apps","docId":"general/governance-apps"},{"type":"link","label":"Multisig Apps","href":"/docs/multisig-apps","docId":"general/multisig-apps"},{"type":"link","label":"NFT Projects","href":"/docs/learn-nft-projects","docId":"learn/learn-nft-projects"},{"type":"link","label":"Parachain Apps","href":"/docs/parachains-apps","docId":"general/parachains-apps"}],"collapsed":true,"collapsible":true,"href":"/docs/apps-index"},{"type":"category","label":"Dashboards","description":"Dashboards in the Polkadot Ecosystem.","items":[{"type":"link","label":"Staking Dashboard","href":"/docs/staking-dashboard","docId":"general/staking-dashboard"}],"collapsed":true,"collapsible":true,"href":"/docs/dashboards-index"},{"type":"category","label":"Community & Contributors","description":"Polkadot Community and Wiki Contributors.","items":[{"type":"link","label":"Community","href":"/docs/community","docId":"general/community"},{"type":"link","label":"Contributing to the Wiki","href":"/docs/contributing","docId":"general/contributing"},{"type":"link","label":"Contributors","href":"/docs/contributors","docId":"general/contributors"}],"collapsed":true,"collapsible":true,"href":"/docs/community-index"},{"type":"category","label":"Programs","description":"Programs for Grants, Bounties, Ambassadors and many more inititatives.","items":[{"type":"link","label":"Decentralized Futures","href":"/docs/decentralized-futures","docId":"general/decentralized-futures"},{"type":"link","label":"Decentralized Voices","href":"/docs/decentralized-voices","docId":"general/decentralized-voices"},{"type":"link","label":"Grants","href":"/docs/grants","docId":"general/grants"},{"type":"link","label":"Bug Bounty","href":"/docs/bug-bounty","docId":"general/bug-bounty"},{"type":"link","label":"Polkadot Ambassadors","href":"/docs/ambassadors","docId":"general/ambassadors"},{"type":"link","label":"Alpha Program","href":"/docs/alpha-program","docId":"general/alpha-program"},{"type":"link","label":"Thousand Validators","href":"/docs/thousand-validators","docId":"general/doc-thousand-validators"},{"type":"link","label":"Thousand Contributors","href":"/docs/thousand-contributors","docId":"general/doc-thousand-contributors"},{"type":"link","label":"Developer Heroes","href":"/docs/dev-heroes","docId":"general/dev-heroes"}],"collapsed":true,"collapsible":true,"href":"/docs/programs-index"},{"type":"link","label":"Metadata Explorer","href":"/docs/metadata","docId":"general/metadata"}],"collapsed":true,"collapsible":true,"href":"/docs/explore-index"},{"type":"category","label":"Learn","items":[{"type":"category","label":"General","description":"General Information to get started with Polkadot and Web3.","items":[{"type":"link","label":"Web3 and Polkadot","href":"/docs/web3-and-polkadot","docId":"general/web3-and-polkadot"},{"type":"category","label":"Polkadot Vision","description":"Polkadot\'s Vision revealed by Gavin Wood at Decoded 2023.","items":[{"type":"link","label":"Polkadot 1.0","href":"/docs/polkadot-v1","docId":"general/polkadot-v1"},{"type":"link","label":"Polkadot Direction","href":"/docs/polkadot-direction","docId":"general/polkadot-direction"}],"collapsed":true,"collapsible":true,"href":"/docs/polkadot-vision-index"},{"type":"category","label":"Stay Safe","description":"Good-practices to Stay Safe while Surfing in Web3.","items":[{"type":"link","label":"Do Your Own Research","href":"/docs/how-to-dyor","docId":"general/how-to-dyor"},{"type":"link","label":"Scam Protection","href":"/docs/learn-scams","docId":"general/scams"},{"type":"link","label":"Transaction Verification","href":"/docs/transaction-attacks","docId":"general/transaction-attacks"}],"collapsed":true,"collapsible":true,"href":"/docs/stay-safe-index"},{"type":"link","label":"Build on Polkadot","href":"/docs/start-building","docId":"general/start-building"},{"type":"link","label":"Research Pages","href":"/docs/research","docId":"general/research"},{"type":"link","label":"FAQ","href":"/docs/faq","docId":"general/faq"},{"type":"link","label":"Glossary","href":"/docs/glossary","docId":"general/glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/general-index"},{"type":"category","label":"Basics","description":"Staking, Accounts, Transactions, Tokens and NFTs, and Governance.","items":[{"type":"category","label":"Accounts","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Account Abstraction","href":"/docs/learn-account-abstraction","docId":"learn/learn-account-abstraction"},{"type":"link","label":"Account Identity","href":"/docs/learn-identity","docId":"learn/learn-identity"},{"type":"link","label":"Multi-Signature Accounts","href":"/docs/learn-account-multisig","docId":"learn/learn-account-multisig"},{"type":"link","label":"Proxy Accounts","href":"/docs/learn-proxies","docId":"learn/learn-proxies"},{"type":"link","label":"Pure Proxy Accounts","href":"/docs/learn-proxies-pure","docId":"learn/learn-proxies-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-accounts"},{"type":"category","label":"Transactions","description":"Extrinsics, Balance Transfers, and Fees.","items":[{"type":"link","label":"Transaction Fees","href":"/docs/learn-transaction-fees","docId":"learn/learn-transaction-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-transactions"},{"type":"category","label":"Staking","description":"Mechanics of Staking.","items":[{"type":"link","label":"Introduction to Staking","href":"/docs/learn-staking","docId":"learn/learn-staking"},{"type":"link","label":"Nomination Pools","href":"/docs/learn-nomination-pools","docId":"learn/learn-nomination-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-staking-index"},{"type":"category","label":"Polkadot OpenGov","description":"Everything about Polkadot OpenGov.","items":[{"type":"link","label":"Polkadot OpenGov","href":"/docs/learn-polkadot-opengov","docId":"learn/learn-polkadot-opengov"},{"type":"link","label":"OpenGov Origins","href":"/docs/learn-polkadot-opengov-origins","docId":"learn/learn-polkadot-opengov-origins"},{"type":"link","label":"Technical Fellowship","href":"/docs/learn-polkadot-technical-fellowship","docId":"learn/learn-polkadot-technical-fellowship"},{"type":"link","label":"OpenGov.Watch","description":"Community-maintained Support Pages about Polkadot OpenGov.","href":"https://www.opengov.watch/"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-opengov-index"},{"type":"link","label":"Treasury","href":"/docs/learn-polkadot-opengov-treasury","docId":"learn/learn-polkadot-opengov-treasury"},{"type":"category","label":"Tokens and Assets","description":"DOT Token, Asset Hub, and Teleports.","items":[{"type":"link","label":"DOT","href":"/docs/learn-DOT","docId":"learn/learn-DOT"},{"type":"link","label":"Token Inflation","href":"/docs/learn-inflation","docId":"learn/learn-inflation"},{"type":"category","label":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","items":[{"type":"link","label":"Asset Conversion","href":"/docs/learn-asset-conversion-assethub","docId":"learn/learn-asset-conversion-assethub"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets"},{"type":"link","label":"Teleporting Assets","href":"/docs/learn-teleport","docId":"learn/learn-teleport"},{"type":"link","label":"Introduction to NFTs","href":"/docs/learn-nft","docId":"learn/learn-nft"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets-index"},{"type":"category","label":"Network Participants","description":"Participants in the Polkadot Ecosystem.","items":[{"type":"link","label":"Collator","href":"/docs/learn-collator","docId":"learn/learn-collator"},{"type":"link","label":"Nominator","href":"/docs/learn-nominator","docId":"learn/learn-nominator"},{"type":"link","label":"Validator","href":"/docs/learn-validator","docId":"learn/learn-validator"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-participants-index"},{"type":"category","label":"Components","description":"OpenGov, Treasury, WASM, Runtime Upgrades, and more.","items":[{"type":"link","label":"Polkadot Host","href":"/docs/learn-polkadot-host","docId":"learn/learn-polkadot-host"},{"type":"link","label":"WebAssembly (Wasm)","href":"/docs/learn-wasm","docId":"learn/learn-wasm"},{"type":"link","label":"Runtime Upgrades","href":"/docs/learn-runtime-upgrades","docId":"learn/learn-runtime-upgrades"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-components-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-basics-index"},{"type":"category","label":"Advanced","description":"Advanced Concepts & Guides about Accounts, Staking, and NFTs.","items":[{"type":"category","label":"Polkadot-JS","description":"Overview of Polkadot-JS.","items":[{"type":"link","label":"Polkadot-JS Tooling","href":"/docs/polkadotjs","docId":"general/polkadotjs"},{"type":"link","label":"Polkadot-JS UI","href":"/docs/polkadotjs-ui","docId":"general/polkadotjs-ui"},{"type":"category","label":"Polkadot-JS Guides","description":"Polkadot-JS Guides about Staking, Asset Hub, Vault App, and more.","items":[{"type":"category","label":"Account Guides","description":"Polkadot-JS Guides about Accounts.","items":[{"type":"link","label":"Multisig Guides","href":"/docs/learn-guides-accounts-multisig","docId":"learn/learn-guides-accounts-multisig"},{"type":"link","label":"Proxy Guides","href":"/docs/learn-guides-accounts-proxy","docId":"learn/learn-guides-accounts-proxy"},{"type":"link","label":"Pure Proxy Guides","href":"/docs/learn-guides-accounts-proxy-pure","docId":"learn/learn-guides-accounts-proxy-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-accounts"},{"type":"link","label":"Transfer Guides","href":"/docs/learn-guides-transfers","docId":"learn/learn-guides-transfers"},{"type":"category","label":"Staking Guides","description":"Polkadot-JS Guides about Staking.","items":[{"type":"link","label":"Nominator Guides","href":"/docs/learn-guides-nominator","docId":"learn/learn-guides-nominator"},{"type":"link","label":"Nomination Pool Guides","href":"/docs/learn-guides-staking-pools","docId":"learn/learn-guides-staking-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-staking"},{"type":"link","label":"OpenGov Guides","href":"/docs/learn-guides-polkadot-opengov","docId":"learn/learn-guides-polkadot-opengov"},{"type":"link","label":"Treasury Guides","href":"/docs/learn-guides-treasury","docId":"learn/learn-guides-treasury"},{"type":"link","label":"Bounty Guides","href":"/docs/learn-guides-bounties","docId":"learn/learn-guides-bounties"},{"type":"link","label":"Identity Guides","href":"/docs/learn-guides-identity","docId":"learn/learn-guides-identity"},{"type":"link","label":"Ledger Guides","href":"/docs/learn-guides-ledger","docId":"learn/learn-guides-ledger"},{"type":"link","label":"Polkadot Vault Guides","href":"/docs/learn-guides-vault","docId":"learn/learn-guides-vault"},{"type":"category","label":"Asset Hub Guides","description":"Polkadot-JS Guides about Asset Hub.","items":[{"type":"link","label":"Create Asset Guides","href":"/docs/learn-guides-assets-create","docId":"learn/learn-guides-assets-create"},{"type":"link","label":"Asset Hub Ledger Guides","href":"/docs/learn-guides-assets-ledger","docId":"learn/learn-guides-assets-ledger"},{"type":"link","label":"Asset Conversion Tutorials","href":"/docs/learn-guides-asset-conversion","docId":"learn/learn-guides-asset-conversion"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-assets"},{"type":"category","label":"Bridge Hub Guides","description":"Polkadot-JS Guides for Bridge Hub.","items":[{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-guides-dot-ksm-bridge","docId":"learn/learn-guides-dot-ksm-bridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-bridges"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-js-guides"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadotjs"},{"type":"category","label":"Architecture","description":"Nominators, Validators, Collators, Parachains, and more.","items":[{"type":"link","label":"Consensus","href":"/docs/learn-consensus","docId":"learn/learn-consensus"},{"type":"category","label":"Parachains","description":"Parachains\' Protocol, Auctions, Crowdloans, and more.","items":[{"type":"link","label":"Introduction to Parachains","href":"/docs/learn-parachains","docId":"learn/learn-parachains"},{"type":"link","label":"Protocol Overview","href":"/docs/learn-parachains-protocol","docId":"learn/learn-parachains-protocol"},{"type":"link","label":"System Parachains","href":"/docs/learn-system-chains","docId":"learn/learn-system-chains"},{"type":"link","label":"Parachain Slot Auctions","href":"/docs/learn-auction","docId":"learn/learn-auction"},{"type":"link","label":"Parachain Crowdloans","href":"/docs/learn-crowdloans","docId":"learn/learn-crowdloans"},{"type":"link","label":"Parachains FAQ","href":"/docs/learn-parachains-faq","docId":"learn/learn-parachains-faq"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-parachains-index"},{"type":"link","label":"Asynchronous Backing","href":"/docs/learn-async-backing","docId":"learn/learn-async-backing"},{"type":"category","label":"Agile Coretime","description":"Concepts, Implementation and Tutorials on Agile Coretime.","items":[{"type":"link","label":"Agile Coretime Intro","href":"/docs/learn-agile-coretime","docId":"learn/learn-agile-coretime"},{"type":"link","label":"Coretime Marketplaces","href":"/docs/learn-guides-coretime-marketplaces","docId":"learn/learn-guides-coretime-marketplaces"},{"type":"link","label":"Coretime for Parachains","href":"/docs/learn-guides-coretime-parachains","docId":"learn/learn-guides-coretime-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-agile-coretime-index"},{"type":"category","label":"Bridges","description":"Bridging Polkadot to other Blockchain Protocols.","items":[{"type":"link","label":"Bridge Hub","href":"/docs/learn-bridge-hub","docId":"learn/learn-bridge-hub"},{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-dot-ksm-bridge","docId":"learn/learn-dot-ksm-bridge"},{"type":"link","label":"Hyperbridge","href":"/docs/learn-hyperbridge","docId":"learn/learn-hyperbridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-bridges"},{"type":"category","label":"Cross Consensus Messaging (XCM)","description":"Polkadot\'s Cross-Consensus Messaging Format (XCM).","items":[{"type":"link","label":"Cross-Consensus Message Format (XCM)","href":"/docs/learn-xcm","docId":"learn/learn-xcm"},{"type":"link","label":"XCM Pallet","href":"/docs/learn-xcm-pallet","docId":"learn/learn-xcm-pallet"},{"type":"link","label":"XCM Use-cases","href":"/docs/learn-xcm-usecases","docId":"learn/learn-xcm-usecases"},{"type":"link","label":"XCM Transport","href":"/docs/learn-xcm-transport","docId":"learn/learn-xcm-transport"},{"type":"link","label":"XCM Virtual Machine (XCVM)","href":"/docs/learn-xcvm","docId":"learn/learn-xcvm"},{"type":"link","label":"XCM Instructions","href":"/docs/learn-xcm-instructions","docId":"learn/learn-xcm-instructions"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-xcm-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-architecture"},{"type":"link","label":"Accounts","href":"/docs/learn-account-advanced","docId":"learn/learn-account-advanced"},{"type":"link","label":"Advanced Staking Concepts","href":"/docs/learn-staking-advanced","docId":"learn/learn-staking-advanced"},{"type":"link","label":"NFT Pallets","href":"/docs/learn-nft-pallets","docId":"learn/learn-nft-pallets"},{"type":"link","label":"Cryptography","href":"/docs/learn-cryptography","docId":"learn/learn-cryptography"},{"type":"link","label":"NPoS Election Algorithms","href":"/docs/learn-phragmen","docId":"learn/learn-phragmen"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-advanced-index"},{"type":"category","label":"XCM Docs","description":"In-depth documentation about the Polkadot\'s Cross-Chain Messaging (XCM).","items":[{"type":"link","label":"XCM: Cross-Consensus Messaging","href":"/docs/learn/xcm/introduction","docId":"learn/xcm/learn-xcm-docs-intro"},{"type":"category","label":"Overview","description":"Overview of the XCM Documentation.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/overview-summary","docId":"learn/xcm/overview/learn-xcm-docs-overview-summary"},{"type":"link","label":"Introduction","href":"/docs/learn/xcm/overview-intro","docId":"learn/xcm/overview/learn-xcm-docs-overview-intro"},{"type":"link","label":"A Format, not a Protocol","href":"/docs/learn/xcm/overview-format","docId":"learn/xcm/overview/learn-xcm-docs-overview-format"},{"type":"link","label":"The XCVM","href":"/docs/learn/xcm/overview-xcvm","docId":"learn/xcm/overview/learn-xcm-docs-overview-xcvm"},{"type":"link","label":"Architecture","href":"/docs/learn/xcm/overview-architecture","docId":"learn/xcm/overview/learn-xcm-docs-overview-architecture"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/overview"},{"type":"category","label":"Quickstart","description":"Start Diving into XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/quickstart-summary","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary"},{"type":"link","label":"XCM Simulator","href":"/docs/learn/xcm/quickstart-simulator","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator"},{"type":"link","label":"First Look at an XCM","href":"/docs/learn/xcm/quickstart-first-look","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/quickstart"},{"type":"category","label":"Fundamentals","description":"Fundamental Concepts about XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals-summary","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary"},{"type":"category","label":"MultiLocation","description":"The MultiLocation Type.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals/multilocation-summary","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary"},{"type":"link","label":"Junction(s)","href":"/docs/learn/xcm/fundamentals/multilocation-junctions","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions"},{"type":"link","label":"Example","href":"/docs/learn/xcm/fundamentals/multilocation-example","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals/multilocation"},{"type":"link","label":"MultiAsset","href":"/docs/learn/xcm/fundamentals-multiasset","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset"},{"type":"link","label":"XCVM","href":"/docs/learn/xcm/fundamentals-xcvm","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm"},{"type":"link","label":"Weight and Fees","href":"/docs/learn/xcm/fundamentals-fees","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals"},{"type":"category","label":"A Journey through XCM","description":"A Practical Introduction to the XCM Features","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey-summary","docId":"learn/xcm/journey/learn-xcm-docs-journey-summary"},{"type":"category","label":"Transfers","description":"Transferring Assets between Consensus Systems with XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey/transfers-summary","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary"},{"type":"link","label":"Asset Teleportation","href":"/docs/learn/xcm/journey/transfers-teleport","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport"},{"type":"link","label":"Reserve-backed Transfers","href":"/docs/learn/xcm/journey/transfers-reserve","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey/transfers"},{"type":"link","label":"Fee Handling","href":"/docs/learn/xcm/journey-fees","docId":"learn/xcm/journey/learn-xcm-docs-journey-fees"},{"type":"link","label":"Transact: A General Solution","href":"/docs/learn/xcm/journey-transact","docId":"learn/xcm/journey/learn-xcm-docs-journey-transact"},{"type":"link","label":"Origin Manipulation","href":"/docs/learn/xcm/journey-origin","docId":"learn/xcm/journey/learn-xcm-docs-journey-origin"},{"type":"link","label":"More Register Modifiers","href":"/docs/learn/xcm/journey-register","docId":"learn/xcm/journey/learn-xcm-docs-journey-register"},{"type":"link","label":"More Holding Modifiers","href":"/docs/learn/xcm/journey-holding","docId":"learn/xcm/journey/learn-xcm-docs-journey-holding"},{"type":"link","label":"Trap and Claim Assets","href":"/docs/learn/xcm/journey-assets","docId":"learn/xcm/journey/learn-xcm-docs-journey-assets"},{"type":"link","label":"Expectations","href":"/docs/learn/xcm/journey-expectations","docId":"learn/xcm/journey/learn-xcm-docs-journey-expectations"},{"type":"link","label":"Queries","href":"/docs/learn/xcm/journey-queries","docId":"learn/xcm/journey/learn-xcm-docs-journey-queries"},{"type":"link","label":"Version Subscription","href":"/docs/learn/xcm/journey-version","docId":"learn/xcm/journey/learn-xcm-docs-journey-version"},{"type":"link","label":"Locks","href":"/docs/learn/xcm/journey-locks","docId":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks"},{"type":"link","label":"Channels and Bridges","href":"/docs/learn/xcm/journey-channels","docId":"learn/xcm/journey/learn-xcm-docs-journey-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey"},{"type":"link","label":"Executor Configuration","href":"/docs/learn/xcm/config-deep-dive","docId":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive"},{"type":"link","label":"Testing","href":"/docs/learn/xcm/testing","docId":"learn/xcm/learn-xcm-docs-testing"},{"type":"category","label":"References","description":"XCVM Registers and Glossary","items":[{"type":"link","label":"All XCVM Registers","href":"/docs/learn/xcm/reference-xcvm-registers","docId":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers"},{"type":"link","label":"Glossary","href":"/docs/learn/xcm/reference-glossary","docId":"learn/xcm/reference/learn-xcm-docs-reference-glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/references"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm"},{"type":"category","label":"Polkadot Comparisons","description":"Comparison between Polkadot and other Networks. ","items":[{"type":"link","label":"Kusama","href":"/docs/learn-comparisons-kusama","docId":"learn/learn-comparisons-kusama"},{"type":"link","label":"Ethereum","href":"/docs/learn-comparisons-ethereum-2","docId":"learn/learn-comparisons-ethereum-2"},{"type":"link","label":"Cosmos","href":"/docs/learn-comparisons-cosmos","docId":"learn/learn-comparisons-cosmos"},{"type":"link","label":"Avalanche","href":"/docs/learn-comparisons-avalanche","docId":"learn/learn-comparisons-avalanche"},{"type":"link","label":"Other Comparisons","href":"/docs/learn-comparisons","docId":"learn/learn-comparisons"},{"type":"link","label":"Layer Two and Rollups","href":"/docs/learn-comparisons-rollups","docId":"learn/learn-comparisons-rollups"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-comparisons-index"},{"type":"link","label":"Videos","href":"/docs/learn-video-tutorials","docId":"learn/learn-video-tutorials"},{"type":"category","label":"Future Implementations","description":"Implementations that will be deployed on Polkadot.","items":[{"type":"link","label":"SPREE","href":"/docs/learn-spree","docId":"learn/learn-spree"},{"type":"link","label":"Parathreads","href":"/docs/learn-parathreads","docId":"learn/learn-parathreads"},{"type":"link","label":"Elastic Scaling","href":"/docs/learn-elastic-scaling","docId":"learn/learn-elastic-scaling"},{"type":"link","label":"SASSAFRAS","href":"/docs/learn-sassafras","docId":"learn/learn-sassafras"},{"type":"category","label":"JAM","description":"Polkadot\'s Join & Accumulate Machine.","items":[{"type":"link","label":"JAM Chain","href":"/docs/learn-jam-chain","docId":"learn/learn-jam-chain"},{"type":"link","label":"JAM FAQ","href":"/docs/learn-jam-faq","docId":"learn/learn-jam-faq"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-jam"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-future-implementations-index"},{"type":"category","label":"Archive","description":"Implementations no longer live on Polkadot.","items":[{"type":"link","label":"Governance V1","href":"/docs/learn/learn-governance","docId":"learn/archive/learn-governance"},{"type":"link","label":"Gov1 Treasury","href":"/docs/learn/learn-treasury","docId":"learn/archive/learn-treasury"},{"type":"link","label":"Polkadot Launch Phases","href":"/docs/learn/learn-launch","docId":"learn/archive/learn-launch"},{"type":"link","label":"Redenomination of DOT","href":"/docs/learn/learn-redenomination","docId":"learn/archive/learn-redenomination"},{"type":"link","label":"Controller Accounts","href":"/docs/learn/learn-controller","docId":"learn/archive/learn-controller"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-index"},{"type":"category","label":"Build","items":[{"type":"category","label":"Client-side Development","items":[{"type":"link","label":"Building Client-side Apps","href":"/docs/build-client-side","docId":"build/build-client-side"},{"type":"link","label":"Using Light Clients","href":"/docs/build-light-clients","docId":"build/build-light-clients"},{"type":"link","label":"Node Interaction","href":"/docs/build-node-interaction","docId":"build/build-node-interaction"}],"collapsed":true,"collapsible":true,"href":"/docs/build-client-index"},{"type":"link","label":"Smart Contracts","href":"/docs/build-smart-contracts","docId":"build/build-smart-contracts"},{"type":"category","label":"Protocol Development","items":[{"type":"link","label":"Polkadot Protocol Overview","href":"/docs/build-protocol-info","docId":"build/build-protocol-info"},{"type":"link","label":"Using AssetHub","href":"/docs/build-integrate-assets","docId":"build/build-integrate-assets"},{"type":"link","label":"Opening HRMP Channels","href":"/docs/build-hrmp-channels","docId":"build/build-hrmp-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/build-protocol-index"},{"type":"link","label":"Development Networks","href":"/docs/build-network-overview","docId":"build/build-network-overview"},{"type":"category","label":"Tooling","items":[{"type":"link","label":"Explorer, Data, & Indexing Tools","href":"/docs/build-data","docId":"build/build-data"},{"type":"link","label":"Open Source Stack","href":"/docs/build-open-source","docId":"build/build-open-source"}],"collapsed":true,"collapsible":true,"href":"/docs/build-tools-index"},{"type":"link","label":"Hackathons","href":"/docs/build-hackathon","docId":"build/build-hackathon"},{"type":"category","label":"Build Archive","items":[{"type":"link","label":"Transaction Construction","href":"/docs/build-transaction-construction","docId":"build/build-transaction-construction"},{"type":"link","label":"Integration Initiation","href":"/docs/build-integration","docId":"build/build-integration"},{"type":"link","label":"Node Management","href":"/docs/build-node-management","docId":"build/build-node-management"},{"type":"link","label":"Parachain Development","href":"/docs/build-pdk","docId":"build/build-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/build-archive-index"}],"collapsed":true,"collapsible":true,"href":"/docs/build-guide"},{"type":"category","label":"Maintain","items":[{"type":"link","label":"Parameters","href":"/docs/maintain-polkadot-parameters","docId":"maintain/maintain-polkadot-parameters"},{"type":"category","label":"Nodes and Dapps","description":"Learn how to set up a node.","items":[{"type":"link","label":"Node Endpoints","href":"/docs/maintain-endpoints","docId":"maintain/maintain-endpoints"},{"type":"link","label":"Set up a Full Node","href":"/docs/maintain-sync","docId":"maintain/maintain-sync"},{"type":"link","label":"Set up a Boot Node","href":"/docs/maintain-bootnode","docId":"maintain/maintain-bootnode"},{"type":"link","label":"Set up a RPC node","href":"/docs/maintain-rpc","docId":"maintain/maintain-rpc"},{"type":"link","label":"Secure the WebSocket","href":"/docs/maintain-wss","docId":"maintain/maintain-wss"},{"type":"link","label":"Networks","href":"/docs/maintain-networks","docId":"maintain/maintain-networks"},{"type":"link","label":"Resolving Errors","href":"/docs/maintain-errors","docId":"maintain/maintain-errors"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-node-index"},{"type":"category","label":"Collator Guides","description":"Guides for Collator Nodes.","items":[{"type":"link","label":"Async Backing Upgrade","href":"/docs/maintain-guides-async-backing","docId":"maintain/maintain-guides-async-backing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-collator-index"},{"type":"category","label":"Validator Guides","description":"Guides for Validator Nodes.","items":[{"type":"link","label":"How to run a Validator on Polkadot","href":"/docs/maintain-guides-how-to-validate-polkadot","docId":"maintain/maintain-guides-how-to-validate-polkadot"},{"type":"link","label":"Validator Payout Overview","href":"/docs/maintain-guides-validator-payout","docId":"maintain/maintain-guides-validator-payout"},{"type":"link","label":"Using systemd for a Validator Node","href":"/docs/maintain-guides-how-to-systemd","docId":"maintain/maintain-guides-how-to-systemd"},{"type":"link","label":"Secure Validator","href":"/docs/maintain-guides-secure-validator","docId":"maintain/maintain-guides-secure-validator"},{"type":"link","label":"How to Upgrade Your Validator","href":"/docs/maintain-guides-how-to-upgrade","docId":"maintain/maintain-guides-how-to-upgrade"},{"type":"link","label":"Monitor your node","href":"/docs/maintain-guides-how-to-monitor-your-node","docId":"maintain/maintain-guides-how-to-monitor-your-node"},{"type":"link","label":"How to Chill","href":"/docs/maintain-guides-how-to-chill","docId":"maintain/maintain-guides-how-to-chill"},{"type":"link","label":"How to Stop Validating","href":"/docs/maintain-guides-how-to-stop-validating","docId":"maintain/maintain-guides-how-to-stop-validating"},{"type":"link","label":"Validator Community Overview","href":"/docs/maintain-guides-validator-community","docId":"maintain/doc-maintain-guides-validator-community"},{"type":"link","label":"Validator Best Practices","href":"/docs/maintain-guides-avoid-slashing","docId":"maintain/maintain-guides-avoid-slashing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-validator-index"},{"type":"category","label":"Archive","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Participate in Democracy","href":"/docs/maintain/maintain-guides-democracy","docId":"maintain/archive/maintain-guides-democracy"},{"type":"link","label":"Join the Council","href":"/docs/maintain/maintain-guides-how-to-join-council","docId":"maintain/archive/maintain-guides-how-to-join-council"},{"type":"link","label":"Voting for Councillors","href":"/docs/maintain/maintain-guides-how-to-vote-councillor","docId":"maintain/archive/maintain-guides-how-to-vote-councillor"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-index"}]},"docs":{"build/build-client-side":{"id":"build/build-client-side","title":"Building Client-side Apps","description":"An overview about building clients that use Polkadot","sidebar":"docs"},"build/build-dapp":{"id":"build/build-dapp","title":"Building dApps","description":"An overview about building dApps on Polkadot"},"build/build-data":{"id":"build/build-data","title":"Explorer, Data, & Indexing Tools","description":"An overview about building with data analytics","sidebar":"docs"},"build/build-guide":{"id":"build/build-guide","title":"Polkadot Developer Portal","description":"Start building with Polkadot/Kusama.","sidebar":"docs"},"build/build-hackathon":{"id":"build/build-hackathon","title":"Hackathons","description":"Join or host a Hackathon.","sidebar":"docs"},"build/build-hrmp-channels":{"id":"build/build-hrmp-channels","title":"Opening HRMP Channels","description":"Steps on how to open HRMP channels between parachains.","sidebar":"docs"},"build/build-index":{"id":"build/build-index","title":"Builder\'s Guides","description":"Reference point for the Polkadot builder guides."},"build/build-integrate-assets":{"id":"build/build-integrate-assets","title":"Using AssetHub","description":"Tools that you can use for integrating assets.","sidebar":"docs"},"build/build-integration":{"id":"build/build-integration","title":"Polkadot Integration Guide","description":"Reference point for the Polkadot integration guides.","sidebar":"docs"},"build/build-light-clients":{"id":"build/build-light-clients","title":"Using Light Clients","description":"Information about light client options.","sidebar":"docs"},"build/build-network-overview":{"id":"build/build-network-overview","title":"Development Networks","description":"An overview of the different networks on Polkadot","sidebar":"docs"},"build/build-node-interaction":{"id":"build/build-node-interaction","title":"Node Interaction","description":"Tools for node interaction.","sidebar":"docs"},"build/build-node-management":{"id":"build/build-node-management","title":"Node Management","description":"Steps on how to manage your Polkadot node.","sidebar":"docs"},"build/build-open-source":{"id":"build/build-open-source","title":"Open Source Stack","description":"Overview of the open source Polkadot/Kusama Tech Stack","sidebar":"docs"},"build/build-oracle":{"id":"build/build-oracle","title":"Oracles","description":"Information about building with oracles."},"build/build-parachains":{"id":"build/build-parachains","title":"Parachain Development","description":"A guide on what it means to become a Parachain and the steps to do so.","sidebar":"docs"},"build/build-protocol-info":{"id":"build/build-protocol-info","title":"Polkadot Protocol Overview","description":"Characteristics about the Polkadot protocol, and what you need to consider when building.","sidebar":"docs"},"build/build-smart-contracts":{"id":"build/build-smart-contracts","title":"Smart Contracts","description":"How smart contracts play their role in the Polkadot ecosystem.","sidebar":"docs"},"build/build-storage":{"id":"build/build-storage","title":"Decentralized Storage","description":"Information about building with decentralized storage."},"build/build-tools-index":{"id":"build/build-tools-index","title":"Tool Index","description":"Reference point for a list of tools to support your development.","sidebar":"docs"},"build/build-transaction-construction":{"id":"build/build-transaction-construction","title":"Transaction Construction and Signing","description":"Information about how transactions are constructed on Polkadot.","sidebar":"docs"},"general/alpha-program":{"id":"general/alpha-program","title":"Polkadot Alpha Program","description":"The Polkadot Alpha Program and How it can Support your Development.","sidebar":"docs"},"general/ambassadors":{"id":"general/ambassadors","title":"Polkadot Ambassador Program","description":"The Polkadot\'s Ambassador Program and How you can Participate in It.","sidebar":"docs"},"general/bug-bounty":{"id":"general/bug-bounty","title":"Bug Bounty Program","description":"An Overview of How you can Help Catch Bugs.","sidebar":"docs"},"general/community":{"id":"general/community","title":"Community","description":"Connect and stay updated with the Polkadot Community.","sidebar":"docs"},"general/contributing":{"id":"general/contributing","title":"Contributing to the Polkadot Wiki","description":"Contribute to the Polkadot Wiki.","sidebar":"docs"},"general/contributors":{"id":"general/contributors","title":"Contributors","description":"Get to know your Wiki-slayers.","sidebar":"docs"},"general/decentralized-futures":{"id":"general/decentralized-futures","title":"Decentralized Futures Program","description":"Learn about the Decentralized Futures Program.","sidebar":"docs"},"general/decentralized-voices":{"id":"general/decentralized-voices","title":"Decentralized Voices Program","description":"Learn about the Decentralized Voices Program.","sidebar":"docs"},"general/dev-heroes":{"id":"general/dev-heroes","title":"Developer Heroes Program","description":"More Power to Polkadot\'s Developers.","sidebar":"docs"},"general/doc-thousand-contributors":{"id":"general/doc-thousand-contributors","title":"Thousand Contributors Program","description":"The Thousand Contributors Program and How it can Support your Contributions.","sidebar":"docs"},"general/doc-thousand-validators":{"id":"general/doc-thousand-validators","title":"Thousand Validators Programme","description":"The Thousand Validators Program and How it can Support your Validator Endeavors.","sidebar":"docs"},"general/faq":{"id":"general/faq","title":"Frequently Asked Questions (FAQs)","description":"FAQs to Help you Navigate on Polkadot.","sidebar":"docs"},"general/getting-started":{"id":"general/getting-started","title":"Getting Started","description":"Get started with Polkadot and Web3.","sidebar":"docs"},"general/glossary":{"id":"general/glossary","title":"Glossary","description":"Common Terms and Concepts in the Polkadot Ecosystem.","sidebar":"docs"},"general/governance-apps":{"id":"general/governance-apps","title":"Polkadot Governance Apps","description":"Governance Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/grants":{"id":"general/grants","title":"Grants Program","description":"The Grant Programs in the Polkadot Ecosystem.","sidebar":"docs"},"general/how-to-dyor":{"id":"general/how-to-dyor","title":"How to Do Your Own Research (DYOR)","description":"Importance of Doing Your Own Research (DYOR).","sidebar":"docs"},"general/kusama/kusama-adversarial-cheatsheet":{"id":"general/kusama/kusama-adversarial-cheatsheet","title":"Adversarial Cheatsheet","description":"A cheatsheet to help you create chaos."},"general/kusama/kusama-bug-bounty":{"id":"general/kusama/kusama-bug-bounty","title":"Bug Bounty","description":"An overview of how you can help catch bugs."},"general/kusama/kusama-claims":{"id":"general/kusama/kusama-claims","title":"Kusama Claims","description":"Step-by-step guide on how to claim your KSM tokens."},"general/kusama/kusama-coc":{"id":"general/kusama/kusama-coc","title":"Kusama Code of Conduct","description":"Kusama\'s Code of Conduct to sustain chaos."},"general/kusama/kusama-community":{"id":"general/kusama/kusama-community","title":"Kusama Community","description":"Stay in-touch and keep up-to-date by interacting and engaging in the Kusama community."},"general/kusama/kusama-getting-started":{"id":"general/kusama/kusama-getting-started","title":"Interact with Kusama","description":"Reference point for Kusama content."},"general/kusama/kusama-index":{"id":"general/kusama/kusama-index","title":"Kusama","description":"Legacy link to Kusama Wiki document"},"general/kusama/kusama-parameters":{"id":"general/kusama/kusama-parameters","title":"Kusama Parameters","description":"Learn about common Kusama parameters"},"general/kusama/kusama-social-recovery":{"id":"general/kusama/kusama-social-recovery","title":"Social Recovery","description":"Steps on how to perform account recovery on Kusama."},"general/kusama/kusama-timeline":{"id":"general/kusama/kusama-timeline","title":"Kusama Timeline","description":"Stay up-to-date with the latest action on Kusama."},"general/ledger":{"id":"general/ledger","title":"Using the Polkadot & Kusama Ledger Applications","description":"Use the Polkadot Ledger Application.","sidebar":"docs"},"general/metadata":{"id":"general/metadata","title":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","sidebar":"docs"},"general/multisig-apps":{"id":"general/multisig-apps","title":"Polkadot Multisig Apps","description":"Multisig Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/parachains-apps":{"id":"general/parachains-apps","title":"Polkadot Parachain Apps","description":"Polkadot\'s Parachain Apps.","sidebar":"docs"},"general/polkadot-direction":{"id":"general/polkadot-direction","title":"Polkadot Direction","description":"Polkadot as a Decentralized and Secure Ubiquitous Computer.","sidebar":"docs"},"general/polkadot-v1":{"id":"general/polkadot-v1","title":"Polkadot 1.0","description":"Polkadot\'s 1.0, Blockspace, Decentralization and Resilience.","sidebar":"docs"},"general/polkadot-vault":{"id":"general/polkadot-vault","title":"Polkadot Vault (formerly Parity Signer)","description":"Your old Smartphone as an Air-gapped Wallet.","sidebar":"docs"},"general/polkadotjs":{"id":"general/polkadotjs","title":"Polkadot-JS Tooling","description":"The Polkadot-JS Tool Collection.","sidebar":"docs"},"general/polkadotjs-ui":{"id":"general/polkadotjs-ui","title":"Polkadot-JS UI (Wallet)","description":"A Wallet for Power-users and Developers.","sidebar":"docs"},"general/research":{"id":"general/research","title":"Research Pages","description":"Latest Research Developments on Polkadot.","sidebar":"docs"},"general/scams":{"id":"general/scams","title":"How to Protect Yourself from Scams","description":"How to Protect yourself against Scams.","sidebar":"docs"},"general/staking-apps":{"id":"general/staking-apps","title":"Polkadot Staking Apps","description":"Staking Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/staking-dashboard":{"id":"general/staking-dashboard","title":"Polkadot Staking Dashboard","description":"Everything about the Polkadot Staking Dashboard.","sidebar":"docs"},"general/start-building":{"id":"general/start-building","title":"Build on Polkadot","description":"Start Building with the Polkadot SDK.","sidebar":"docs"},"general/transaction-attacks":{"id":"general/transaction-attacks","title":"Why Verify Transactions?","description":"How to Prevent from being a Victim of an Attack","sidebar":"docs"},"general/wallets-and-extensions":{"id":"general/wallets-and-extensions","title":"Wallets and Extensions","description":"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.","sidebar":"docs"},"general/web3-and-polkadot":{"id":"general/web3-and-polkadot","title":"Web3 and Polkadot","description":"Introduction to Web3 and Polkadot\'s Role in shaping the Web3 Vision.","sidebar":"docs"},"learn/archive/learn-controller":{"id":"learn/archive/learn-controller","title":"Controller Accounts","description":"Controller Accounts used in Staking.","sidebar":"docs"},"learn/archive/learn-governance":{"id":"learn/archive/learn-governance","title":"Governance V1","description":"Polkadot\'s First Governance Model.","sidebar":"docs"},"learn/archive/learn-launch":{"id":"learn/archive/learn-launch","title":"Polkadot Launch Phases","description":"Polkadot\'s Launch Process and its Individual Phases.","sidebar":"docs"},"learn/archive/learn-redenomination":{"id":"learn/archive/learn-redenomination","title":"Redenomination of DOT","description":"Everything about the DOT Token Redenomination.","sidebar":"docs"},"learn/archive/learn-treasury":{"id":"learn/archive/learn-treasury","title":"Governance v1 Treasury","description":"The Polkadot\'s On-chain Treasury during Gov1.","sidebar":"docs"},"learn/learn-account-abstraction":{"id":"learn/learn-account-abstraction","title":"Polkadot\'s Account Abstraction","description":"Polkadot\'s Native Account Abstraction.","sidebar":"docs"},"learn/learn-account-advanced":{"id":"learn/learn-account-advanced","title":"Polkadot Accounts In-Depth","description":"Advanced Concepts about Polkadot\'s Accounts.","sidebar":"docs"},"learn/learn-account-multisig":{"id":"learn/learn-account-multisig","title":"Multi-Signature Accounts","description":"Multi-signature Accounts on Polkadot.","sidebar":"docs"},"learn/learn-accounts":{"id":"learn/learn-accounts","title":"Polkadot Accounts","description":"Polkadot Accounts, Account Identity, and Account Reaping.","sidebar":"docs"},"learn/learn-agile-coretime":{"id":"learn/learn-agile-coretime","title":"Introduction to Agile Coretime","description":"Introduction to Agile Coretime and its terminology","sidebar":"docs"},"learn/learn-architecture":{"id":"learn/learn-architecture","title":"Architecture","description":"Key Components to Polkadot\'s Architecture.","sidebar":"docs"},"learn/learn-archive":{"id":"learn/learn-archive","title":"Learn Archive","description":"Archive for the Learn Section.","sidebar":"docs"},"learn/learn-asset-conversion-assethub":{"id":"learn/learn-asset-conversion-assethub","title":"Asset Conversion on AssetHub","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-assets":{"id":"learn/learn-assets","title":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","sidebar":"docs"},"learn/learn-async-backing":{"id":"learn/learn-async-backing","title":"Asynchronous Backing","description":"A brief overview of asynchronous backing, and how it affects Polkadot\'s scalability.","sidebar":"docs"},"learn/learn-auction":{"id":"learn/learn-auction","title":"Parachain Slot Auctions","description":"Polkadot\'s Parachain Slot Auction Mechanism.","sidebar":"docs"},"learn/learn-bridge-hub":{"id":"learn/learn-bridge-hub","title":"Bridge Hub","description":"Overview of Bridge Hub System Parachain.","sidebar":"docs"},"learn/learn-bridges":{"id":"learn/learn-bridges","title":"Bridges","description":"Bridges and Examples of Common Bridges.","sidebar":"docs"},"learn/learn-collator":{"id":"learn/learn-collator","title":"Collator","description":"Role of Collators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-comparisons":{"id":"learn/learn-comparisons","title":"Polkadot Comparisons","description":"Comparison between Polkadot and ETH 1.0 and BSC.","sidebar":"docs"},"learn/learn-comparisons-avalanche":{"id":"learn/learn-comparisons-avalanche","title":"Polkadot vs. Avalanche","description":"Comparison between Polkadot and Avalanche.","sidebar":"docs"},"learn/learn-comparisons-cosmos":{"id":"learn/learn-comparisons-cosmos","title":"Polkadot vs. Cosmos","description":"Comparison between Polkadot and Cosmos.","sidebar":"docs"},"learn/learn-comparisons-ethereum-2":{"id":"learn/learn-comparisons-ethereum-2","title":"Polkadot vs. Ethereum","description":"Comparison between Polkadot and Ethereum.","sidebar":"docs"},"learn/learn-comparisons-kusama":{"id":"learn/learn-comparisons-kusama","title":"Polkadot vs. Kusama","description":"Comparing the cousins.","sidebar":"docs"},"learn/learn-comparisons-rollups":{"id":"learn/learn-comparisons-rollups","title":"Layer Two and Rollups","description":"Comparison between various Rollup and L2 Protocols.","sidebar":"docs"},"learn/learn-consensus":{"id":"learn/learn-consensus","title":"Polkadot\'s Consensus Protocols","description":"The Consensus Mechanisms of Polkadot.","sidebar":"docs"},"learn/learn-crowdloans":{"id":"learn/learn-crowdloans","title":"Parachain Crowdloans","description":"Polkadot\'s Crowdloans and How to Participate.","sidebar":"docs"},"learn/learn-cryptography":{"id":"learn/learn-cryptography","title":"Cryptography on Polkadot","description":"Cryptographic Functions used in Polkadot.","sidebar":"docs"},"learn/learn-DOT":{"id":"learn/learn-DOT","title":"DOT","description":"Tokenomics of Polkadot\'s Native Token DOT.","sidebar":"docs"},"learn/learn-dot-ksm-bridge":{"id":"learn/learn-dot-ksm-bridge","title":"Polkadot <> Kusama Bridge","description":"Overview of Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-elastic-scaling":{"id":"learn/learn-elastic-scaling","title":"Polkadot\'s Elastic Scaling","description":"Enabling parachains to scale on-demand through instantaneous coretime.","sidebar":"docs"},"learn/learn-guides-accounts":{"id":"learn/learn-guides-accounts","title":"Polkadot-JS Guides about Accounts","description":"Polkadot-JS Guides about Accounts","sidebar":"docs"},"learn/learn-guides-accounts-multisig":{"id":"learn/learn-guides-accounts-multisig","title":"Polkadot-JS Guides about Multi-signature Accounts","description":"Polkadot-JS Guides about Multi-signature Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy":{"id":"learn/learn-guides-accounts-proxy","title":"Polkadot-JS Guides about Proxy Accounts","description":"Polkadot-JS Guides about Proxy Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy-pure":{"id":"learn/learn-guides-accounts-proxy-pure","title":"Polkadot-JS Guides about Pure Proxy Accounts","description":"Polkadot-JS Guides about Pure Proxy Accounts","sidebar":"docs"},"learn/learn-guides-asset-conversion":{"id":"learn/learn-guides-asset-conversion","title":"Asset Conversion Tutorials","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-guides-assets":{"id":"learn/learn-guides-assets","title":"Polkadot-JS Guides about Asset Hub","description":"Polkadot-JS Guides about Asset Hub.","sidebar":"docs"},"learn/learn-guides-assets-create":{"id":"learn/learn-guides-assets-create","title":"Polkadot-JS Guides about Creating Assets","description":"Polkadot-JS Guides about Creating Assets.","sidebar":"docs"},"learn/learn-guides-assets-ledger":{"id":"learn/learn-guides-assets-ledger","title":"Polkadot-JS Guides about Asset Hub Ledger App","description":"Polkadot-JS Guides about Ledger and the Asset Hub.","sidebar":"docs"},"learn/learn-guides-bounties":{"id":"learn/learn-guides-bounties","title":"Polkadot-JS Guides about Bounties","description":"Polkadot-JS Guides for Bounties","sidebar":"docs"},"learn/learn-guides-bridges":{"id":"learn/learn-guides-bridges","title":"Polkadot-JS Guides about Bridge Hub","description":"Polkadot-JS Guides about the Bridge Hub.","sidebar":"docs"},"learn/learn-guides-coretime-marketplaces":{"id":"learn/learn-guides-coretime-marketplaces","title":"Coretime Marketplaces","description":"Usage guides for coretime marketplaces","sidebar":"docs"},"learn/learn-guides-coretime-parachains":{"id":"learn/learn-guides-coretime-parachains","title":"Agile Coretime for Parachains","description":"Agile Coretime from Parachains perspective","sidebar":"docs"},"learn/learn-guides-dot-ksm-bridge":{"id":"learn/learn-guides-dot-ksm-bridge","title":"Polkadot and Kusama Bridge Guides","description":"Polkadot-JS Guides about Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-guides-identity":{"id":"learn/learn-guides-identity","title":"Polkadot-JS Guides about Identity","description":"Polkadot-JS Guides about Identity.","sidebar":"docs"},"learn/learn-guides-ledger":{"id":"learn/learn-guides-ledger","title":"Polkadot-JS Guides for Ledger Devices","description":"Polkadot-JS Guides for Ledger Devices.","sidebar":"docs"},"learn/learn-guides-nominator":{"id":"learn/learn-guides-nominator","title":"Polkadot-JS Guides For Nominators","description":"Polkadot-JS Guides for Nominators.","sidebar":"docs"},"learn/learn-guides-polkadot-opengov":{"id":"learn/learn-guides-polkadot-opengov","title":"Polkadot-JS Guides about OpenGov","description":"Polkadot-JS Guides about Polkadot OpenGov.","sidebar":"docs"},"learn/learn-guides-staking":{"id":"learn/learn-guides-staking","title":"Polkadot-JS Guides about Staking","description":"Polkadot-JS Guides about Staking.","sidebar":"docs"},"learn/learn-guides-staking-pools":{"id":"learn/learn-guides-staking-pools","title":"Polkadot-JS Guides for Pool Creators","description":"Polkadot-JS Guides about Nomination Pools.","sidebar":"docs"},"learn/learn-guides-transfers":{"id":"learn/learn-guides-transfers","title":"Polkadot-JS Guides about Transfers","description":"Polkadot-JS Guides about Balances Transfers.","sidebar":"docs"},"learn/learn-guides-treasury":{"id":"learn/learn-guides-treasury","title":"Polkadot-JS Guides about the Treasury","description":"Polkadot-JS Guides about the Polkadot Treasury.","sidebar":"docs"},"learn/learn-guides-vault":{"id":"learn/learn-guides-vault","title":"Polkadot-JS Guides about the Vault App","description":"Polkadot-JS Guides about Polkadot Vault.","sidebar":"docs"},"learn/learn-hyperbridge":{"id":"learn/learn-hyperbridge","title":"Hyperbridge","description":"Polkadot\'s Bridge to Ethereum.","sidebar":"docs"},"learn/learn-identity":{"id":"learn/learn-identity","title":"Account Identity","description":"On-chain Identity, Judgements and Registrars.","sidebar":"docs"},"learn/learn-implementations":{"id":"learn/learn-implementations","title":"Polkadot Implementations","description":"Learn about the different Polkadot implementations."},"learn/learn-inflation":{"id":"learn/learn-inflation","title":"Token Inflation","description":"Explanation of Token\'s Inflation in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-jam-chain":{"id":"learn/learn-jam-chain","title":"Polkadot\'s JAM Chain","description":"Polkadot\'s Join-Accumulate Machine.","sidebar":"docs"},"learn/learn-jam-faq":{"id":"learn/learn-jam-faq","title":"FAQ for Polkadot\'s JAM Chain","description":"FAQ about Polkadot\'s Join-Accumulate Machine.","sidebar":"docs"},"learn/learn-nft":{"id":"learn/learn-nft","title":"NFTs","description":"The NFT Landscape of the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-pallets":{"id":"learn/learn-nft-pallets","title":"NFT Pallets","description":"Functionalities of the NFT Pallets in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-projects":{"id":"learn/learn-nft-projects","title":"NFT projects on Polkadot and Kusama","description":"NFT Projects in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nomination-pools":{"id":"learn/learn-nomination-pools","title":"Nomination Pools","description":"Staking through Polkadot\'s Nomination Pools.","sidebar":"docs"},"learn/learn-nominator":{"id":"learn/learn-nominator","title":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-parachains":{"id":"learn/learn-parachains","title":"Parachains","description":"An Introduction to Polkadot\'s Parachains.","sidebar":"docs"},"learn/learn-parachains-faq":{"id":"learn/learn-parachains-faq","title":"Parachains FAQ","description":"Parachains FAQ.","sidebar":"docs"},"learn/learn-parachains-protocol":{"id":"learn/learn-parachains-protocol","title":"Parachains\' Protocol Overview","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","sidebar":"docs"},"learn/learn-parathreads":{"id":"learn/learn-parathreads","title":"Parathreads","description":"An Introductory Guide to Parathreads.","sidebar":"docs"},"learn/learn-phragmen":{"id":"learn/learn-phragmen","title":"NPoS Election Algorithms","description":"The Election Methods used in Polkadot\'s NPoS Mechanism.","sidebar":"docs"},"learn/learn-polkadot-host":{"id":"learn/learn-polkadot-host","title":"Polkadot Host (PH)","description":"The Polkadot Host and its Components.","sidebar":"docs"},"learn/learn-polkadot-js-guides":{"id":"learn/learn-polkadot-js-guides","title":"Polkadot-JS Guides","description":"Guides about Polkadot-JS.","sidebar":"docs"},"learn/learn-polkadot-opengov":{"id":"learn/learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","sidebar":"docs"},"learn/learn-polkadot-opengov-origins":{"id":"learn/learn-polkadot-opengov-origins","title":"Polkadot OpenGov Origins","description":"All Origins for Polkadot\'s OpenGov.","sidebar":"docs"},"learn/learn-polkadot-opengov-treasury":{"id":"learn/learn-polkadot-opengov-treasury","title":"Treasury","description":"Polkadot\'s On-chain Treasury.","sidebar":"docs"},"learn/learn-polkadot-technical-fellowship":{"id":"learn/learn-polkadot-technical-fellowship","title":"Polkadot Technical Fellowship","description":"Self-governing body of experts and developers of the Polkadot protocol.","sidebar":"docs"},"learn/learn-polkadotjs":{"id":"learn/learn-polkadotjs","title":"Polkadot-JS","description":"Overview of Polkadot-JS.","sidebar":"docs"},"learn/learn-proxies":{"id":"learn/learn-proxies","title":"Proxy Accounts","description":"Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-proxies-pure":{"id":"learn/learn-proxies-pure","title":"Pure Proxy Accounts","description":"Pure Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-runtime-upgrades":{"id":"learn/learn-runtime-upgrades","title":"Runtime Upgrades","description":"Forkless Runtime Upgrades on Polkadot.","sidebar":"docs"},"learn/learn-sassafras":{"id":"learn/learn-sassafras","title":"Polkadot Block Production: SASSAFRAS","description":"The Consensus Mechanism of Polkadot.","sidebar":"docs"},"learn/learn-spree":{"id":"learn/learn-spree","title":"SPREE","description":"Fundamentals of SPREE.","sidebar":"docs"},"learn/learn-staking":{"id":"learn/learn-staking","title":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","sidebar":"docs"},"learn/learn-staking-advanced":{"id":"learn/learn-staking-advanced","title":"Advanced Staking Concepts","description":"Advanced Concepts about Staking on Polkadot.","sidebar":"docs"},"learn/learn-system-chains":{"id":"learn/learn-system-chains","title":"System Parachains","description":"System Parachains currently deployed on Polkadot.","sidebar":"docs"},"learn/learn-teleport":{"id":"learn/learn-teleport","title":"Teleporting Assets","description":"Teleport Assets between Parachains and Relay Chain.","sidebar":"docs"},"learn/learn-transaction-fees":{"id":"learn/learn-transaction-fees","title":"Transaction Fees","description":"How Transaction Fees are Calculated and Handled.","sidebar":"docs"},"learn/learn-transactions":{"id":"learn/learn-transactions","title":"Types of Transactions (a.k.a. Extrinsics)","description":"Types of Transactions on Polkadot.","sidebar":"docs"},"learn/learn-validator":{"id":"learn/learn-validator","title":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-video-tutorials":{"id":"learn/learn-video-tutorials","title":"Videos about Polkadot","description":"Videos about Polkadot and Related Topics.","sidebar":"docs"},"learn/learn-wasm":{"id":"learn/learn-wasm","title":"WebAssembly (Wasm)","description":"WASM and its Role in Polkadot\'s Runtime.","sidebar":"docs"},"learn/learn-xcm":{"id":"learn/learn-xcm","title":"Introduction to Cross-Consensus Message Format (XCM)","description":"XCM, The Messaging Format at the Forefront of Interoperability.","sidebar":"docs"},"learn/learn-xcm-instructions":{"id":"learn/learn-xcm-instructions","title":"XCM Instructions & Register Specification","description":"Specification for Instructions and Registers for the XCM Format.","sidebar":"docs"},"learn/learn-xcm-pallet":{"id":"learn/learn-xcm-pallet","title":"XCM FRAME Pallet Overview","description":"Mechanics of the XCM Pallet and its role in Polkadot\'s Ecosystem.","sidebar":"docs"},"learn/learn-xcm-transport":{"id":"learn/learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","description":"Methods to send XCM Messages across Networks.","sidebar":"docs"},"learn/learn-xcm-usecases":{"id":"learn/learn-xcm-usecases","title":"XCM Use-cases & Examples","description":"Cross-consensus Interactions and the XCM Format.","sidebar":"docs"},"learn/learn-xcvm":{"id":"learn/learn-xcvm","title":"XCM Virtual Machine (XCVM) & XCM Executor","description":"Design of the XCM Executor and Mechanics of the XCM Virtual Machine.","sidebar":"docs"},"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive":{"id":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive","title":"Executor Configuration","description":"Deep Dive into the Configuration of the XCM-Executor.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees","title":"Weight and Fees","description":"Weight and Fees in XCM.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset","title":"MultiAsset","description":"The MultiAsset Datatype.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary","title":"Fundamentals","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm","title":"XCVM","description":"Deep Dive into XCVM.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example","title":"Example","description":"A MultiLocation Example.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions","title":"Junction(s)","description":"The Junction Type in a MultiLocation Struct.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary","title":"MultiLocation","description":"Learn about XCM fundamentals.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-assets":{"id":"learn/xcm/journey/learn-xcm-docs-journey-assets","title":"Trap and Claim Assets","description":"Instructions to Trap and Claim Assets.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-channels":{"id":"learn/xcm/journey/learn-xcm-docs-journey-channels","title":"Channels and Bridges","description":"Establishment of HRMP Channels between Parachains.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-expectations":{"id":"learn/xcm/journey/learn-xcm-docs-journey-expectations","title":"Expectations","description":"Expect Instructions to Check if a Condition is Valid.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-fees":{"id":"learn/xcm/journey/learn-xcm-docs-journey-fees","title":"Fee Handling","description":"How Fees for XCM Transfers are Handled.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-holding":{"id":"learn/xcm/journey/learn-xcm-docs-journey-holding","title":"More Holding Modifiers","description":"More Instructions to Alter the Holding Register.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-origin":{"id":"learn/xcm/journey/learn-xcm-docs-journey-origin","title":"Origin Manipulation","description":"Manipulating the Origin of XCM.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-queries":{"id":"learn/xcm/journey/learn-xcm-docs-journey-queries","title":"Queries","description":"Query Information from another Consensus System.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-register":{"id":"learn/xcm/journey/learn-xcm-docs-journey-register","title":"Register Modifiers","description":"More Instructions to Change the XCVM Registers.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-summary":{"id":"learn/xcm/journey/learn-xcm-docs-journey-summary","title":"A Journey through XCM","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-transact":{"id":"learn/xcm/journey/learn-xcm-docs-journey-transact","title":"Transact","description":"The Transact Instruction to Execute XCM Calls.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-version":{"id":"learn/xcm/journey/learn-xcm-docs-journey-version","title":"Version Subscription","description":"Get Notified about XCM Version Updates.","sidebar":"docs"},"learn/xcm/journey/locks/learn-xcm-docs-journey-locks":{"id":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks","title":"Locks","description":"Restrict Transfer or Withdrawal of Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve","title":"Reserve-backed Transfers","description":"Reserve-backed Transfers: Third-party Reserve to store Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary","title":"Transfers","description":"Summary about XCM Transfers.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport","title":"Asset Teleportation","description":"Teleportation: Sending Assets Across Chains.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-intro":{"id":"learn/xcm/learn-xcm-docs-intro","title":"XCM: Cross-Consensus Messaging","description":"Introduction to the XCM Documentation.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-testing":{"id":"learn/xcm/learn-xcm-docs-testing","title":"Testing","description":"Testing XCM-powered Solutions.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-architecture":{"id":"learn/xcm/overview/learn-xcm-docs-overview-architecture","title":"The XCM Architecture","description":"The XCM Architecture.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-format":{"id":"learn/xcm/overview/learn-xcm-docs-overview-format","title":"XCM is a Format, not a Protocol","description":"XCM is a Format, not a Protocol.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-intro":{"id":"learn/xcm/overview/learn-xcm-docs-overview-intro","title":"Introduction","description":"An Introduction to XCM.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-summary":{"id":"learn/xcm/overview/learn-xcm-docs-overview-summary","title":"XCM: Cross-Consensus Messaging","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-xcvm":{"id":"learn/xcm/overview/learn-xcm-docs-overview-xcvm","title":"The XCVM","description":"The Cross-Consensus Virtual Machine.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look","title":"First Look at an XCM","description":"First Look at an XCM.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator","title":"XCM Simulator","description":"Test XCM using a Simulated Environment.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary","title":"Quickstart","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-glossary":{"id":"learn/xcm/reference/learn-xcm-docs-reference-glossary","title":"Glossary","description":"Glossary.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers":{"id":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers","title":"All XCVM Registers","description":"All XCVM Registers.","sidebar":"docs"},"maintain/archive/maintain-guides-democracy":{"id":"maintain/archive/maintain-guides-democracy","title":"Participate in Democracy","description":"Steps on how to participate in democracy.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-join-council":{"id":"maintain/archive/maintain-guides-how-to-join-council","title":"Join the Council","description":"Steps on how to join the official on-chain council.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-vote-councillor":{"id":"maintain/archive/maintain-guides-how-to-vote-councillor","title":"Voting for Councillors","description":"Steps on how to vote for councillors.","sidebar":"docs"},"maintain/doc-maintain-guides-validator-community":{"id":"maintain/doc-maintain-guides-validator-community","title":"Validator Community Overview","description":"An extensive guide to help you start and build a validator community.","sidebar":"docs"},"maintain/kusama/maintain-guides-how-to-validate-kusama":{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","description":"The fundamentals for running a Kusama validator."},"maintain/kusama/maintain-guides-society-kusama":{"id":"maintain/kusama/maintain-guides-society-kusama","title":"Kappa Sigma Mu","description":"Learn about the Kappa Sigma Mu society and join as a member."},"maintain/maintain-archive":{"id":"maintain/maintain-archive","title":"Maintain Archive","description":"Archive for the Maintain Section.","sidebar":"docs"},"maintain/maintain-bootnode":{"id":"maintain/maintain-bootnode","title":"Set up a Boot Node","description":"Steps on setting up a boot node.","sidebar":"docs"},"maintain/maintain-endpoints":{"id":"maintain/maintain-endpoints","title":"Node Endpoints","description":"List of node endpoints and examples of use.","sidebar":"docs"},"maintain/maintain-errors":{"id":"maintain/maintain-errors","title":"Errors and How to Resolve Them","description":"Common errors you might encounter and how they can be resolved.","sidebar":"docs"},"maintain/maintain-guides-async-backing":{"id":"maintain/maintain-guides-async-backing","title":"Upgrade Parachain for Asynchronous Backing Compatibility","description":"Steps on how to upgrade a parachain to be compatible with the relay chain\'s async backing feature.","sidebar":"docs"},"maintain/maintain-guides-avoid-slashing":{"id":"maintain/maintain-guides-avoid-slashing","title":"Validator Best Practices","description":"Best practices to avoid slashing.","sidebar":"docs"},"maintain/maintain-guides-how-to-chill":{"id":"maintain/maintain-guides-how-to-chill","title":"How to Chill","description":"Steps on chilling as a network participant.","sidebar":"docs"},"maintain/maintain-guides-how-to-monitor-your-node":{"id":"maintain/maintain-guides-how-to-monitor-your-node","title":"Monitor your node","description":"This guide will walk you through how to set up Prometheus with","sidebar":"docs"},"maintain/maintain-guides-how-to-stop-validating":{"id":"maintain/maintain-guides-how-to-stop-validating","title":"How to Stop Validating","description":"Steps on how to stop validating.","sidebar":"docs"},"maintain/maintain-guides-how-to-systemd":{"id":"maintain/maintain-guides-how-to-systemd","title":"Using systemd for a Validator Node","description":"Using a service manager for your validator node.","sidebar":"docs"},"maintain/maintain-guides-how-to-upgrade":{"id":"maintain/maintain-guides-how-to-upgrade","title":"How to Upgrade Your Validator","description":"Validators perform critical functions for the network, and as such, have strict uptime requirements.","sidebar":"docs"},"maintain/maintain-guides-how-to-validate-polkadot":{"id":"maintain/maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","description":"The fundamentals for running a Polkadot validator.","sidebar":"docs"},"maintain/maintain-guides-secure-validator":{"id":"maintain/maintain-guides-secure-validator","title":"Secure Validator","description":"Tips for running a secure validator.","sidebar":"docs"},"maintain/maintain-guides-validator-payout":{"id":"maintain/maintain-guides-validator-payout","title":"Validator Payout Overview","description":"How validator payout works on the network and what you should expect.","sidebar":"docs"},"maintain/maintain-index":{"id":"maintain/maintain-index","title":"Network Maintainers","description":"Reference point for network maintenance guides.","sidebar":"docs"},"maintain/maintain-networks":{"id":"maintain/maintain-networks","title":"Networks","description":"Information about the different networks of the Polkadot ecosystem.","sidebar":"docs"},"maintain/maintain-polkadot-parameters":{"id":"maintain/maintain-polkadot-parameters","title":"Polkadot Parameters","description":"A description about fundamental Polkadot parameters.","sidebar":"docs"},"maintain/maintain-rpc":{"id":"maintain/maintain-rpc","title":"Set up a RPC node","description":"Steps on setting up a RPC node.","sidebar":"docs"},"maintain/maintain-sync":{"id":"maintain/maintain-sync","title":"Set up a Full Node","description":"Steps on how to set up a full node.","sidebar":"docs"},"maintain/maintain-wss":{"id":"maintain/maintain-wss","title":"Secure the WebSocket","description":"Steps on setting up a secure socket for remote connections.","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/9662c81e.3a2cd287.js b/assets/js/9662c81e.3a2cd287.js deleted file mode 100644 index 9bf20bb01c5b..000000000000 --- a/assets/js/9662c81e.3a2cd287.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2664],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>m});var o=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function r(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=o.createContext({}),s=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},d=function(e){var n=s(e.components);return o.createElement(l.Provider,{value:n},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},h=o.forwardRef((function(e,n){var t=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=s(t),h=i,m=u["".concat(l,".").concat(h)]||u[h]||p[h]||a;return t?o.createElement(m,r(r({ref:n},d),{},{components:t})):o.createElement(m,r({ref:n},d))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=t.length,r=new Array(a);r[0]=h;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c[u]="string"==typeof e?e:i,r[1]=c;for(var s=2;s{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>c,metadata:()=>s,toc:()=>u});var o=t(87462),i=t(63366),a=(t(67294),t(3905)),r=["components"],c={id:"maintain-guides-how-to-join-council",title:"Join the Council",sidebar_label:"Join the Council",description:"Steps on how to join the official on-chain council.",keywords:["council","how to join council","governance","candidate"],slug:"../maintain-guides-how-to-join-council"},l=void 0,s={unversionedId:"maintain/archive/maintain-guides-how-to-join-council",id:"maintain/archive/maintain-guides-how-to-join-council",title:"Join the Council",description:"Steps on how to join the official on-chain council.",source:"@site/../docs/maintain/archive/maintain-guides-how-to-join-council.md",sourceDirName:"maintain/archive",slug:"/maintain/maintain-guides-how-to-join-council",permalink:"/docs/maintain/maintain-guides-how-to-join-council",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-how-to-join-council.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"maintain-guides-how-to-join-council",title:"Join the Council",sidebar_label:"Join the Council",description:"Steps on how to join the official on-chain council.",keywords:["council","how to join council","governance","candidate"],slug:"../maintain-guides-how-to-join-council"},sidebar:"docs",previous:{title:"Participate in Democracy",permalink:"/docs/maintain/maintain-guides-democracy"},next:{title:"Voting for Councillors",permalink:"/docs/maintain/maintain-guides-how-to-vote-councillor"}},d={},u=[{value:"Submit Candidacy",id:"submit-candidacy",level:2},{value:"Voting on Candidates",id:"voting-on-candidates",level:2},{value:"Winning",id:"winning",level:2}],p={toc:u},h="wrapper";function m(e){var n=e.components,c=(0,i.Z)(e,r);return(0,a.kt)(h,(0,o.Z)({},p,c,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"sticky",style:{zIndex:1}},(0,a.kt)("br",null),(0,a.kt)("p",null,"The content on this page is archived. For up-to-date information about governance, see the\n",(0,a.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Polkadot OpenGov page"),".")),(0,a.kt)("p",null,"The council is an elected body of on-chain accounts that are intended to represent the passive\nstakeholders of Polkadot and/or Kusama. The council has two major tasks in governance: proposing\nreferenda and vetoing dangerous or malicious referenda. For more information on the council, see the\n",(0,a.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"governance page"),". This guide will walk you through\nentering your candidacy to the council."),(0,a.kt)("h2",{id:"submit-candidacy"},"Submit Candidacy"),(0,a.kt)("p",null,"Submitting your candidacy for the council requires a small bond of DOT / KSM. Unless your candidacy\nwins, the bond will be forfeited. You can receive your bond back if you manually renounce your\ncandidacy before losing. Runners-up are selected after every round and are reserved members in case\none of the winners gets forcefully removed."),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"Currently the bond for submitting a council candidacy on Polkadot is 100 DOT, and 0.0033 KSM on\nKusama.")),(0,a.kt)("p",null,"It is a good idea to announce your council intention before submitting your candidacy so that your\nsupporters will know when they can start to vote for you. You can also vote for yourself in case no\none else does."),(0,a.kt)("p",null,"Go to ",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot Apps Dashboard"),' and navigate to the "Council" tab.\nClick the button on the right that says "Submit Candidacy."'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"submit candidacy button",src:t(901).Z,width:"580",height:"120"})),(0,a.kt)("p",null,'After making the transaction, you will see your account appear underneath the row "Candidates."'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"candidates list",src:t(98706).Z,width:"2880",height:"298"})),(0,a.kt)("p",null,"It is a good idea now to lead by example and give yourself a vote."),(0,a.kt)("h2",{id:"voting-on-candidates"},"Voting on Candidates"),(0,a.kt)("p",null,'Next to the button to submit candidacy is another button titled "Vote." You will click this button\nto make a vote for yourself (optional).'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"voting button on UI",src:t(9802).Z,width:"556",height:"120"})),(0,a.kt)("p",null,"The council uses ",(0,a.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n"),' approval voting, which is also used in\nthe validator elections. This means that you can choose up to 16 distinct candidates to vote for and\nyour stake will equalize between them. For this guide, choose to approve your own candidacy by\nclicking on the switch next to your account and changing it to say "Aye."'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"voting pop up on UI",src:t(464).Z,width:"2186",height:"1104"})),(0,a.kt)("h2",{id:"winning"},"Winning"),(0,a.kt)("p",null,'If you are one of the lucky ones to win a council election you will see your account move underneath\nthe row "Members".'),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"council members list",src:t(11966).Z,width:"2880",height:"1346"})),(0,a.kt)("p",null,"Now you are able to participate on the council by making motions or voting proposals. To join in on\nthe active discussions, join the\n",(0,a.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction channel"),"."))}m.isMDXComponent=!0},98706:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_candidates-bc420d7637b02bd43169dd6bc44a9bd9.png"},11966:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_council_members-c731a3fa3e5eb821427126149431dbfe.png"},901:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_submit_candidancy-04eabb0aa998c350427386dcff208d1c.png"},9802:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_vote_button-9f5daf5f27fda6df219d0f959e7632b4.png"},464:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_voting-cc5698e8e8f5de77644d3a7cb316a2ea.png"}}]); \ No newline at end of file diff --git a/assets/js/9662c81e.d52d8b8f.js b/assets/js/9662c81e.d52d8b8f.js new file mode 100644 index 000000000000..0e1b2870cb83 --- /dev/null +++ b/assets/js/9662c81e.d52d8b8f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2664],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>h});var o=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function r(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=o.createContext({}),l=function(e){var n=o.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},d=function(e){var n=l(e.components);return o.createElement(s.Provider,{value:n},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},m=o.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=l(t),m=a,h=u["".concat(s,".").concat(m)]||u[m]||p[m]||i;return t?o.createElement(h,r(r({ref:n},d),{},{components:t})):o.createElement(h,r({ref:n},d))}));function h(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,r=new Array(i);r[0]=m;var c={};for(var s in n)hasOwnProperty.call(n,s)&&(c[s]=n[s]);c.originalType=e,c[u]="string"==typeof e?e:a,r[1]=c;for(var l=2;l{t.d(n,{Z:()=>a});var o=t(67294);const a=function(e){var n,t=e.message,a=(0,o.useState)(!0),i=a[0],r=a[1];return o.createElement(o.Fragment,null,i&&o.createElement("div",{className:"message-box"},o.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),o.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(n=t,n.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52269:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>g,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var o=t(87462),a=t(63366),i=(t(67294),t(3905)),r=t(35703),c=["components"],s={id:"maintain-guides-how-to-join-council",title:"Join the Council",sidebar_label:"Join the Council",description:"Steps on how to join the official on-chain council.",keywords:["council","how to join council","governance","candidate"],slug:"../maintain-guides-how-to-join-council"},l=void 0,d={unversionedId:"maintain/archive/maintain-guides-how-to-join-council",id:"maintain/archive/maintain-guides-how-to-join-council",title:"Join the Council",description:"Steps on how to join the official on-chain council.",source:"@site/../docs/maintain/archive/maintain-guides-how-to-join-council.md",sourceDirName:"maintain/archive",slug:"/maintain/maintain-guides-how-to-join-council",permalink:"/docs/maintain/maintain-guides-how-to-join-council",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-how-to-join-council.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"maintain-guides-how-to-join-council",title:"Join the Council",sidebar_label:"Join the Council",description:"Steps on how to join the official on-chain council.",keywords:["council","how to join council","governance","candidate"],slug:"../maintain-guides-how-to-join-council"},sidebar:"docs",previous:{title:"Participate in Democracy",permalink:"/docs/maintain/maintain-guides-democracy"},next:{title:"Voting for Councillors",permalink:"/docs/maintain/maintain-guides-how-to-vote-councillor"}},u={},p=[{value:"Submit Candidacy",id:"submit-candidacy",level:2},{value:"Voting on Candidates",id:"voting-on-candidates",level:2},{value:"Winning",id:"winning",level:2}],m={toc:p},h="wrapper";function g(e){var n=e.components,s=(0,a.Z)(e,c);return(0,i.kt)(h,(0,o.Z)({},m,s,{components:n,mdxType:"MDXLayout"}),(0,i.kt)(r.Z,{message:"The content on this page is archived. For up-to-date information about governance, see the\n[Polkadot OpenGov page](/docs/learn-polkadot-opengov).",mdxType:"MessageBox"}),(0,i.kt)("p",null,"The council is an elected body of on-chain accounts that are intended to represent the passive\nstakeholders of Polkadot and/or Kusama. The council has two major tasks in governance: proposing\nreferenda and vetoing dangerous or malicious referenda. For more information on the council, see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#council"},"governance page"),". This guide will walk you through\nentering your candidacy to the council."),(0,i.kt)("h2",{id:"submit-candidacy"},"Submit Candidacy"),(0,i.kt)("p",null,"Submitting your candidacy for the council requires a small bond of DOT / KSM. Unless your candidacy\nwins, the bond will be forfeited. You can receive your bond back if you manually renounce your\ncandidacy before losing. Runners-up are selected after every round and are reserved members in case\none of the winners gets forcefully removed."),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Currently the bond for submitting a council candidacy on Polkadot is 100 DOT, and 0.0033 KSM on\nKusama.")),(0,i.kt)("p",null,"It is a good idea to announce your council intention before submitting your candidacy so that your\nsupporters will know when they can start to vote for you. You can also vote for yourself in case no\none else does."),(0,i.kt)("p",null,"Go to ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps"},"Polkadot Apps Dashboard"),' and navigate to the "Council" tab.\nClick the button on the right that says "Submit Candidacy."'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"submit candidacy button",src:t(901).Z,width:"580",height:"120"})),(0,i.kt)("p",null,'After making the transaction, you will see your account appear underneath the row "Candidates."'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"candidates list",src:t(98706).Z,width:"2880",height:"298"})),(0,i.kt)("p",null,"It is a good idea now to lead by example and give yourself a vote."),(0,i.kt)("h2",{id:"voting-on-candidates"},"Voting on Candidates"),(0,i.kt)("p",null,'Next to the button to submit candidacy is another button titled "Vote." You will click this button\nto make a vote for yourself (optional).'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"voting button on UI",src:t(9802).Z,width:"556",height:"120"})),(0,i.kt)("p",null,"The council uses ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n"),' approval voting, which is also used in\nthe validator elections. This means that you can choose up to 16 distinct candidates to vote for and\nyour stake will equalize between them. For this guide, choose to approve your own candidacy by\nclicking on the switch next to your account and changing it to say "Aye."'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"voting pop up on UI",src:t(464).Z,width:"2186",height:"1104"})),(0,i.kt)("h2",{id:"winning"},"Winning"),(0,i.kt)("p",null,'If you are one of the lucky ones to win a council election you will see your account move underneath\nthe row "Members".'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"council members list",src:t(11966).Z,width:"2880",height:"1346"})),(0,i.kt)("p",null,"Now you are able to participate on the council by making motions or voting proposals. To join in on\nthe active discussions, join the\n",(0,i.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction channel"),"."))}g.isMDXComponent=!0},98706:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_candidates-bc420d7637b02bd43169dd6bc44a9bd9.png"},11966:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_council_members-c731a3fa3e5eb821427126149431dbfe.png"},901:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_submit_candidancy-04eabb0aa998c350427386dcff208d1c.png"},9802:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_vote_button-9f5daf5f27fda6df219d0f959e7632b4.png"},464:(e,n,t)=>{t.d(n,{Z:()=>o});const o=t.p+"assets/images/polkadotjs_voting-cc5698e8e8f5de77644d3a7cb316a2ea.png"}}]); \ No newline at end of file diff --git a/assets/js/967fa6d4.2d83b021.js b/assets/js/967fa6d4.2d83b021.js new file mode 100644 index 000000000000..d7ffdeb510ef --- /dev/null +++ b/assets/js/967fa6d4.2d83b021.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[2581],{35703:(t,e,a)=>{"use strict";a.d(e,{Z:()=>n});var i=a(67294);const n=function(t){var e,a=t.message,n=(0,i.useState)(!0),o=n[0],s=n[1];return i.createElement(i.Fragment,null,o&&i.createElement("div",{className:"message-box"},i.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),i.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(e=a,e.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>d});var i=a(74165),n=a(15861),o=a(67294),s=a(87152),r=a(9712),l=a(67425);function c(t,e,a){return u.apply(this,arguments)}function u(){return(u=(0,n.Z)((0,i.Z)().mark((function t(e,a,n){var o,l,c,u,p;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=void 0,l=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return o="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return o="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return o="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return o="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==o){t.next=18;break}return t.abrupt("return");case 18:return c=new s.U(o),t.next=21,r.G.create({provider:c});case 21:u=t.sent,(p=a.split(".")).forEach((function(t){t in u&&(u=u[t])})),t.t1=p[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return l=u.toString(),t.abrupt("break",35);case 29:return t.next=31,u();case 31:return l=(l=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+a);case 35:return t.abrupt("return",l);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function p(t,e,a,i){switch(e){case"humanReadable":(0,l.HumanReadable)(t,a,i);break;case"precise":(0,l.Precise)(t,a,i);break;case"blocksToDays":(0,l.BlocksToDays)(t,i);break;case"erasToDays":(0,l.ErasToDays)(t,i,a);break;case"percentage":(0,l.Percentage)(t,i);break;case"permillToPercent":(0,l.PermillToPercent)(t,i);break;case"arrayLength":(0,l.ArrayLength)(t,i);break;default:return void console.log("Ignoring unknown filter type")}}const d=function(t){var e=t.network,a=t.path,s=t.defaultValue,r=t.filter,l=void 0===r?void 0:r,u=(0,o.useState)(""),d=u[0],h=u[1];return e=e.toLowerCase(),(0,o.useEffect)((function(){void 0!==l?p(s.toString(),l,e,h):h(s.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":t="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var o=function(){var t=(0,n.Z)((0,i.Z)().mark((function t(){var n;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,c(e,a,h);case 2:if(void 0!==(n=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==l?p(n,l,e,h):h(n);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{o()}catch(r){console.log(r)}}}),[]),d}},67425:t=>{var e="polkadot",a="kusama",i="statemine",n="statemint",o={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,s,r){var l=void 0;if(s===e||s===n)l=3;else{if(s!==a&&s!==i)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}t=parseFloat(t),r((t=Number.isInteger(t/o[s].precision)?t/o[s].precision+" "+o[s].symbol:(t/o[s].precision).toFixed(l)+" "+o[s].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/o[e].precision+" "+o[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,o,s){var r=void 0;if(s===e||s===n)r=1;else{if(s!==a&&s!==i)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}o((t/=r).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},91430:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>u,default:()=>k,frontMatter:()=>c,metadata:()=>p,toc:()=>h});var i=a(87462),n=a(63366),o=(a(67294),a(3905)),s=a(47940),r=a(35703),l=["components"],c={id:"learn-guides-accounts-multisig",title:"Polkadot-JS Guides about Multi-signature Accounts",sidebar_label:"Multisig Guides",description:"Polkadot-JS Guides about Multi-signature Accounts",keyword:["guides","polkadot-js","accounts","multisig","multi-signature"],slug:"../learn-guides-accounts-multisig"},u=void 0,p={unversionedId:"learn/learn-guides-accounts-multisig",id:"learn/learn-guides-accounts-multisig",title:"Polkadot-JS Guides about Multi-signature Accounts",description:"Polkadot-JS Guides about Multi-signature Accounts",source:"@site/../docs/learn/learn-guides-accounts-multisig.md",sourceDirName:"learn",slug:"/learn-guides-accounts-multisig",permalink:"/docs/learn-guides-accounts-multisig",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-multisig.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-accounts-multisig",title:"Polkadot-JS Guides about Multi-signature Accounts",sidebar_label:"Multisig Guides",description:"Polkadot-JS Guides about Multi-signature Accounts",keyword:["guides","polkadot-js","accounts","multisig","multi-signature"],slug:"../learn-guides-accounts-multisig"},sidebar:"docs",previous:{title:"Account Guides",permalink:"/docs/learn-guides-accounts"},next:{title:"Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy"}},d={},h=[{value:"Creating a Multisig Account",id:"creating-a-multisig-account",level:2},{value:"Multisig Transactions with Accounts Tab",id:"multisig-transactions-with-accounts-tab",level:2},{value:"Multisig Transactions with Extrinsic Tab",id:"multisig-transactions-with-extrinsic-tab",level:2},{value:"Multisig Call Deposit",id:"multisig-call-deposit",level:3},{value:"Example using Multisig Accounts",id:"example-using-multisig-accounts",level:3},{value:"Decoding Multisig Call Data",id:"decoding-multisig-call-data",level:2}],m={toc:h},g="wrapper";function k(t){var e=t.components,c=(0,n.Z)(t,l);return(0,o.kt)(g,(0,i.Z)({},m,c,{components:e,mdxType:"MDXLayout"}),(0,o.kt)(r.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)("h2",{id:"creating-a-multisig-account"},"Creating a Multisig Account"),(0,o.kt)("p",null,'Check the "How to create a multisig account" section on\n',(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181826-how-to-create-and-use-a-multisig-account"},"this support page"),".\nWe recommend trying out the tutorial on\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain-networks#westend-test-network"},"Westend network")," - Polkadot's testnet."),(0,o.kt)("h2",{id:"multisig-transactions-with-accounts-tab"},"Multisig Transactions with Accounts Tab"),(0,o.kt)("admonition",{title:"Walkthrough Video Tutorial",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"See ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=-cPiKMslZqI"},"this video tutorial")," to learn how to transact with\na multisig account using the Accounts Tab in the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Polkadot-JS UI"),".")),(0,o.kt)("p",null,"You can create a multisig account directly on the Accounts Tab of the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Polkadot-JS UI"),", and use this account to send funds. See\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181826-how-to-create-and-use-a-multisig-account"},"this support article"),"\nfor more information."),(0,o.kt)("h2",{id:"multisig-transactions-with-extrinsic-tab"},"Multisig Transactions with Extrinsic Tab"),(0,o.kt)("p",null,"There are three types of actions you can take with a multisig account:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Executing a call ",(0,o.kt)("inlineCode",{parentName:"li"},"asMulti"),". This is used to begin or end a multisig transaction."),(0,o.kt)("li",{parentName:"ul"},"Approving a call ",(0,o.kt)("inlineCode",{parentName:"li"},"approveAsMulti"),". This is used to approve an extrinsic and pass-on to the next\nsignatory (see ",(0,o.kt)("a",{parentName:"li",href:"#example-using-multi-signature-accounts"},"example below")," for more information)."),(0,o.kt)("li",{parentName:"ul"},"Cancelling a call ",(0,o.kt)("inlineCode",{parentName:"li"},"cancelAsMulti"),".")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Check out ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/substrate/extrinsics#multisig"},"this page")," for more\ninformation about the actions you can take with a multi-signature account.")),(0,o.kt)("p",null,"In scenarios where only a single approval is needed, a convenience method ",(0,o.kt)("inlineCode",{parentName:"p"},"as_multi_threshold_1"),"\nshould be used. This function takes only the other signatories and the raw call as arguments. Note\nthat the Polkadot-JS UI does not have integration for this call because it is not possible to create\nmultisig accounts with ",(0,o.kt)("inlineCode",{parentName:"p"},"threshold=1"),". If you want to create a multisig with threshold 1, you can use\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/txwrapper-core"},"txwrapper-core"),", which is developed and supported by\nParity Technologies. There is a detailed\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/txwrapper-core/tree/main/packages/txwrapper-examples/multisig"},"multisig example"),"\nthat you can try out and change to see how it works."),(0,o.kt)("p",null,"However, in anything but the simple one approval case, you will likely need more than one of the\nsignatories to approve the call before finally executing it."),(0,o.kt)("h3",{id:"multisig-call-deposit"},"Multisig Call Deposit"),(0,o.kt)("p",null,"When you create a new multi-sig call, you will need to place a\nDOT deposit. The deposit stays locked until the\ncall is executed. This deposit is to establish an economic cost on the storage space that the\nmultisig call takes up in the chain state and discourage users from creating multisig calls that\nnever get executed. The deposit will be reserved in the call initiator's account."),(0,o.kt)("p",null,"The deposit is dependent on the ",(0,o.kt)("inlineCode",{parentName:"p"},"threshold")," parameter and is calculated as follows:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"Deposit = depositBase + threshold * depositFactor\n")),(0,o.kt)("p",null,"Where ",(0,o.kt)("inlineCode",{parentName:"p"},"depositBase")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"depositFactor")," are chain constants (in\nDOT units) set in the runtime code. Currently,\nthe deposit base equals\n",(0,o.kt)(s.Z,{network:"polkadot",path:"consts.multisig.depositBase",defaultValue:20088e7,filter:"humanReadable",mdxType:"RPC"}),"\n","\nand the deposit factor equals\n",(0,o.kt)(s.Z,{network:"polkadot",path:"consts.multisig.depositFactor",defaultValue:32e7,filter:"humanReadable",mdxType:"RPC"}),".\n",""),(0,o.kt)("p",null,"The other signatory accounts should have enough funds to pay for the transaction fees associated\nwith approving the multisig call. The deposit is for the call; that is, other signatories will not\nneed to place additional deposits. Once the multisig call is executed or rejected, the deposit is\nreleased on the account that initiated the call."),(0,o.kt)("h3",{id:"example-using-multisig-accounts"},"Example using Multisig Accounts"),(0,o.kt)("admonition",{title:"Walk-through video tutorial",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"See ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T0vIuJcTJeQ"},"this video tutorial")," to learn how to transact with\na multisig account using the Extrinsic Tab in the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),".")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"multisig diagram",src:a(706).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"Let's consider an example of a multisig on Polkadot with a threshold of 2 and 3 signers: Charlie,\nDan, and Eleanor. First, Charlie will create the call on-chain by calling the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti"),"\nextrinsic with the raw call, in this case, a balance transfer (",(0,o.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive"),"\nextrinsic) from multisig CDE to Frank's account. When doing this, Charlie will have to deposit\n",(0,o.kt)("inlineCode",{parentName:"p"},"DepositBase + (2 * DepositFactor) = 20.152 DOT")," while he waits for either Dan or Eleanor also to\napprove the balance transfer call using the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.approveAsMulti")," or the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti"),"\nextrinsics."),(0,o.kt)("p",null,"If Dan submits the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.approveAsMulti")," extrinsic, he approves Charlie's call but he passes on\nthe final approval to Eleanor. So, although the multisig has threshold 2, in this case all 3/3\nsignatories need to participate in the transaction approval. Eleanor will need to submit a\n",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.approveAsMulti")," extrinsic to transfer funds from CDE to Frank."),(0,o.kt)("p",null,"Alternatively, Dan or Eleanor can just submit a ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic after Charlie to\ntransfer the funds. In this case, 2/3 signatories will participate in the transaction approval. The\naccounts approving Charlie's call will not need to place the deposit, and Charlie will receive his\ndeposit back once the transfer is successful or canceled. To cancel the transaction, Dan or Eleanor\ncan use the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.cancelAsMulti")," extrinsic."),(0,o.kt)("p",null,"Note that multisigs are ",(0,o.kt)("strong",{parentName:"p"},"deterministic"),", which means that multisig addresses are generated from\nthe addresses of signers and the threshold of the multisig wallet. No matter the order of the\nsignatories' accounts, the multisig will always have the same address because accounts' addresses\nare sorted in ascending order."),(0,o.kt)("admonition",{title:"Addresses that are provided to the multisig wallet are sorted",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Public keys of signers' wallets are compared byte-for-byte and sorted ascending before being used to\ngenerate the multisig address. For example, consider the scenario with three addresses, A, B, and C,\nstarting with ",(0,o.kt)("inlineCode",{parentName:"p"},"5FUGT"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"5HMfS"),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"5GhKJ"),". If we build the ABC multisig with the accounts in that\nspecific order (i.e. first A, then B, and C), the real order of the accounts in the multisig will be\nACB. If, in the Extrinsic tab, we initiate a multisig call with C, the order of the other\nsignatories will be first A, then B. If we put first B, then A, the transaction will fail.")),(0,o.kt)("p",null,"This has some implications when using the Extrinsics tab on the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Polkadot-JS UI")," to perform multisig transactions. If the\norder of the ",(0,o.kt)("em",{parentName:"p"},"other signatories")," is wrong, the transaction will fail. This does not happen if the\nmultisig is executed directly from the Accounts tab (recommended). The Polkadot-JS UI supports\nmultisig accounts, as documented on the ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-account-multisig"},"Account Generation page"),". You\ncan see our video tutorials for more information about creating multisig accounts and transacting\nwith them using both the ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=-cPiKMslZqI"},"Accounts Tab")," and the\n",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T0vIuJcTJeQ"},"Extrinsic Tab")," in the Polkadot-JS UI."),(0,o.kt)("h2",{id:"decoding-multisig-call-data"},"Decoding Multisig Call Data"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Before signing a transaction, it is important to know the exact specifics of what is being signed.\nCheck the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181826-how-to-create-and-use-a-multisig-account"},'"How to use a multisig account"'),"\nin the support docs on how to decode the multisig call data.")))}k.isMDXComponent=!0},706:(t,e,a)=>{"use strict";a.d(e,{Z:()=>i});const i=a.p+"assets/images/multisig-diagram-90327330a3e865703a0ab1a1cc1eee47.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/967fa6d4.bf6329f8.js b/assets/js/967fa6d4.bf6329f8.js deleted file mode 100644 index f3a610618397..000000000000 --- a/assets/js/967fa6d4.bf6329f8.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[2581],{47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>d});var i=a(74165),n=a(15861),o=a(67294),s=a(87152),r=a(9712),l=a(67425);function c(t,e,a){return u.apply(this,arguments)}function u(){return(u=(0,n.Z)((0,i.Z)().mark((function t(e,a,n){var o,l,c,u,p;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=void 0,l=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return o="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return o="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return o="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return o="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==o){t.next=18;break}return t.abrupt("return");case 18:return c=new s.U(o),t.next=21,r.G.create({provider:c});case 21:u=t.sent,(p=a.split(".")).forEach((function(t){t in u&&(u=u[t])})),t.t1=p[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return l=u.toString(),t.abrupt("break",35);case 29:return t.next=31,u();case 31:return l=(l=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+a);case 35:return t.abrupt("return",l);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function p(t,e,a,i){switch(e){case"humanReadable":(0,l.HumanReadable)(t,a,i);break;case"precise":(0,l.Precise)(t,a,i);break;case"blocksToDays":(0,l.BlocksToDays)(t,i);break;case"erasToDays":(0,l.ErasToDays)(t,i,a);break;case"percentage":(0,l.Percentage)(t,i);break;case"permillToPercent":(0,l.PermillToPercent)(t,i);break;case"arrayLength":(0,l.ArrayLength)(t,i);break;default:return void console.log("Ignoring unknown filter type")}}const d=function(t){var e=t.network,a=t.path,s=t.defaultValue,r=t.filter,l=void 0===r?void 0:r,u=(0,o.useState)(""),d=u[0],h=u[1];return e=e.toLowerCase(),(0,o.useEffect)((function(){void 0!==l?p(s.toString(),l,e,h):h(s.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":t="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var o=function(){var t=(0,n.Z)((0,i.Z)().mark((function t(){var n;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,c(e,a,h);case 2:if(void 0!==(n=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==l?p(n,l,e,h):h(n);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{o()}catch(r){console.log(r)}}}),[]),d}},67425:t=>{var e="polkadot",a="kusama",i="statemine",n="statemint",o={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,s,r){var l=void 0;if(s===e||s===n)l=3;else{if(s!==a&&s!==i)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}t=parseFloat(t),r((t=Number.isInteger(t/o[s].precision)?t/o[s].precision+" "+o[s].symbol:(t/o[s].precision).toFixed(l)+" "+o[s].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/o[e].precision+" "+o[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,o,s){var r=void 0;if(s===e||s===n)r=1;else{if(s!==a&&s!==i)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");r=4}o((t/=r).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},91430:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>c,default:()=>g,frontMatter:()=>l,metadata:()=>u,toc:()=>d});var i=a(87462),n=a(63366),o=(a(67294),a(3905)),s=a(47940),r=["components"],l={id:"learn-guides-accounts-multisig",title:"Polkadot-JS Guides about Multi-signature Accounts",sidebar_label:"Multisig Guides",description:"Polkadot-JS Guides about Multi-signature Accounts",keyword:["guides","polkadot-js","accounts","multisig","multi-signature"],slug:"../learn-guides-accounts-multisig"},c=void 0,u={unversionedId:"learn/learn-guides-accounts-multisig",id:"learn/learn-guides-accounts-multisig",title:"Polkadot-JS Guides about Multi-signature Accounts",description:"Polkadot-JS Guides about Multi-signature Accounts",source:"@site/../docs/learn/learn-guides-accounts-multisig.md",sourceDirName:"learn",slug:"/learn-guides-accounts-multisig",permalink:"/docs/learn-guides-accounts-multisig",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-multisig.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-accounts-multisig",title:"Polkadot-JS Guides about Multi-signature Accounts",sidebar_label:"Multisig Guides",description:"Polkadot-JS Guides about Multi-signature Accounts",keyword:["guides","polkadot-js","accounts","multisig","multi-signature"],slug:"../learn-guides-accounts-multisig"},sidebar:"docs",previous:{title:"Account Guides",permalink:"/docs/learn-guides-accounts"},next:{title:"Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy"}},p={},d=[{value:"Creating a Multisig Account",id:"creating-a-multisig-account",level:2},{value:"Multisig Transactions with Accounts Tab",id:"multisig-transactions-with-accounts-tab",level:2},{value:"Multisig Transactions with Extrinsic Tab",id:"multisig-transactions-with-extrinsic-tab",level:2},{value:"Multisig Call Deposit",id:"multisig-call-deposit",level:3},{value:"Example using Multisig Accounts",id:"example-using-multisig-accounts",level:3},{value:"Decoding Multisig Call Data",id:"decoding-multisig-call-data",level:2}],h={toc:d},m="wrapper";function g(t){var e=t.components,l=(0,n.Z)(t,r);return(0,o.kt)(m,(0,i.Z)({},h,l,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"sticky",style:{zIndex:1}},(0,o.kt)("br",null),(0,o.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,o.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,o.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,o.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,o.kt)("h2",{id:"creating-a-multisig-account"},"Creating a Multisig Account"),(0,o.kt)("p",null,'Check the "How to create a multisig account" section on\n',(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181826-how-to-create-and-use-a-multisig-account"},"this support page"),".\nWe recommend trying out the tutorial on\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain-networks#westend-test-network"},"Westend network")," - Polkadot's testnet."),(0,o.kt)("h2",{id:"multisig-transactions-with-accounts-tab"},"Multisig Transactions with Accounts Tab"),(0,o.kt)("admonition",{title:"Walkthrough Video Tutorial",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"See ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=-cPiKMslZqI"},"this video tutorial")," to learn how to transact with\na multisig account using the Accounts Tab in the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Polkadot-JS UI"),".")),(0,o.kt)("p",null,"You can create a multisig account directly on the Accounts Tab of the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Polkadot-JS UI"),", and use this account to send funds. See\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181826-how-to-create-and-use-a-multisig-account"},"this support article"),"\nfor more information."),(0,o.kt)("h2",{id:"multisig-transactions-with-extrinsic-tab"},"Multisig Transactions with Extrinsic Tab"),(0,o.kt)("p",null,"There are three types of actions you can take with a multisig account:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Executing a call ",(0,o.kt)("inlineCode",{parentName:"li"},"asMulti"),". This is used to begin or end a multisig transaction."),(0,o.kt)("li",{parentName:"ul"},"Approving a call ",(0,o.kt)("inlineCode",{parentName:"li"},"approveAsMulti"),". This is used to approve an extrinsic and pass-on to the next\nsignatory (see ",(0,o.kt)("a",{parentName:"li",href:"#example-using-multi-signature-accounts"},"example below")," for more information)."),(0,o.kt)("li",{parentName:"ul"},"Cancelling a call ",(0,o.kt)("inlineCode",{parentName:"li"},"cancelAsMulti"),".")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Check out ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/substrate/extrinsics#multisig"},"this page")," for more\ninformation about the actions you can take with a multi-signature account.")),(0,o.kt)("p",null,"In scenarios where only a single approval is needed, a convenience method ",(0,o.kt)("inlineCode",{parentName:"p"},"as_multi_threshold_1"),"\nshould be used. This function takes only the other signatories and the raw call as arguments. Note\nthat the Polkadot-JS UI does not have integration for this call because it is not possible to create\nmultisig accounts with ",(0,o.kt)("inlineCode",{parentName:"p"},"threshold=1"),". If you want to create a multisig with threshold 1, you can use\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/txwrapper-core"},"txwrapper-core"),", which is developed and supported by\nParity Technologies. There is a detailed\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/txwrapper-core/tree/main/packages/txwrapper-examples/multisig"},"multisig example"),"\nthat you can try out and change to see how it works."),(0,o.kt)("p",null,"However, in anything but the simple one approval case, you will likely need more than one of the\nsignatories to approve the call before finally executing it."),(0,o.kt)("h3",{id:"multisig-call-deposit"},"Multisig Call Deposit"),(0,o.kt)("p",null,"When you create a new multi-sig call, you will need to place a\nDOT deposit. The deposit stays locked until the\ncall is executed. This deposit is to establish an economic cost on the storage space that the\nmultisig call takes up in the chain state and discourage users from creating multisig calls that\nnever get executed. The deposit will be reserved in the call initiator's account."),(0,o.kt)("p",null,"The deposit is dependent on the ",(0,o.kt)("inlineCode",{parentName:"p"},"threshold")," parameter and is calculated as follows:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"Deposit = depositBase + threshold * depositFactor\n")),(0,o.kt)("p",null,"Where ",(0,o.kt)("inlineCode",{parentName:"p"},"depositBase")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"depositFactor")," are chain constants (in\nDOT units) set in the runtime code. Currently,\nthe deposit base equals\n",(0,o.kt)(s.Z,{network:"polkadot",path:"consts.multisig.depositBase",defaultValue:20088e7,filter:"humanReadable",mdxType:"RPC"}),"\n","\nand the deposit factor equals\n",(0,o.kt)(s.Z,{network:"polkadot",path:"consts.multisig.depositFactor",defaultValue:32e7,filter:"humanReadable",mdxType:"RPC"}),".\n",""),(0,o.kt)("p",null,"The other signatory accounts should have enough funds to pay for the transaction fees associated\nwith approving the multisig call. The deposit is for the call; that is, other signatories will not\nneed to place additional deposits. Once the multisig call is executed or rejected, the deposit is\nreleased on the account that initiated the call."),(0,o.kt)("h3",{id:"example-using-multisig-accounts"},"Example using Multisig Accounts"),(0,o.kt)("admonition",{title:"Walk-through video tutorial",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"See ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T0vIuJcTJeQ"},"this video tutorial")," to learn how to transact with\na multisig account using the Extrinsic Tab in the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),".")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"multisig diagram",src:a(706).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"Let's consider an example of a multisig on Polkadot with a threshold of 2 and 3 signers: Charlie,\nDan, and Eleanor. First, Charlie will create the call on-chain by calling the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti"),"\nextrinsic with the raw call, in this case, a balance transfer (",(0,o.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive"),"\nextrinsic) from multisig CDE to Frank's account. When doing this, Charlie will have to deposit\n",(0,o.kt)("inlineCode",{parentName:"p"},"DepositBase + (2 * DepositFactor) = 20.152 DOT")," while he waits for either Dan or Eleanor also to\napprove the balance transfer call using the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.approveAsMulti")," or the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti"),"\nextrinsics."),(0,o.kt)("p",null,"If Dan submits the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.approveAsMulti")," extrinsic, he approves Charlie's call but he passes on\nthe final approval to Eleanor. So, although the multisig has threshold 2, in this case all 3/3\nsignatories need to participate in the transaction approval. Eleanor will need to submit a\n",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.approveAsMulti")," extrinsic to transfer funds from CDE to Frank."),(0,o.kt)("p",null,"Alternatively, Dan or Eleanor can just submit a ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic after Charlie to\ntransfer the funds. In this case, 2/3 signatories will participate in the transaction approval. The\naccounts approving Charlie's call will not need to place the deposit, and Charlie will receive his\ndeposit back once the transfer is successful or canceled. To cancel the transaction, Dan or Eleanor\ncan use the ",(0,o.kt)("inlineCode",{parentName:"p"},"multisig.cancelAsMulti")," extrinsic."),(0,o.kt)("p",null,"Note that multisigs are ",(0,o.kt)("strong",{parentName:"p"},"deterministic"),", which means that multisig addresses are generated from\nthe addresses of signers and the threshold of the multisig wallet. No matter the order of the\nsignatories' accounts, the multisig will always have the same address because accounts' addresses\nare sorted in ascending order."),(0,o.kt)("admonition",{title:"Addresses that are provided to the multisig wallet are sorted",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Public keys of signers' wallets are compared byte-for-byte and sorted ascending before being used to\ngenerate the multisig address. For example, consider the scenario with three addresses, A, B, and C,\nstarting with ",(0,o.kt)("inlineCode",{parentName:"p"},"5FUGT"),", ",(0,o.kt)("inlineCode",{parentName:"p"},"5HMfS"),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"5GhKJ"),". If we build the ABC multisig with the accounts in that\nspecific order (i.e. first A, then B, and C), the real order of the accounts in the multisig will be\nACB. If, in the Extrinsic tab, we initiate a multisig call with C, the order of the other\nsignatories will be first A, then B. If we put first B, then A, the transaction will fail.")),(0,o.kt)("p",null,"This has some implications when using the Extrinsics tab on the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Polkadot-JS UI")," to perform multisig transactions. If the\norder of the ",(0,o.kt)("em",{parentName:"p"},"other signatories")," is wrong, the transaction will fail. This does not happen if the\nmultisig is executed directly from the Accounts tab (recommended). The Polkadot-JS UI supports\nmultisig accounts, as documented on the ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-account-multisig"},"Account Generation page"),". You\ncan see our video tutorials for more information about creating multisig accounts and transacting\nwith them using both the ",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=-cPiKMslZqI"},"Accounts Tab")," and the\n",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T0vIuJcTJeQ"},"Extrinsic Tab")," in the Polkadot-JS UI."),(0,o.kt)("h2",{id:"decoding-multisig-call-data"},"Decoding Multisig Call Data"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Before signing a transaction, it is important to know the exact specifics of what is being signed.\nCheck the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181826-how-to-create-and-use-a-multisig-account"},'"How to use a multisig account"'),"\nin the support docs on how to decode the multisig call data.")))}g.isMDXComponent=!0},706:(t,e,a)=>{"use strict";a.d(e,{Z:()=>i});const i=a.p+"assets/images/multisig-diagram-90327330a3e865703a0ab1a1cc1eee47.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/9913464d.6a468aaa.js b/assets/js/9913464d.6a468aaa.js new file mode 100644 index 000000000000..9a5ce9372f0a --- /dev/null +++ b/assets/js/9913464d.6a468aaa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5341],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=p(a),u=r,h=m["".concat(s,".").concat(u)]||m[u]||d[u]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:r,i[1]=l;for(var p=2;p{a.d(t,{Z:()=>r});var n=a(67294);const r=function(e){var t,a=e.message,r=(0,n.useState)(!0),o=r[0],i=r[1];return n.createElement(n.Fragment,null,o&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},63009:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>m,contentTitle:()=>p,default:()=>k,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=a(87462),r=a(63366),o=(a(67294),a(3905)),i=a(35703),l=["components"],s={id:"learn-governance",title:"Governance V1",sidebar_label:"Governance V1",description:"Polkadot's First Governance Model.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-governance"},p=void 0,c={unversionedId:"learn/archive/learn-governance",id:"learn/archive/learn-governance",title:"Governance V1",description:"Polkadot's First Governance Model.",source:"@site/../docs/learn/archive/learn-governance.md",sourceDirName:"learn/archive",slug:"/learn/learn-governance",permalink:"/docs/learn/learn-governance",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-governance.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-governance",title:"Governance V1",sidebar_label:"Governance V1",description:"Polkadot's First Governance Model.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-governance"},sidebar:"docs",previous:{title:"Archive",permalink:"/docs/learn-archive"},next:{title:"Gov1 Treasury",permalink:"/docs/learn/learn-treasury"}},m={},d=[{value:"Governance Summary",id:"governance-summary",level:2},{value:"Proposals",id:"proposals",level:2},{value:"Endorsing Proposals",id:"endorsing-proposals",level:3},{value:"Cancelling Proposals",id:"cancelling-proposals",level:3},{value:"Blacklisting Proposals",id:"blacklisting-proposals",level:3},{value:"Referenda",id:"referenda",level:2},{value:"Referenda Timeline",id:"referenda-timeline",level:3},{value:"Public Referenda",id:"public-referenda",level:3},{value:"Council Referenda",id:"council-referenda",level:3},{value:"Alternating Voting Timetable",id:"alternating-voting-timetable",level:3},{value:"Adaptive Quorum Biasing",id:"adaptive-quorum-biasing",level:3},{value:"Example of Adaptive Quorum Biasing",id:"example-of-adaptive-quorum-biasing",level:4},{value:"Enactment",id:"enactment",level:3},{value:"Voting on a Referendum",id:"voting-on-a-referendum",level:2},{value:"Voluntary Locking",id:"voluntary-locking",level:3},{value:"Delegations",id:"delegations",level:3},{value:"Council",id:"council",level:2},{value:"Prime Members",id:"prime-members",level:3},{value:"Technical Committee",id:"technical-committee",level:2},{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"How to be a council member?",id:"how-to-be-a-council-member",level:3},{value:"How can I appeal to the council to enact a change on my behalf?",id:"how-can-i-appeal-to-the-council-to-enact-a-change-on-my-behalf",level:3},{value:"Gov1 Runtime Upgrade Monitoring",id:"gov1-runtime-upgrade-monitoring",level:2},{value:"Resources",id:"resources",level:2}],u={toc:d},h="wrapper";function k(e){var t=e.components,s=(0,r.Z)(e,l);return(0,o.kt)(h,(0,n.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(i.Z,{message:"The content on this page is archived. For up-to-date information about governance, see the\n[Polkadot OpenGov page](/docs/learn-polkadot-opengov).",mdxType:"MessageBox"}),(0,o.kt)("p",null,"Polkadot uses a sophisticated governance\nmechanism that allows it to evolve gracefully overtime at the ultimate behest of its assembled\nstakeholders. The stated goal is to ensure that the majority of the stake can always command the\nnetwork."),(0,o.kt)("p",null,"Polkadot brings together various novel\nmechanisms, including an amorphous (abstract) form of state-transition function stored on-chain\ndefined in a platform-agnostic language (i.e. ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-wasm"},"WebAssembly"),"). It also allows for\nseveral on-chain voting mechanisms, such as referenda with the novel concept of\n",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},"Adaptive Quorum Biasing")," and batch approval voting. All changes to the\nprotocol must be agreed upon by stake-weighted referenda."),(0,o.kt)("p",null,"To make any changes to the network, the idea is to compose active token holders and the council\ntogether to administrate a network upgrade decision. No matter whether the proposal is proposed by\nthe public (token holders) or the ",(0,o.kt)("a",{parentName:"p",href:"#council"},"Council"),", it finally will have to go through a vote on\na referendum to let all holders, weighted by stake, make the decision."),(0,o.kt)("h2",{id:"governance-summary"},"Governance Summary"),(0,o.kt)("p",null,"The figure below shows an overview of Governance V1 with the key actors and different paths for\nsubmitting a proposal that can potentially be voted on as a referendum."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"gov1-overview",src:a(74562).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"The public (i.e. token holders) can submit a proposal that gets added to the proposal queue. Here,\nproposals are ",(0,o.kt)("a",{parentName:"p",href:"#endorsing-proposals"},"endorsed"),", and the one that gets the most support will climb to\nthe top of the queue. When it is time, the proposal at the top of the queue will become a\n",(0,o.kt)("a",{parentName:"p",href:"#public-referenda"},"Public Referendum"),". For instance, the proposal with 11 endorsements is shown at\nthe top of the queue in the figure, which is ready to become a referendum."),(0,o.kt)("p",null,"The public can also submit a ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn/learn-treasury#creating-a-treasury-proposal"},"treasury proposal"),",\nwhich must be evaluated by the ",(0,o.kt)("a",{parentName:"p",href:"#council"},"Council")," through a motion. If the Council motion passes,\nthe treasury proposal can be directly executed or go to the external queue, which will be voted on\nthrough a ",(0,o.kt)("a",{parentName:"p",href:"#council-referenda"},"Council Referendum"),". See the figure's green horizontal path from the\nPublic (green) to the Council (yellow). Treasury proposals and Council proposals can be directly\nexecuted (horizontal yellow arrows) or go to the external queue, where they will become a referendum"),(0,o.kt)("p",null,"Note that the external queue always consists of\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/f4a2e84ee5974b219f2a03cd195105060c41e3cd/frame/democracy/src/lib.rs#LL29C8-L31C4"},"a single proposal"),".\nA proposal in the external queue can be fast-tracked by the\n",(0,o.kt)("a",{parentName:"p",href:"#technical-committee"},"Technical Committee")," (light blue). The fast track can contain as many\nproposals as possible (also called emergency proposals) that can be voted on simultaneously with\nwith the referenda introduced either by the Council or the Public. See in the figure the yellow\ncircle (i.e. Council Proposal) exiting the external queue, and the yellow circle with a light-blue\nborder also leaving the queue and being fast-tracked by the Technical Committee (TC). Once empty,\nthe external queue can be filled with another Council proposal."),(0,o.kt)("p",null,"The Council can also submit proposals that will end up in the external queue. Voting on Council and\nPublic proposals subject to an ",(0,o.kt)("a",{parentName:"p",href:"#alternating-voting-timetable"},"alternating timetable"),', shown in the\nfigure as the "on" and "off" toggles on the external and proposal queues. In this example, the\nPublic proposal will be voted on together with the fast-tracked Council Proposal. Voting on\nnon-fast-tracked Council Proposals will be blocked until the alternating timetable switches the\ntoggles, which stops Public proposals from becoming a referenda.'),(0,o.kt)("p",null,"Referenda will follow an ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},"adaptive quorum biasing")," mechanism for deciding\nwhether they get enacted, and if they do, they will be executed after an\n",(0,o.kt)("a",{parentName:"p",href:"#enactment"},"enactment period"),"."),(0,o.kt)("p",null,"Token holders can delegate their votes (with a conviction multiplier) to another account belonging\nto a trusted entity voting on their behalf."),(0,o.kt)("h2",{id:"proposals"},"Proposals"),(0,o.kt)("p",null,"Referenda can be started in different ways:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Publicly submitted proposals"),(0,o.kt)("li",{parentName:"ul"},"Proposals submitted by the council, either through a majority or unanimously"),(0,o.kt)("li",{parentName:"ul"},"Proposals submitted as part of the ",(0,o.kt)("a",{parentName:"li",href:"#enactment"},"enactment")," of a prior referendum (i.e. making a\nreferendum to start a new referendum)"),(0,o.kt)("li",{parentName:"ul"},"Emergency proposals submitted by the ",(0,o.kt)("a",{parentName:"li",href:"#technical-committee"},"Technical Committee")," and approved by\nthe ",(0,o.kt)("a",{parentName:"li",href:"#council"},"Council"))),(0,o.kt)("admonition",{title:"Starting a proposal in Governance V1",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"For more information about how to start a proposal, see the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy#proposing-an-action"},"dedicated page"),".")),(0,o.kt)("h3",{id:"endorsing-proposals"},"Endorsing Proposals"),(0,o.kt)("p",null,"Anyone can submit a proposal by depositing the minimum amount of tokens for a certain period (number\nof blocks). If someone agrees with the proposal, they may deposit the same amount of tokens to\nsupport it - this action is called\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy#endorsing-a-proposal"},(0,o.kt)("em",{parentName:"a"},"endorsing")),". The\nproposal with the highest amount of bonded support will be selected to be a referendum in the next\nvoting cycle based on an ",(0,o.kt)("a",{parentName:"p",href:"#alternating-voting-timetable"},"alternating voting timetable"),"."),(0,o.kt)("h3",{id:"cancelling-proposals"},"Cancelling Proposals"),(0,o.kt)("p",null,"A proposal can be canceled if the ",(0,o.kt)("a",{parentName:"p",href:"#technical-committee"},"Technical Committee")," unanimously agrees to\ndo so or if Root Origin (e.g. sudo) triggers this functionality. A canceled proposal's deposit is\nburned."),(0,o.kt)("p",null,"Additionally, a two-thirds majority of the council can cancel a referendum. This may function as a\nlast-resort if there is an issue found late in a referendum's proposal, such as a bug in the code of\nthe runtime that the proposal would institute."),(0,o.kt)("p",null,"If the cancellation is controversial enough that the council cannot get a two-thirds majority, then\nit will be left to the stakeholders ",(0,o.kt)("em",{parentName:"p"},"en masse")," to determine the proposal\u2019s fate."),(0,o.kt)("h3",{id:"blacklisting-proposals"},"Blacklisting Proposals"),(0,o.kt)("p",null,"A proposal can be blacklisted by Root Origin (e.g. sudo). A blacklisted proposal and its related\nreferendum (if any) are immediately ",(0,o.kt)("a",{parentName:"p",href:"#canceling"},"canceled"),". Additionally, a blacklisted proposal's\nhash cannot re-appear in the proposal queue. Blacklisting is useful when removing erroneous\nproposals that could be submitted with the same hash."),(0,o.kt)("p",null,"Upon seeing their proposal removed, a submitter who is not properly introduced to the democracy\nsystem of Polkadot might be tempted to\nre-submit the same proposal. That said, this is far from a fool-proof method of preventing invalid\nproposals from being submitted - a single changed character in a proposal's text will also change\nthe hash of the proposal, rendering the per-hash blacklist invalid."),(0,o.kt)("h2",{id:"referenda"},"Referenda"),(0,o.kt)("p",null,"Referenda are simple, inclusive, stake-based voting schemes. Each referendum has a specific proposal\nthat takes the form of a ",(0,o.kt)("strong",{parentName:"p"},"privileged function")," call in the runtime. That function includes the\nmost powerful ",(0,o.kt)("strong",{parentName:"p"},"call"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"set_code"),', which can switch out the entire runtime code, achieving what\nwould otherwise require a "hard fork".'),(0,o.kt)("p",null,'Referenda are discrete events, have a fixed period where voting happens, and then are tallied, and\nthe function call is executed if the vote is approved. Referenda are always binary: your only\noptions in voting are "aye", "nay", or abstaining entirely.'),(0,o.kt)("h3",{id:"referenda-timeline"},"Referenda Timeline"),(0,o.kt)("p",null,"The structure of the timeline for all referenda is the same regardless of who initiates the\nproposal, although the timeline length can vary (see below)."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"gov1-timeline",src:a(11173).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"The figure above provides a summary view of the referenda timeline for Governance V1."),(0,o.kt)("p",null,"In (1), the proposal is submitted, and the Launch Period starts. During this period of indefinite\nlength the voters can ",(0,o.kt)("a",{parentName:"p",href:"#endorsing-proposals"},"endorse")," proposals by bonding the same amount of tokens\nused by the depositor. Deposited tokens for endorsement will be returned once the proposal becomes a\nreferendum. During the launch period, the proposal will compete with other proposals, and the one\nthat gets to the top will be selected for a referendum when the next voting period starts."),(0,o.kt)("p",null,"The figure shows that the launch period is shown with a fixed length. Still, it varies depending on\nwho initiated the proposal and how many proposals there are in the pipeline. Council motions will\nlikely have a short launch period when compared to the public referenda which might take longer\nunless they are the only ones in the pipeline."),(0,o.kt)("p",null,"In (2), the proposal is selected for a referendum. Proposals initiated by the public will become a\n",(0,o.kt)("a",{parentName:"p",href:"#public-referenda"},"public referendum"),", while those initiated by the council will become\n",(0,o.kt)("a",{parentName:"p",href:"#council-referenda"},"council referenda"),". The voting period lasts\n28 days, after which, if the proposal is\napproved, it will go through an enactment period. Rejected proposals will need to start from (1).\nNote that Governance V1 uses an ",(0,o.kt)("a",{parentName:"p",href:"#alternating-voting-timetable"},"alternating voting timeline")," where\nvoters can vote either for a public proposal or a council motion every\n28 days."),(0,o.kt)("p",null,"In (3), the proposal is approved and moves through the ",(0,o.kt)("a",{parentName:"p",href:"#enactment"},"enactment period")," that can be of\ndifferent lengths depending on who initiated the proposal in the first place, with emergency\nproposals being the fastest ones and the only ones that can be voted simultaneously with other\nreferenda."),(0,o.kt)("h3",{id:"public-referenda"},"Public Referenda"),(0,o.kt)("p",null,"Public referenda will have a ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},(0,o.kt)("strong",{parentName:"a"},"positive turnout bias")),", meaning that\nthey will require a heavy supermajority of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes to pass at low turnouts but as turnout\nincreases towards 100%, it will require a simple majority of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes to pass (i.e. 51% wins)."),(0,o.kt)("p",null,"Note that the bonded tokens will be released once the proposal is tabled (that is, brought to a\nvote), and a maximum of 100 public proposals can\nbe in the proposal queue."),(0,o.kt)("admonition",{title:"turnout",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The total number of voting tokens excluding conviction or ",(0,o.kt)("a",{parentName:"p",href:"#voluntary-locking"},"voluntary locking"),".")),(0,o.kt)("h3",{id:"council-referenda"},"Council Referenda"),(0,o.kt)("p",null,"Unanimous Council - When all council members agree on a proposal, it can be moved to a referendum\nwith a ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},(0,o.kt)("strong",{parentName:"a"},"negative turnout bias")),". Briefly, it will require a heavy\nsupermajority of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes to reject at low turnouts, but as turnout increases towards 100%, it\nwill require a simple majority of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes to fail (i.e. 51% wins)."),(0,o.kt)("p",null,"Majority Council - When agreement from only a simple majority of council members occurs, the\nreferendum will need ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},(0,o.kt)("strong",{parentName:"a"},"simple majority"))," to pass."),(0,o.kt)("admonition",{title:"Public- vs. Council-initiated Referenda",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Public referenda must be agreed upon using a positive bias to mitigate attacks by malicious or\nill-conceived proposals. Conversely, when a proposal is unanimously voted in favor by the council,\nit benefits from using the negative bias. We assume low turnout is less problematic if the council\nproposes a referendum. Also, the council members are elected by the community and have strong\ntechnical as well as functional knowledge about the system, and we assume solid justifications back\nchanges proposed by the council.")),(0,o.kt)("h3",{id:"alternating-voting-timetable"},"Alternating Voting Timetable"),(0,o.kt)("p",null,"All referenda are executed by Root Origin. It follows that multiple referenda cannot be voted upon\nin the same period, excluding emergency referenda. An emergency referendum occurring at the same\ntime as a regular referendum (either public- or council-proposed) is the only time multiple\nreferenda can be voted on."),(0,o.kt)("p",null,"Every 28 days, a new referendum will come up for a\nvote, assuming there is at least one proposal in one of the queues. There is a queue for\nCouncil-approved proposals and a queue for publicly-submitted proposals. The referendum to be voted\nupon alternates between the top proposal in the two queues, where the proposals' rank is based on\n",(0,o.kt)("a",{parentName:"p",href:"#endorsing-proposals"},"endorsement")," (i.e. bonded tokens)."),(0,o.kt)("h3",{id:"adaptive-quorum-biasing"},"Adaptive Quorum Biasing"),(0,o.kt)("p",null,"Polkadot introduces the concept of ",(0,o.kt)("strong",{parentName:"p"},"Adaptive\nQuorum Biasing"),", which is used to alter the effective super-majority required to make it easier or\nmore difficult for a proposal to pass depending on voting power (turnout) and origin (Council or\npublic)."),(0,o.kt)("p",null,"Adaptive Quorum Biasing creates three tallying mechanisms: majority carry, super-majority approve,\nand super-majority against. They all equate to a simple majority-carry system at 100% turnout. Their\nselection depends on which entity proposed the proposal and whether all Council members voted yes\n(in the case of Council Referenda)."),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"th"},"Entity")),(0,o.kt)("th",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"th"},"Metric")))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Public"),(0,o.kt)("td",{parentName:"tr",align:"center"},"Positive Turnout Bias (Super-Majority Approve)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Council (Complete agreement)"),(0,o.kt)("td",{parentName:"tr",align:"center"},"Negative Turnout Bias (Super-Majority Against)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Council (Majority agreement)"),(0,o.kt)("td",{parentName:"tr",align:"center"},"Simple Majority")))),(0,o.kt)("p",null,"Let's use the image below as an example."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"adaptive-quorum-biasing",src:a(72895).Z,width:"537",height:"439"})),(0,o.kt)("p",null,"If a publicly submitted referendum only has a 25% turnout, the tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 66%\nfor it to pass since we applied ",(0,o.kt)("strong",{parentName:"p"},"Positive Turnout Bias"),". In contrast, when it has a 75% turnout,\nthe tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 54%, which means that the super-majority required decreases as\nthe turnout increases. A positive turnout bias, whereby a heavy super-majority of aye votes is\nrequired to carry at low turnouts. However, as turnout increases towards 100%, it becomes a simple\nmajority carry as below."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7Bagainst&space;%5Cover&space;%5Csqrt%7Bturnout%7D%7D&space;%3C&space;%7Bapprove&space;%5Cover&space;%5Csqrt%7Belectorate%7D%7D",alt:null})),(0,o.kt)("p",null,"Where ",(0,o.kt)("inlineCode",{parentName:"p"},"approve")," is the number of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes, ",(0,o.kt)("inlineCode",{parentName:"p"},"against")," is the number of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes, ",(0,o.kt)("inlineCode",{parentName:"p"},"turnout")," is\nthe total number of voting tokens excluding ",(0,o.kt)("a",{parentName:"p",href:"#voluntary-locking"},"voluntary locking"),", and\n",(0,o.kt)("inlineCode",{parentName:"p"},"electorate")," is the total number of tokens issued in the network."),(0,o.kt)("p",null,"When the council proposes a new proposal through unanimous consent, the referendum would be put to\nthe vote using ",(0,o.kt)("strong",{parentName:"p"},"Negative Turnout Bias"),". Referring to the above image, when a Council referendum\nonly has a 25% turnout, the tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 34% for it to pass, while if the\nturnout increases to 75%, the tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 46%. A negative turnout bias\nrequires a heavy super-majority of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes to reject at low turnouts. However, as turnout\nincreases towards 100%, it becomes a simple majority carry as below."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7Bagainst&space;%5Cover&space;%5Csqrt%7Belectorate%7D%7D&space;%3C&space;%7Bapprove&space;%5Cover&space;%5Csqrt%7Bturnout%7D%7D",alt:null})),(0,o.kt)("p",null,"In short, when the turnout rate is low, a super-majority is required to reject the proposal, which\nmeans a lower threshold of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes must be reached. As turnout increases toward 100%, it becomes\na simple majority, a simple comparison of votes. If there are more ",(0,o.kt)("em",{parentName:"p"},"aye")," votes than ",(0,o.kt)("em",{parentName:"p"},"nay"),", then the\nproposal is carried, no matter how much stake votes on the proposal."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7Bapprove%7D&space;%3E&space;%7Bagainst%7D",alt:null})),(0,o.kt)("p",null,"To know more about where these above formulas come from, please read the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/frame/democracy/src/vote_threshold.rs"},"democracy pallet"),"."),(0,o.kt)("h4",{id:"example-of-adaptive-quorum-biasing"},"Example of Adaptive Quorum Biasing"),(0,o.kt)("p",null,"Let's assume we only have 1,500 DOT tokens in\ntotal and that this is a public proposal."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"John: 500 DOT"),(0,o.kt)("li",{parentName:"ul"},"Peter: 100 DOT"),(0,o.kt)("li",{parentName:"ul"},"Lilly: 150 DOT"),(0,o.kt)("li",{parentName:"ul"},"JJ: 150 DOT"),(0,o.kt)("li",{parentName:"ul"},"Ken: 600 DOT")),(0,o.kt)("p",null,"John: Votes ",(0,o.kt)("inlineCode",{parentName:"p"},"Yes")," for a 4 week lock period =>\n500 x 1 = 500 Votes"),(0,o.kt)("p",null,"Peter: Votes ",(0,o.kt)("inlineCode",{parentName:"p"},"Yes")," for a 4 week lock period =>\n100 x 1 = 100 Votes"),(0,o.kt)("p",null,"JJ: Votes ",(0,o.kt)("inlineCode",{parentName:"p"},"No")," for a 16 week lock period =>\n150 x 3 = 450 Votes"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"approve = 600"),(0,o.kt)("li",{parentName:"ul"},"against = 450"),(0,o.kt)("li",{parentName:"ul"},"turnout = 750"),(0,o.kt)("li",{parentName:"ul"},"electorate = 1500")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%5Cfrac%7B450%7D%7B%5Csqrt%7B750%7D%7D&space;%3C&space;%5Cfrac%7B600%7D%7B%5Csqrt%7B1500%7D%7D",alt:"\\Large \\frac{450}{\\sqrt{750}}&space;<&space;\\frac{600}{\\sqrt{1500}}"})),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7B16.432%7D&space;%3C&space;%7B15.492%7D",alt:"\\Large {16.432}&space;<&space;{15.492}"})),(0,o.kt)("p",null,"Since the above example is a public referendum, ",(0,o.kt)("strong",{parentName:"p"},"Super-Majority Approve")," would be used to\ncalculate the result. Super-Majority Approve requires more ",(0,o.kt)("em",{parentName:"p"},"aye")," votes to pass the referendum when\nturnout is low; therefore, based on the above result, the referendum will be rejected."),(0,o.kt)("admonition",{title:"only the winning voter's tokens are locked.",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"If the voters on the losing side of the referendum believe that the outcome will have adverse\neffects, their tokens are transferrable, so they will not be locked into the decision. Winning\nproposals are autonomously enacted after the ",(0,o.kt)("a",{parentName:"p",href:"#enactment"},"enactment period"),".")),(0,o.kt)("h3",{id:"enactment"},"Enactment"),(0,o.kt)("p",null,"Referenda are considered ",(0,o.kt)("em",{parentName:"p"},"baked")," if they are closed and tallied. Assuming a referendum is approved,\nit will be scheduled for ",(0,o.kt)("strong",{parentName:"p"},"enactment"),". Referenda are considered ",(0,o.kt)("em",{parentName:"p"},"unbaked")," if they are pending an\noutcome, i.e. being voted on."),(0,o.kt)("p",null,"All referenda are associated with an enactment delay or ",(0,o.kt)("strong",{parentName:"p"},"enactment period"),". This is the period\nbetween a referendum ending and (assuming it was approved) the changes being enacted."),(0,o.kt)("p",null,'For public and Council referenda, the enactment period is a fixed time of\n28 days. For proposals submitted as part of\nthe enactment of a prior referendum, it can be set as desired. Emergency proposals deal with major\nproblems with the network and need to be "fast-tracked". These will have a shorter enactment period.'),(0,o.kt)("h2",{id:"voting-on-a-referendum"},"Voting on a Referendum"),(0,o.kt)("p",null,"To vote, a voter generally must lock their tokens up for at least the enactment period beyond the\nend of the referendum. This is to ensure that some minimal economic buy-in to the result is needed\nand to dissuade vote selling."),(0,o.kt)("admonition",{title:"Referenda explainer video",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"To learn more about voting on referenda, please check out our\n",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=BkbhhlsezGA&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=31&ab_channel=Polkadot"},"technical explainer video"),".")),(0,o.kt)("p",null,"It is possible to vote without locking, but your vote is worth a small fraction of a normal vote,\ngiven your stake. At the same time, holding only a small amount of tokens does not mean that the\nholder cannot influence the referendum result, thanks to time-locking or ",(0,o.kt)("strong",{parentName:"p"},"voluntary locking")," (see\nbelow)."),(0,o.kt)("h3",{id:"voluntary-locking"},"Voluntary Locking"),(0,o.kt)("admonition",{title:"Voluntary Locking",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"For more information about voluntary locking or conviction voting see\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#voluntary-locking"},"Polkadot OpenGov"),".")),(0,o.kt)("h3",{id:"delegations"},"Delegations"),(0,o.kt)("p",null,"In Polkadot you can\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy#delegate-a-vote"},"delegate your voting power")," to\nanother account you trust if you are not willing to stay up-to-date with all referenda."),(0,o.kt)("p",null,"You can also use a ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-proxies#governance-proxy"},"governance proxy")," to vote on behalf of\nyour stash account. The proxy can be yours, or you can authorize a third-party governance proxy to\nvote with your stash. Learn more from the ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-proxies"},"dedicated page on Proxy Accounts"),"."),(0,o.kt)("h2",{id:"council"},"Council"),(0,o.kt)("p",null,'To represent passive stakeholders, Polkadot\nintroduces the idea of a "council". The council is an on-chain entity comprising several actors,\neach represented as an on-chain account. On\nPolkadot, the council currently consists of\n13 members.'),(0,o.kt)("p",null,"Along with ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn/learn-treasury"},"controlling the treasury"),", the council is called upon primarily for\nthree tasks of governance:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Proposing sensible referenda"),(0,o.kt)("li",{parentName:"ul"},"Cancelling uncontroversially dangerous or malicious referenda"),(0,o.kt)("li",{parentName:"ul"},"Electing the ",(0,o.kt)("a",{parentName:"li",href:"#technical-committee"},"Technical Committee"),".")),(0,o.kt)("p",null,"For a referendum to be proposed by the council, a strict majority of members must be in favor, with\nno member exercising a veto. Vetoes may be exercised only once by a member for any single proposal.\nIf the proposal is resubmitted after a cool-down period, they may not veto it a second time."),(0,o.kt)("p",null,"Council motion that pass with a 3/5 (60%) super-majority - but without reaching unanimous support -\nwill move to a public referendum under a neutral, majority-carries voting scheme. In the case that\nall members of the council that voted are in favor of a motion, the vote is considered unanimous and\nbecomes a referendum with ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},"negative turnout bias"),"."),(0,o.kt)("admonition",{title:"Explainer video on the Council",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"For more information, check out our\n",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=837Vv3gdRzI"},"video explainer on Council"))),(0,o.kt)("h3",{id:"prime-members"},"Prime Members"),(0,o.kt)("p",null,"The council, being an instantiation of\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/collective"},"Substrate's Collective pallet"),",\nimplements what's called a ",(0,o.kt)("em",{parentName:"p"},"prime member")," whose vote acts as the default for other members that fail\nto vote before the timeout."),(0,o.kt)("p",null,"The prime member is chosen based on a ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Borda_count"},"Borda count"),"."),(0,o.kt)("p",null,'The purpose of having a prime council member is to ensure a quorum, even when several members\nabstain from a vote. Council members might be tempted to vote a "soft rejection" or a "soft\napproval" by not voting and letting the others vote. The existence of a prime member forces\ncouncilors to be explicit in their votes or have their vote counted for whatever is voted on by the\nprime.'),(0,o.kt)("h2",{id:"technical-committee"},"Technical Committee"),(0,o.kt)("p",null,"The Technical Committee(TC) was introduced in the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/kusama-rollout-and-governance/"},"Kusama rollout and governance post")," as one\nof the three chambers of Kusama governance (along with the Council and the Referendum chamber). The\nTC is composed of the teams that have successfully implemented or specified either a\nPolkadot runtime or Polkadot Host. Teams are\nadded or removed from the TC via a simple majority vote of the ",(0,o.kt)("a",{parentName:"p",href:"#council"},"Council"),"."),(0,o.kt)("p",null,'The TC aims to safeguard against malicious referenda, implement bug fixes, reverse faulty runtime\nupdates, or add new but battle-tested features. The TC can fast-track proposals using the Democracy\npallet and is the only origin that can trigger the fast-tracking functionality. We can think of the\nTC as a "unique origin" that cannot generate proposals but fast-track existing ones.'),(0,o.kt)("p",null,"Fast-tracked referenda are the only referenda that can be active alongside another active\nreferendum. Thus, with fast-tracked referenda, it is possible to have two active referendums\nsimultaneously. Voting on one does not prevent a user from voting on the other."),(0,o.kt)("h2",{id:"frequently-asked-questions"},"Frequently Asked Questions"),(0,o.kt)("h3",{id:"how-to-be-a-council-member"},"How to be a council member?"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"approval-vote",src:a(93395).Z,width:"850",height:"340"})),(0,o.kt)("p",null,"All stakeholders can signal their approval of any of the registered candidates."),(0,o.kt)("p",null,"Council elections are handled by the same ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n election")," process that\nselects validators from the available pool based on nominations. However, token holders' votes for\ncouncilors are isolated from any nominations they may have on validators. Council terms last for one\nweek."),(0,o.kt)("p",null,"At the end of each term, ",(0,o.kt)("a",{parentName:"p",href:"../learn-phragmen#algorithm"},"Phragm\xe9n election algorithm")," runs and the\nresult will choose the new councilors based on the vote configurations of all voters. The election\nalso chooses a set number of runners-up, which is currently\n20 that will remain in the queue with their votes\nintact."),(0,o.kt)("p",null,'As opposed to a "first-past-the-post" electoral system, where voters can only vote for a single\ncandidate from a list, a Phragm\xe9n election is a more expressive way to include each voter\u2019s views.\nToken holders can treat it as a way to support as many candidates as they want. The election\nalgorithm will find a fair subset of the candidates that most closely matches the expressed\nindications of the electorate as a whole.'),(0,o.kt)("p",null,"Let's take a look at the example below."),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"center"},"Round 1"),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Token Holders")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Candidates")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"A"),(0,o.kt)("td",{parentName:"tr",align:"center"},"B"),(0,o.kt)("td",{parentName:"tr",align:"center"},"C"),(0,o.kt)("td",{parentName:"tr",align:"center"},"D"),(0,o.kt)("td",{parentName:"tr",align:"center"},"E")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Peter"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Alice"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Bob"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Kelvin"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Total")),(0,o.kt)("td",{parentName:"tr",align:"center"},"2"),(0,o.kt)("td",{parentName:"tr",align:"center"},"1"),(0,o.kt)("td",{parentName:"tr",align:"center"},"3"),(0,o.kt)("td",{parentName:"tr",align:"center"},"2"),(0,o.kt)("td",{parentName:"tr",align:"center"},"2")))),(0,o.kt)("p",null,"The above example shows that candidate C wins the election in round 1, while candidates A, B, D & E\nkeep remaining on the candidates' list for the next round."),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"center"},"Round 2"),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Token Holders")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Candidates")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"A"),(0,o.kt)("td",{parentName:"tr",align:"center"},"B"),(0,o.kt)("td",{parentName:"tr",align:"center"},"D"),(0,o.kt)("td",{parentName:"tr",align:"center"},"E")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Peter"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Alice"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Bob"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Kelvin"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Total")),(0,o.kt)("td",{parentName:"tr",align:"center"},"4"),(0,o.kt)("td",{parentName:"tr",align:"center"},"4"),(0,o.kt)("td",{parentName:"tr",align:"center"},"1"),(0,o.kt)("td",{parentName:"tr",align:"center"},"1")))),(0,o.kt)("p",null,"The top-N (say 4 in this example) runners-up can remain, and their votes persist until the next\nelection. After round 2, even though candidates A & B get the same number of votes in this round,\ncandidate A gets elected because after adding the older unused approvals, it is higher than B."),(0,o.kt)("h3",{id:"how-can-i-appeal-to-the-council-to-enact-a-change-on-my-behalf"},"How can I appeal to the council to enact a change on my behalf?"),(0,o.kt)("p",null,"In some circumstances, you may want to appeal to the on-chain council to enact a change on your\nbehalf. One example of this circumstance is the case of lost or locked funds when the funds were\nlost due to a human interface error (such as inputting an address for another network). Another\nexample is if you participated in the 2017 Polkadot ICO with a multi-sig address which now does not\nlet you sign a message easily. When these circumstances can be proven beyond a reasonable doubt to\nbe an error, the council ",(0,o.kt)("em",{parentName:"p"},"may")," consider a governance motion to correct it."),(0,o.kt)("p",null,"The first step to appeal to the council is to contact the councilors. There is no singular place\nwhere you are guaranteed to grab every councilor\u2019s ear with your message. However, there are a\nhandful of good places to start where you can get the attention of some of them. The\n",(0,o.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction"),"\n"," matrix\nroom is one such place. After creating an account and joining this room, you can post a\nwell-thought-through message here that lays down your case and justifies why you think the council\nshould consider enacting a change to the protocol on your behalf."),(0,o.kt)("p",null,"At some point, you will likely need a place for a longer-form discussion. For this, making a post on\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/"},"Polkassembly")," is the recommended place to do so. When you write\na post on Polkassembly, present all the evidence for your circumstances and state clearly what kind\nof change you would suggest to the councilors to enact."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Remember, the councilors do not need to make the change, it is your responsibility to make a strong\ncase for why the change should be made.")),(0,o.kt)("h2",{id:"gov1-runtime-upgrade-monitoring"},"Gov1 Runtime Upgrade Monitoring"),(0,o.kt)("p",null,"Monitor the chain for:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Started)")," events and log ",(0,o.kt)("inlineCode",{parentName:"li"},"index")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"blockNumber"),". This event indicates that a\nreferendum has started (although it does not mean it is a runtime upgrade). Get the referendum\ninfo","*","; it should have a status of ",(0,o.kt)("inlineCode",{parentName:"li"},"Ongoing"),". Find the ending block number (",(0,o.kt)("inlineCode",{parentName:"li"},"end"),") and the\nenactment ",(0,o.kt)("inlineCode",{parentName:"li"},"delay")," (delay). If the referendum passes, it will execute on block number\n",(0,o.kt)("inlineCode",{parentName:"li"},"end + delay"),"."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Passed)"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"democracy(NotPassed)"),", or, ",(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Cancelled)")," events citing the index.\nIf ",(0,o.kt)("inlineCode",{parentName:"li"},"Passed"),", you need to look at the ",(0,o.kt)("inlineCode",{parentName:"li"},"scheduler(Scheduled)")," event in the same block for the\nenactment block."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(PreimageNoted)")," events with the same hash as the ",(0,o.kt)("inlineCode",{parentName:"li"},"ReferendumInfoOf(index)")," item. This\nmay be up to the last block before execution, but it will not work if this is missing."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Executed)")," events for actual execution. In the case of a runtime upgrade, there will\nalso be a ",(0,o.kt)("inlineCode",{parentName:"li"},"system(CodeUpdated)")," event.")),(0,o.kt)("p",null,"You can also monitor ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/"},"Polkassembly")," for discussions on on-chain\nproposals and referenda."),(0,o.kt)("p",null,"*"," E.g. via ",(0,o.kt)("inlineCode",{parentName:"p"},"pallets/democracy/storage/ReferendumInfoOf?key1=index&at=blockNumber")," on Sidecar."),(0,o.kt)("h2",{id:"resources"},"Resources"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot/wiki/Governance"},"Initial Governance Description")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/democracy/src"},"Democracy Pallet")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=VsZuDJMmVPY&feature=youtu.be&t=24734"},"Governance Demo")," - Dr.\nGavin Wood presents the initial governance structure for Polkadot. (Video)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://www.crowdcast.io/e/governance-on-polkadot--"},"Governance on Polkadot")," - A webinar\nexplaining how governance works in Polkadot and Kusama.")))}k.isMDXComponent=!0},74562:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/gov1-overview-515a8f55923136c0b6e6bd23bea3d836.png"},11173:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/gov1-timeline-69424fec137182a898f00c29a90fbdb1.png"},72895:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/adaptive-quorum-biasing-18c2e70b6b9d2c3abf563219b11974dc.png"},93395:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/approval-vote-d0622e1c0a9bc7c50ab9f23761488dbe.png"}}]); \ No newline at end of file diff --git a/assets/js/9913464d.f07577d4.js b/assets/js/9913464d.f07577d4.js deleted file mode 100644 index 8f9724c6b767..000000000000 --- a/assets/js/9913464d.f07577d4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5341],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=p(a),u=r,h=m["".concat(s,".").concat(u)]||m[u]||d[u]||o;return a?n.createElement(h,i(i({ref:t},c),{},{components:a})):n.createElement(h,i({ref:t},c))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:r,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>l,metadata:()=>p,toc:()=>m});var n=a(87462),r=a(63366),o=(a(67294),a(3905)),i=["components"],l={id:"learn-governance",title:"Governance V1",sidebar_label:"Governance V1",description:"Polkadot's First Governance Model.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-governance"},s=void 0,p={unversionedId:"learn/archive/learn-governance",id:"learn/archive/learn-governance",title:"Governance V1",description:"Polkadot's First Governance Model.",source:"@site/../docs/learn/archive/learn-governance.md",sourceDirName:"learn/archive",slug:"/learn/learn-governance",permalink:"/docs/learn/learn-governance",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/archive/learn-governance.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1712156398,formattedLastUpdatedAt:"Apr 3, 2024",frontMatter:{id:"learn-governance",title:"Governance V1",sidebar_label:"Governance V1",description:"Polkadot's First Governance Model.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-governance"},sidebar:"docs",previous:{title:"Archive",permalink:"/docs/learn-archive"},next:{title:"Gov1 Treasury",permalink:"/docs/learn/learn-treasury"}},c={},m=[{value:"Governance Summary",id:"governance-summary",level:2},{value:"Proposals",id:"proposals",level:2},{value:"Endorsing Proposals",id:"endorsing-proposals",level:3},{value:"Cancelling Proposals",id:"cancelling-proposals",level:3},{value:"Blacklisting Proposals",id:"blacklisting-proposals",level:3},{value:"Referenda",id:"referenda",level:2},{value:"Referenda Timeline",id:"referenda-timeline",level:3},{value:"Public Referenda",id:"public-referenda",level:3},{value:"Council Referenda",id:"council-referenda",level:3},{value:"Alternating Voting Timetable",id:"alternating-voting-timetable",level:3},{value:"Adaptive Quorum Biasing",id:"adaptive-quorum-biasing",level:3},{value:"Example of Adaptive Quorum Biasing",id:"example-of-adaptive-quorum-biasing",level:4},{value:"Enactment",id:"enactment",level:3},{value:"Voting on a Referendum",id:"voting-on-a-referendum",level:2},{value:"Voluntary Locking",id:"voluntary-locking",level:3},{value:"Delegations",id:"delegations",level:3},{value:"Council",id:"council",level:2},{value:"Prime Members",id:"prime-members",level:3},{value:"Technical Committee",id:"technical-committee",level:2},{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"How to be a council member?",id:"how-to-be-a-council-member",level:3},{value:"How can I appeal to the council to enact a change on my behalf?",id:"how-can-i-appeal-to-the-council-to-enact-a-change-on-my-behalf",level:3},{value:"Gov1 Runtime Upgrade Monitoring",id:"gov1-runtime-upgrade-monitoring",level:2},{value:"Resources",id:"resources",level:2}],d={toc:m},u="wrapper";function h(e){var t=e.components,l=(0,r.Z)(e,i);return(0,o.kt)(u,(0,n.Z)({},d,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"sticky",style:{zIndex:1}},(0,o.kt)("br",null),(0,o.kt)("p",null,"The content on this page is archived. For up-to-date information about governance, see the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Polkadot OpenGov page"),".")),(0,o.kt)("p",null,"Polkadot uses a sophisticated governance\nmechanism that allows it to evolve gracefully overtime at the ultimate behest of its assembled\nstakeholders. The stated goal is to ensure that the majority of the stake can always command the\nnetwork."),(0,o.kt)("p",null,"Polkadot brings together various novel\nmechanisms, including an amorphous (abstract) form of state-transition function stored on-chain\ndefined in a platform-agnostic language (i.e. ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-wasm"},"WebAssembly"),"). It also allows for\nseveral on-chain voting mechanisms, such as referenda with the novel concept of\n",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},"Adaptive Quorum Biasing")," and batch approval voting. All changes to the\nprotocol must be agreed upon by stake-weighted referenda."),(0,o.kt)("p",null,"To make any changes to the network, the idea is to compose active token holders and the council\ntogether to administrate a network upgrade decision. No matter whether the proposal is proposed by\nthe public (token holders) or the ",(0,o.kt)("a",{parentName:"p",href:"#council"},"Council"),", it finally will have to go through a vote on\na referendum to let all holders, weighted by stake, make the decision."),(0,o.kt)("h2",{id:"governance-summary"},"Governance Summary"),(0,o.kt)("p",null,"The figure below shows an overview of Governance V1 with the key actors and different paths for\nsubmitting a proposal that can potentially be voted on as a referendum."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"gov1-overview",src:a(74562).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"The public (i.e. token holders) can submit a proposal that gets added to the proposal queue. Here,\nproposals are ",(0,o.kt)("a",{parentName:"p",href:"#endorsing-proposals"},"endorsed"),", and the one that gets the most support will climb to\nthe top of the queue. When it is time, the proposal at the top of the queue will become a\n",(0,o.kt)("a",{parentName:"p",href:"#public-referenda"},"Public Referendum"),". For instance, the proposal with 11 endorsements is shown at\nthe top of the queue in the figure, which is ready to become a referendum."),(0,o.kt)("p",null,"The public can also submit a ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn/learn-treasury#creating-a-treasury-proposal"},"treasury proposal"),",\nwhich must be evaluated by the ",(0,o.kt)("a",{parentName:"p",href:"#council"},"Council")," through a motion. If the Council motion passes,\nthe treasury proposal can be directly executed or go to the external queue, which will be voted on\nthrough a ",(0,o.kt)("a",{parentName:"p",href:"#council-referenda"},"Council Referendum"),". See the figure's green horizontal path from the\nPublic (green) to the Council (yellow). Treasury proposals and Council proposals can be directly\nexecuted (horizontal yellow arrows) or go to the external queue, where they will become a referendum"),(0,o.kt)("p",null,"Note that the external queue always consists of\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/f4a2e84ee5974b219f2a03cd195105060c41e3cd/frame/democracy/src/lib.rs#LL29C8-L31C4"},"a single proposal"),".\nA proposal in the external queue can be fast-tracked by the\n",(0,o.kt)("a",{parentName:"p",href:"#technical-committee"},"Technical Committee")," (light blue). The fast track can contain as many\nproposals as possible (also called emergency proposals) that can be voted on simultaneously with\nwith the referenda introduced either by the Council or the Public. See in the figure the yellow\ncircle (i.e. Council Proposal) exiting the external queue, and the yellow circle with a light-blue\nborder also leaving the queue and being fast-tracked by the Technical Committee (TC). Once empty,\nthe external queue can be filled with another Council proposal."),(0,o.kt)("p",null,"The Council can also submit proposals that will end up in the external queue. Voting on Council and\nPublic proposals subject to an ",(0,o.kt)("a",{parentName:"p",href:"#alternating-voting-timetable"},"alternating timetable"),', shown in the\nfigure as the "on" and "off" toggles on the external and proposal queues. In this example, the\nPublic proposal will be voted on together with the fast-tracked Council Proposal. Voting on\nnon-fast-tracked Council Proposals will be blocked until the alternating timetable switches the\ntoggles, which stops Public proposals from becoming a referenda.'),(0,o.kt)("p",null,"Referenda will follow an ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},"adaptive quorum biasing")," mechanism for deciding\nwhether they get enacted, and if they do, they will be executed after an\n",(0,o.kt)("a",{parentName:"p",href:"#enactment"},"enactment period"),"."),(0,o.kt)("p",null,"Token holders can delegate their votes (with a conviction multiplier) to another account belonging\nto a trusted entity voting on their behalf."),(0,o.kt)("h2",{id:"proposals"},"Proposals"),(0,o.kt)("p",null,"Referenda can be started in different ways:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Publicly submitted proposals"),(0,o.kt)("li",{parentName:"ul"},"Proposals submitted by the council, either through a majority or unanimously"),(0,o.kt)("li",{parentName:"ul"},"Proposals submitted as part of the ",(0,o.kt)("a",{parentName:"li",href:"#enactment"},"enactment")," of a prior referendum (i.e. making a\nreferendum to start a new referendum)"),(0,o.kt)("li",{parentName:"ul"},"Emergency proposals submitted by the ",(0,o.kt)("a",{parentName:"li",href:"#technical-committee"},"Technical Committee")," and approved by\nthe ",(0,o.kt)("a",{parentName:"li",href:"#council"},"Council"))),(0,o.kt)("admonition",{title:"Starting a proposal in Governance V1",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"For more information about how to start a proposal, see the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy#proposing-an-action"},"dedicated page"),".")),(0,o.kt)("h3",{id:"endorsing-proposals"},"Endorsing Proposals"),(0,o.kt)("p",null,"Anyone can submit a proposal by depositing the minimum amount of tokens for a certain period (number\nof blocks). If someone agrees with the proposal, they may deposit the same amount of tokens to\nsupport it - this action is called\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy#endorsing-a-proposal"},(0,o.kt)("em",{parentName:"a"},"endorsing")),". The\nproposal with the highest amount of bonded support will be selected to be a referendum in the next\nvoting cycle based on an ",(0,o.kt)("a",{parentName:"p",href:"#alternating-voting-timetable"},"alternating voting timetable"),"."),(0,o.kt)("h3",{id:"cancelling-proposals"},"Cancelling Proposals"),(0,o.kt)("p",null,"A proposal can be canceled if the ",(0,o.kt)("a",{parentName:"p",href:"#technical-committee"},"Technical Committee")," unanimously agrees to\ndo so or if Root Origin (e.g. sudo) triggers this functionality. A canceled proposal's deposit is\nburned."),(0,o.kt)("p",null,"Additionally, a two-thirds majority of the council can cancel a referendum. This may function as a\nlast-resort if there is an issue found late in a referendum's proposal, such as a bug in the code of\nthe runtime that the proposal would institute."),(0,o.kt)("p",null,"If the cancellation is controversial enough that the council cannot get a two-thirds majority, then\nit will be left to the stakeholders ",(0,o.kt)("em",{parentName:"p"},"en masse")," to determine the proposal\u2019s fate."),(0,o.kt)("h3",{id:"blacklisting-proposals"},"Blacklisting Proposals"),(0,o.kt)("p",null,"A proposal can be blacklisted by Root Origin (e.g. sudo). A blacklisted proposal and its related\nreferendum (if any) are immediately ",(0,o.kt)("a",{parentName:"p",href:"#canceling"},"canceled"),". Additionally, a blacklisted proposal's\nhash cannot re-appear in the proposal queue. Blacklisting is useful when removing erroneous\nproposals that could be submitted with the same hash."),(0,o.kt)("p",null,"Upon seeing their proposal removed, a submitter who is not properly introduced to the democracy\nsystem of Polkadot might be tempted to\nre-submit the same proposal. That said, this is far from a fool-proof method of preventing invalid\nproposals from being submitted - a single changed character in a proposal's text will also change\nthe hash of the proposal, rendering the per-hash blacklist invalid."),(0,o.kt)("h2",{id:"referenda"},"Referenda"),(0,o.kt)("p",null,"Referenda are simple, inclusive, stake-based voting schemes. Each referendum has a specific proposal\nthat takes the form of a ",(0,o.kt)("strong",{parentName:"p"},"privileged function")," call in the runtime. That function includes the\nmost powerful ",(0,o.kt)("strong",{parentName:"p"},"call"),": ",(0,o.kt)("inlineCode",{parentName:"p"},"set_code"),', which can switch out the entire runtime code, achieving what\nwould otherwise require a "hard fork".'),(0,o.kt)("p",null,'Referenda are discrete events, have a fixed period where voting happens, and then are tallied, and\nthe function call is executed if the vote is approved. Referenda are always binary: your only\noptions in voting are "aye", "nay", or abstaining entirely.'),(0,o.kt)("h3",{id:"referenda-timeline"},"Referenda Timeline"),(0,o.kt)("p",null,"The structure of the timeline for all referenda is the same regardless of who initiates the\nproposal, although the timeline length can vary (see below)."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"gov1-timeline",src:a(11173).Z,width:"1920",height:"800"})),(0,o.kt)("p",null,"The figure above provides a summary view of the referenda timeline for Governance V1."),(0,o.kt)("p",null,"In (1), the proposal is submitted, and the Launch Period starts. During this period of indefinite\nlength the voters can ",(0,o.kt)("a",{parentName:"p",href:"#endorsing-proposals"},"endorse")," proposals by bonding the same amount of tokens\nused by the depositor. Deposited tokens for endorsement will be returned once the proposal becomes a\nreferendum. During the launch period, the proposal will compete with other proposals, and the one\nthat gets to the top will be selected for a referendum when the next voting period starts."),(0,o.kt)("p",null,"The figure shows that the launch period is shown with a fixed length. Still, it varies depending on\nwho initiated the proposal and how many proposals there are in the pipeline. Council motions will\nlikely have a short launch period when compared to the public referenda which might take longer\nunless they are the only ones in the pipeline."),(0,o.kt)("p",null,"In (2), the proposal is selected for a referendum. Proposals initiated by the public will become a\n",(0,o.kt)("a",{parentName:"p",href:"#public-referenda"},"public referendum"),", while those initiated by the council will become\n",(0,o.kt)("a",{parentName:"p",href:"#council-referenda"},"council referenda"),". The voting period lasts\n28 days, after which, if the proposal is\napproved, it will go through an enactment period. Rejected proposals will need to start from (1).\nNote that Governance V1 uses an ",(0,o.kt)("a",{parentName:"p",href:"#alternating-voting-timetable"},"alternating voting timeline")," where\nvoters can vote either for a public proposal or a council motion every\n28 days."),(0,o.kt)("p",null,"In (3), the proposal is approved and moves through the ",(0,o.kt)("a",{parentName:"p",href:"#enactment"},"enactment period")," that can be of\ndifferent lengths depending on who initiated the proposal in the first place, with emergency\nproposals being the fastest ones and the only ones that can be voted simultaneously with other\nreferenda."),(0,o.kt)("h3",{id:"public-referenda"},"Public Referenda"),(0,o.kt)("p",null,"Public referenda will have a ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},(0,o.kt)("strong",{parentName:"a"},"positive turnout bias")),", meaning that\nthey will require a heavy supermajority of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes to pass at low turnouts but as turnout\nincreases towards 100%, it will require a simple majority of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes to pass (i.e. 51% wins)."),(0,o.kt)("p",null,"Note that the bonded tokens will be released once the proposal is tabled (that is, brought to a\nvote), and a maximum of 100 public proposals can\nbe in the proposal queue."),(0,o.kt)("admonition",{title:"turnout",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The total number of voting tokens excluding conviction or ",(0,o.kt)("a",{parentName:"p",href:"#voluntary-locking"},"voluntary locking"),".")),(0,o.kt)("h3",{id:"council-referenda"},"Council Referenda"),(0,o.kt)("p",null,"Unanimous Council - When all council members agree on a proposal, it can be moved to a referendum\nwith a ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},(0,o.kt)("strong",{parentName:"a"},"negative turnout bias")),". Briefly, it will require a heavy\nsupermajority of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes to reject at low turnouts, but as turnout increases towards 100%, it\nwill require a simple majority of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes to fail (i.e. 51% wins)."),(0,o.kt)("p",null,"Majority Council - When agreement from only a simple majority of council members occurs, the\nreferendum will need ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},(0,o.kt)("strong",{parentName:"a"},"simple majority"))," to pass."),(0,o.kt)("admonition",{title:"Public- vs. Council-initiated Referenda",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Public referenda must be agreed upon using a positive bias to mitigate attacks by malicious or\nill-conceived proposals. Conversely, when a proposal is unanimously voted in favor by the council,\nit benefits from using the negative bias. We assume low turnout is less problematic if the council\nproposes a referendum. Also, the council members are elected by the community and have strong\ntechnical as well as functional knowledge about the system, and we assume solid justifications back\nchanges proposed by the council.")),(0,o.kt)("h3",{id:"alternating-voting-timetable"},"Alternating Voting Timetable"),(0,o.kt)("p",null,"All referenda are executed by Root Origin. It follows that multiple referenda cannot be voted upon\nin the same period, excluding emergency referenda. An emergency referendum occurring at the same\ntime as a regular referendum (either public- or council-proposed) is the only time multiple\nreferenda can be voted on."),(0,o.kt)("p",null,"Every 28 days, a new referendum will come up for a\nvote, assuming there is at least one proposal in one of the queues. There is a queue for\nCouncil-approved proposals and a queue for publicly-submitted proposals. The referendum to be voted\nupon alternates between the top proposal in the two queues, where the proposals' rank is based on\n",(0,o.kt)("a",{parentName:"p",href:"#endorsing-proposals"},"endorsement")," (i.e. bonded tokens)."),(0,o.kt)("h3",{id:"adaptive-quorum-biasing"},"Adaptive Quorum Biasing"),(0,o.kt)("p",null,"Polkadot introduces the concept of ",(0,o.kt)("strong",{parentName:"p"},"Adaptive\nQuorum Biasing"),", which is used to alter the effective super-majority required to make it easier or\nmore difficult for a proposal to pass depending on voting power (turnout) and origin (Council or\npublic)."),(0,o.kt)("p",null,"Adaptive Quorum Biasing creates three tallying mechanisms: majority carry, super-majority approve,\nand super-majority against. They all equate to a simple majority-carry system at 100% turnout. Their\nselection depends on which entity proposed the proposal and whether all Council members voted yes\n(in the case of Council Referenda)."),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"th"},"Entity")),(0,o.kt)("th",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"th"},"Metric")))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Public"),(0,o.kt)("td",{parentName:"tr",align:"center"},"Positive Turnout Bias (Super-Majority Approve)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Council (Complete agreement)"),(0,o.kt)("td",{parentName:"tr",align:"center"},"Negative Turnout Bias (Super-Majority Against)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Council (Majority agreement)"),(0,o.kt)("td",{parentName:"tr",align:"center"},"Simple Majority")))),(0,o.kt)("p",null,"Let's use the image below as an example."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"adaptive-quorum-biasing",src:a(72895).Z,width:"537",height:"439"})),(0,o.kt)("p",null,"If a publicly submitted referendum only has a 25% turnout, the tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 66%\nfor it to pass since we applied ",(0,o.kt)("strong",{parentName:"p"},"Positive Turnout Bias"),". In contrast, when it has a 75% turnout,\nthe tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 54%, which means that the super-majority required decreases as\nthe turnout increases. A positive turnout bias, whereby a heavy super-majority of aye votes is\nrequired to carry at low turnouts. However, as turnout increases towards 100%, it becomes a simple\nmajority carry as below."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7Bagainst&space;%5Cover&space;%5Csqrt%7Bturnout%7D%7D&space;%3C&space;%7Bapprove&space;%5Cover&space;%5Csqrt%7Belectorate%7D%7D",alt:null})),(0,o.kt)("p",null,"Where ",(0,o.kt)("inlineCode",{parentName:"p"},"approve")," is the number of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes, ",(0,o.kt)("inlineCode",{parentName:"p"},"against")," is the number of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes, ",(0,o.kt)("inlineCode",{parentName:"p"},"turnout")," is\nthe total number of voting tokens excluding ",(0,o.kt)("a",{parentName:"p",href:"#voluntary-locking"},"voluntary locking"),", and\n",(0,o.kt)("inlineCode",{parentName:"p"},"electorate")," is the total number of tokens issued in the network."),(0,o.kt)("p",null,"When the council proposes a new proposal through unanimous consent, the referendum would be put to\nthe vote using ",(0,o.kt)("strong",{parentName:"p"},"Negative Turnout Bias"),". Referring to the above image, when a Council referendum\nonly has a 25% turnout, the tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 34% for it to pass, while if the\nturnout increases to 75%, the tally of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes has to reach 46%. A negative turnout bias\nrequires a heavy super-majority of ",(0,o.kt)("em",{parentName:"p"},"nay")," votes to reject at low turnouts. However, as turnout\nincreases towards 100%, it becomes a simple majority carry as below."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7Bagainst&space;%5Cover&space;%5Csqrt%7Belectorate%7D%7D&space;%3C&space;%7Bapprove&space;%5Cover&space;%5Csqrt%7Bturnout%7D%7D",alt:null})),(0,o.kt)("p",null,"In short, when the turnout rate is low, a super-majority is required to reject the proposal, which\nmeans a lower threshold of ",(0,o.kt)("em",{parentName:"p"},"aye")," votes must be reached. As turnout increases toward 100%, it becomes\na simple majority, a simple comparison of votes. If there are more ",(0,o.kt)("em",{parentName:"p"},"aye")," votes than ",(0,o.kt)("em",{parentName:"p"},"nay"),", then the\nproposal is carried, no matter how much stake votes on the proposal."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7Bapprove%7D&space;%3E&space;%7Bagainst%7D",alt:null})),(0,o.kt)("p",null,"To know more about where these above formulas come from, please read the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/master/substrate/frame/democracy/src/vote_threshold.rs"},"democracy pallet"),"."),(0,o.kt)("h4",{id:"example-of-adaptive-quorum-biasing"},"Example of Adaptive Quorum Biasing"),(0,o.kt)("p",null,"Let's assume we only have 1,500 DOT tokens in\ntotal and that this is a public proposal."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"John: 500 DOT"),(0,o.kt)("li",{parentName:"ul"},"Peter: 100 DOT"),(0,o.kt)("li",{parentName:"ul"},"Lilly: 150 DOT"),(0,o.kt)("li",{parentName:"ul"},"JJ: 150 DOT"),(0,o.kt)("li",{parentName:"ul"},"Ken: 600 DOT")),(0,o.kt)("p",null,"John: Votes ",(0,o.kt)("inlineCode",{parentName:"p"},"Yes")," for a 4 week lock period =>\n500 x 1 = 500 Votes"),(0,o.kt)("p",null,"Peter: Votes ",(0,o.kt)("inlineCode",{parentName:"p"},"Yes")," for a 4 week lock period =>\n100 x 1 = 100 Votes"),(0,o.kt)("p",null,"JJ: Votes ",(0,o.kt)("inlineCode",{parentName:"p"},"No")," for a 16 week lock period =>\n150 x 3 = 450 Votes"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"approve = 600"),(0,o.kt)("li",{parentName:"ul"},"against = 450"),(0,o.kt)("li",{parentName:"ul"},"turnout = 750"),(0,o.kt)("li",{parentName:"ul"},"electorate = 1500")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%5Cfrac%7B450%7D%7B%5Csqrt%7B750%7D%7D&space;%3C&space;%5Cfrac%7B600%7D%7B%5Csqrt%7B1500%7D%7D",alt:"\\Large \\frac{450}{\\sqrt{750}}&space;<&space;\\frac{600}{\\sqrt{1500}}"})),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://latex.codecogs.com/svg.latex?%5Clarge&space;%7B16.432%7D&space;%3C&space;%7B15.492%7D",alt:"\\Large {16.432}&space;<&space;{15.492}"})),(0,o.kt)("p",null,"Since the above example is a public referendum, ",(0,o.kt)("strong",{parentName:"p"},"Super-Majority Approve")," would be used to\ncalculate the result. Super-Majority Approve requires more ",(0,o.kt)("em",{parentName:"p"},"aye")," votes to pass the referendum when\nturnout is low; therefore, based on the above result, the referendum will be rejected."),(0,o.kt)("admonition",{title:"only the winning voter's tokens are locked.",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"If the voters on the losing side of the referendum believe that the outcome will have adverse\neffects, their tokens are transferrable, so they will not be locked into the decision. Winning\nproposals are autonomously enacted after the ",(0,o.kt)("a",{parentName:"p",href:"#enactment"},"enactment period"),".")),(0,o.kt)("h3",{id:"enactment"},"Enactment"),(0,o.kt)("p",null,"Referenda are considered ",(0,o.kt)("em",{parentName:"p"},"baked")," if they are closed and tallied. Assuming a referendum is approved,\nit will be scheduled for ",(0,o.kt)("strong",{parentName:"p"},"enactment"),". Referenda are considered ",(0,o.kt)("em",{parentName:"p"},"unbaked")," if they are pending an\noutcome, i.e. being voted on."),(0,o.kt)("p",null,"All referenda are associated with an enactment delay or ",(0,o.kt)("strong",{parentName:"p"},"enactment period"),". This is the period\nbetween a referendum ending and (assuming it was approved) the changes being enacted."),(0,o.kt)("p",null,'For public and Council referenda, the enactment period is a fixed time of\n28 days. For proposals submitted as part of\nthe enactment of a prior referendum, it can be set as desired. Emergency proposals deal with major\nproblems with the network and need to be "fast-tracked". These will have a shorter enactment period.'),(0,o.kt)("h2",{id:"voting-on-a-referendum"},"Voting on a Referendum"),(0,o.kt)("p",null,"To vote, a voter generally must lock their tokens up for at least the enactment period beyond the\nend of the referendum. This is to ensure that some minimal economic buy-in to the result is needed\nand to dissuade vote selling."),(0,o.kt)("admonition",{title:"Referenda explainer video",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"To learn more about voting on referenda, please check out our\n",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=BkbhhlsezGA&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=31&ab_channel=Polkadot"},"technical explainer video"),".")),(0,o.kt)("p",null,"It is possible to vote without locking, but your vote is worth a small fraction of a normal vote,\ngiven your stake. At the same time, holding only a small amount of tokens does not mean that the\nholder cannot influence the referendum result, thanks to time-locking or ",(0,o.kt)("strong",{parentName:"p"},"voluntary locking")," (see\nbelow)."),(0,o.kt)("h3",{id:"voluntary-locking"},"Voluntary Locking"),(0,o.kt)("admonition",{title:"Voluntary Locking",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"For more information about voluntary locking or conviction voting see\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#voluntary-locking"},"Polkadot OpenGov"),".")),(0,o.kt)("h3",{id:"delegations"},"Delegations"),(0,o.kt)("p",null,"In Polkadot you can\n",(0,o.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-democracy#delegate-a-vote"},"delegate your voting power")," to\nanother account you trust if you are not willing to stay up-to-date with all referenda."),(0,o.kt)("p",null,"You can also use a ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-proxies#governance-proxy"},"governance proxy")," to vote on behalf of\nyour stash account. The proxy can be yours, or you can authorize a third-party governance proxy to\nvote with your stash. Learn more from the ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-proxies"},"dedicated page on Proxy Accounts"),"."),(0,o.kt)("h2",{id:"council"},"Council"),(0,o.kt)("p",null,'To represent passive stakeholders, Polkadot\nintroduces the idea of a "council". The council is an on-chain entity comprising several actors,\neach represented as an on-chain account. On\nPolkadot, the council currently consists of\n13 members.'),(0,o.kt)("p",null,"Along with ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn/learn-treasury"},"controlling the treasury"),", the council is called upon primarily for\nthree tasks of governance:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Proposing sensible referenda"),(0,o.kt)("li",{parentName:"ul"},"Cancelling uncontroversially dangerous or malicious referenda"),(0,o.kt)("li",{parentName:"ul"},"Electing the ",(0,o.kt)("a",{parentName:"li",href:"#technical-committee"},"Technical Committee"),".")),(0,o.kt)("p",null,"For a referendum to be proposed by the council, a strict majority of members must be in favor, with\nno member exercising a veto. Vetoes may be exercised only once by a member for any single proposal.\nIf the proposal is resubmitted after a cool-down period, they may not veto it a second time."),(0,o.kt)("p",null,"Council motion that pass with a 3/5 (60%) super-majority - but without reaching unanimous support -\nwill move to a public referendum under a neutral, majority-carries voting scheme. In the case that\nall members of the council that voted are in favor of a motion, the vote is considered unanimous and\nbecomes a referendum with ",(0,o.kt)("a",{parentName:"p",href:"#adaptive-quorum-biasing"},"negative turnout bias"),"."),(0,o.kt)("admonition",{title:"Explainer video on the Council",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"For more information, check out our\n",(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=837Vv3gdRzI"},"video explainer on Council"))),(0,o.kt)("h3",{id:"prime-members"},"Prime Members"),(0,o.kt)("p",null,"The council, being an instantiation of\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/collective"},"Substrate's Collective pallet"),",\nimplements what's called a ",(0,o.kt)("em",{parentName:"p"},"prime member")," whose vote acts as the default for other members that fail\nto vote before the timeout."),(0,o.kt)("p",null,"The prime member is chosen based on a ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Borda_count"},"Borda count"),"."),(0,o.kt)("p",null,'The purpose of having a prime council member is to ensure a quorum, even when several members\nabstain from a vote. Council members might be tempted to vote a "soft rejection" or a "soft\napproval" by not voting and letting the others vote. The existence of a prime member forces\ncouncilors to be explicit in their votes or have their vote counted for whatever is voted on by the\nprime.'),(0,o.kt)("h2",{id:"technical-committee"},"Technical Committee"),(0,o.kt)("p",null,"The Technical Committee(TC) was introduced in the\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/kusama-rollout-and-governance/"},"Kusama rollout and governance post")," as one\nof the three chambers of Kusama governance (along with the Council and the Referendum chamber). The\nTC is composed of the teams that have successfully implemented or specified either a\nPolkadot runtime or Polkadot Host. Teams are\nadded or removed from the TC via a simple majority vote of the ",(0,o.kt)("a",{parentName:"p",href:"#council"},"Council"),"."),(0,o.kt)("p",null,'The TC aims to safeguard against malicious referenda, implement bug fixes, reverse faulty runtime\nupdates, or add new but battle-tested features. The TC can fast-track proposals using the Democracy\npallet and is the only origin that can trigger the fast-tracking functionality. We can think of the\nTC as a "unique origin" that cannot generate proposals but fast-track existing ones.'),(0,o.kt)("p",null,"Fast-tracked referenda are the only referenda that can be active alongside another active\nreferendum. Thus, with fast-tracked referenda, it is possible to have two active referendums\nsimultaneously. Voting on one does not prevent a user from voting on the other."),(0,o.kt)("h2",{id:"frequently-asked-questions"},"Frequently Asked Questions"),(0,o.kt)("h3",{id:"how-to-be-a-council-member"},"How to be a council member?"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"approval-vote",src:a(93395).Z,width:"850",height:"340"})),(0,o.kt)("p",null,"All stakeholders can signal their approval of any of the registered candidates."),(0,o.kt)("p",null,"Council elections are handled by the same ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-phragmen"},"Phragm\xe9n election")," process that\nselects validators from the available pool based on nominations. However, token holders' votes for\ncouncilors are isolated from any nominations they may have on validators. Council terms last for one\nweek."),(0,o.kt)("p",null,"At the end of each term, ",(0,o.kt)("a",{parentName:"p",href:"../learn-phragmen#algorithm"},"Phragm\xe9n election algorithm")," runs and the\nresult will choose the new councilors based on the vote configurations of all voters. The election\nalso chooses a set number of runners-up, which is currently\n20 that will remain in the queue with their votes\nintact."),(0,o.kt)("p",null,'As opposed to a "first-past-the-post" electoral system, where voters can only vote for a single\ncandidate from a list, a Phragm\xe9n election is a more expressive way to include each voter\u2019s views.\nToken holders can treat it as a way to support as many candidates as they want. The election\nalgorithm will find a fair subset of the candidates that most closely matches the expressed\nindications of the electorate as a whole.'),(0,o.kt)("p",null,"Let's take a look at the example below."),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"center"},"Round 1"),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Token Holders")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Candidates")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"A"),(0,o.kt)("td",{parentName:"tr",align:"center"},"B"),(0,o.kt)("td",{parentName:"tr",align:"center"},"C"),(0,o.kt)("td",{parentName:"tr",align:"center"},"D"),(0,o.kt)("td",{parentName:"tr",align:"center"},"E")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Peter"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Alice"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Bob"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Kelvin"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Total")),(0,o.kt)("td",{parentName:"tr",align:"center"},"2"),(0,o.kt)("td",{parentName:"tr",align:"center"},"1"),(0,o.kt)("td",{parentName:"tr",align:"center"},"3"),(0,o.kt)("td",{parentName:"tr",align:"center"},"2"),(0,o.kt)("td",{parentName:"tr",align:"center"},"2")))),(0,o.kt)("p",null,"The above example shows that candidate C wins the election in round 1, while candidates A, B, D & E\nkeep remaining on the candidates' list for the next round."),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:"center"},"Round 2"),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}),(0,o.kt)("th",{parentName:"tr",align:"center"}))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Token Holders")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Candidates")),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"},"A"),(0,o.kt)("td",{parentName:"tr",align:"center"},"B"),(0,o.kt)("td",{parentName:"tr",align:"center"},"D"),(0,o.kt)("td",{parentName:"tr",align:"center"},"E")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Peter"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Alice"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Bob"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},"Kelvin"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"},"X"),(0,o.kt)("td",{parentName:"tr",align:"center"}),(0,o.kt)("td",{parentName:"tr",align:"center"})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:"center"},(0,o.kt)("strong",{parentName:"td"},"Total")),(0,o.kt)("td",{parentName:"tr",align:"center"},"4"),(0,o.kt)("td",{parentName:"tr",align:"center"},"4"),(0,o.kt)("td",{parentName:"tr",align:"center"},"1"),(0,o.kt)("td",{parentName:"tr",align:"center"},"1")))),(0,o.kt)("p",null,"The top-N (say 4 in this example) runners-up can remain, and their votes persist until the next\nelection. After round 2, even though candidates A & B get the same number of votes in this round,\ncandidate A gets elected because after adding the older unused approvals, it is higher than B."),(0,o.kt)("h3",{id:"how-can-i-appeal-to-the-council-to-enact-a-change-on-my-behalf"},"How can I appeal to the council to enact a change on my behalf?"),(0,o.kt)("p",null,"In some circumstances, you may want to appeal to the on-chain council to enact a change on your\nbehalf. One example of this circumstance is the case of lost or locked funds when the funds were\nlost due to a human interface error (such as inputting an address for another network). Another\nexample is if you participated in the 2017 Polkadot ICO with a multi-sig address which now does not\nlet you sign a message easily. When these circumstances can be proven beyond a reasonable doubt to\nbe an error, the council ",(0,o.kt)("em",{parentName:"p"},"may")," consider a governance motion to correct it."),(0,o.kt)("p",null,"The first step to appeal to the council is to contact the councilors. There is no singular place\nwhere you are guaranteed to grab every councilor\u2019s ear with your message. However, there are a\nhandful of good places to start where you can get the attention of some of them. The\n",(0,o.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction"),"\n"," matrix\nroom is one such place. After creating an account and joining this room, you can post a\nwell-thought-through message here that lays down your case and justifies why you think the council\nshould consider enacting a change to the protocol on your behalf."),(0,o.kt)("p",null,"At some point, you will likely need a place for a longer-form discussion. For this, making a post on\n",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/"},"Polkassembly")," is the recommended place to do so. When you write\na post on Polkassembly, present all the evidence for your circumstances and state clearly what kind\nof change you would suggest to the councilors to enact."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Remember, the councilors do not need to make the change, it is your responsibility to make a strong\ncase for why the change should be made.")),(0,o.kt)("h2",{id:"gov1-runtime-upgrade-monitoring"},"Gov1 Runtime Upgrade Monitoring"),(0,o.kt)("p",null,"Monitor the chain for:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Started)")," events and log ",(0,o.kt)("inlineCode",{parentName:"li"},"index")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"blockNumber"),". This event indicates that a\nreferendum has started (although it does not mean it is a runtime upgrade). Get the referendum\ninfo","*","; it should have a status of ",(0,o.kt)("inlineCode",{parentName:"li"},"Ongoing"),". Find the ending block number (",(0,o.kt)("inlineCode",{parentName:"li"},"end"),") and the\nenactment ",(0,o.kt)("inlineCode",{parentName:"li"},"delay")," (delay). If the referendum passes, it will execute on block number\n",(0,o.kt)("inlineCode",{parentName:"li"},"end + delay"),"."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Passed)"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"democracy(NotPassed)"),", or, ",(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Cancelled)")," events citing the index.\nIf ",(0,o.kt)("inlineCode",{parentName:"li"},"Passed"),", you need to look at the ",(0,o.kt)("inlineCode",{parentName:"li"},"scheduler(Scheduled)")," event in the same block for the\nenactment block."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(PreimageNoted)")," events with the same hash as the ",(0,o.kt)("inlineCode",{parentName:"li"},"ReferendumInfoOf(index)")," item. This\nmay be up to the last block before execution, but it will not work if this is missing."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"democracy(Executed)")," events for actual execution. In the case of a runtime upgrade, there will\nalso be a ",(0,o.kt)("inlineCode",{parentName:"li"},"system(CodeUpdated)")," event.")),(0,o.kt)("p",null,"You can also monitor ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/"},"Polkassembly")," for discussions on on-chain\nproposals and referenda."),(0,o.kt)("p",null,"*"," E.g. via ",(0,o.kt)("inlineCode",{parentName:"p"},"pallets/democracy/storage/ReferendumInfoOf?key1=index&at=blockNumber")," on Sidecar."),(0,o.kt)("h2",{id:"resources"},"Resources"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot/wiki/Governance"},"Initial Governance Description")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/democracy/src"},"Democracy Pallet")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=VsZuDJMmVPY&feature=youtu.be&t=24734"},"Governance Demo")," - Dr.\nGavin Wood presents the initial governance structure for Polkadot. (Video)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://www.crowdcast.io/e/governance-on-polkadot--"},"Governance on Polkadot")," - A webinar\nexplaining how governance works in Polkadot and Kusama.")))}h.isMDXComponent=!0},74562:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/gov1-overview-515a8f55923136c0b6e6bd23bea3d836.png"},11173:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/gov1-timeline-69424fec137182a898f00c29a90fbdb1.png"},72895:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/adaptive-quorum-biasing-18c2e70b6b9d2c3abf563219b11974dc.png"},93395:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/approval-vote-d0622e1c0a9bc7c50ab9f23761488dbe.png"}}]); \ No newline at end of file diff --git a/assets/js/9f804621.28ed4012.js b/assets/js/9f804621.28ed4012.js new file mode 100644 index 000000000000..c210e499c6cc --- /dev/null +++ b/assets/js/9f804621.28ed4012.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[4143],{35703:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var a=n(67294);const o=function(e){var t,n=e.message,o=(0,a.useState)(!0),r=o[0],s=o[1];return a.createElement(a.Fragment,null,r&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(74165),o=n(15861),r=n(67294),s=n(87152),i=n(9712),l=n(67425);function c(e,t,n){return u.apply(this,arguments)}function u(){return(u=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var r,l,c,u,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new s.U(r),e.next=21,i.G.create({provider:c});case 21:u=e.sent,(d=n.split(".")).forEach((function(e){e in u&&(u=u[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=u.toString(),e.abrupt("break",35);case 29:return e.next=31,u();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+n);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,n,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,n,a);break;case"precise":(0,l.Precise)(e,n,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,n);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,n=e.path,s=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,u=(0,r.useState)(""),p=u[0],h=u[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(s.toString(),l,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,n,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var l=void 0;if(s===t||s===o)l=3;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(l)+" "+r[s].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===o)i=1;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},52991:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(67294),o=n(86010),r=n(53438),s=n(39960),i=n(13919),l=n(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){var t=e.href,n=e.children;return a.createElement(s.Z,{href:t,className:(0,o.Z)("card padding--lg",c.cardContainer)},n)}function d(e){var t=e.href,n=e.icon,r=e.title,s=e.description;return a.createElement(u,{href:t},a.createElement("h2",{className:(0,o.Z)("text--truncate",c.cardTitle),title:r},n," ",r),s&&a.createElement("p",{className:(0,o.Z)("text--truncate",c.cardDescription),title:s},s))}function p(e){var t,n=e.item,o=(0,r.Wl)(n);return o?a.createElement(d,{href:o,icon:"\ud83d\uddc3\ufe0f",title:n.label,description:null!=(t=n.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:n.items.length})}):null}function h(e){var t,n,o=e.item,s=(0,i.Z)(o.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,r.xz)(null!=(t=o.docId)?t:void 0);return a.createElement(d,{href:o.href,icon:s,title:o.label,description:null!=(n=o.description)?n:null==l?void 0:l.description})}function k(e){var t=e.item;switch(t.type){case"link":return a.createElement(h,{item:t});case"category":return a.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function m(e){var t=e.className,n=(0,r.jA)();return a.createElement(f,{items:n.items,className:t})}function f(e){var t=e.items,n=e.className;if(!t)return a.createElement(m,e);var s=(0,r.MN)(t);return a.createElement("section",{className:(0,o.Z)("row",n)},s.map((function(e,t){return a.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},a.createElement(k,{item:e}))})))}},85162:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(67294),o=n(86010);const r={tabItem:"tabItem_Ymn6"};function s(e){var t=e.children,n=e.hidden,s=e.className;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,s),hidden:n},t)}},74866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var a=n(87462),o=n(67294),r=n(86010),s=n(12466),i=n(16550),l=n(91980),c=n(67392),u=n(50012);function d(e){return function(e){var t,n;return null!=(t=null==(n=o.Children.map(e,(function(e){if(!e||(0,o.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:n.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,n=e.children;return(0,o.useMemo)((function(){var e=null!=t?t:d(n);return function(e){var t=(0,c.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,n])}function h(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function k(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId,r=(0,i.k6)(),s=function(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=a?a:null}({queryString:n,groupId:a});return[(0,l._X)(s),(0,o.useCallback)((function(e){if(s){var t=new URLSearchParams(r.location.search);t.set(s,e),r.replace(Object.assign({},r.location,{search:t.toString()}))}}),[s,r])]}function m(e){var t,n,a,r,s=e.defaultValue,i=e.queryString,l=void 0!==i&&i,c=e.groupId,d=p(e),m=(0,o.useState)((function(){return function(e){var t,n=e.defaultValue,a=e.tabValues;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:a}))throw new Error('Docusaurus error: The has a defaultValue "'+n+'" but none of its children has the corresponding value. Available values are: '+a.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return n}var o=null!=(t=a.find((function(e){return e.default})))?t:a[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:s,tabValues:d})})),f=m[0],b=m[1],g=k({queryString:l,groupId:c}),w=g[0],y=g[1],v=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:c}.groupId),n=(0,u.Nk)(t),a=n[0],r=n[1],[a,(0,o.useCallback)((function(e){t&&r.set(e)}),[t,r])]),N=v[0],S=v[1],x=function(){var e=null!=w?w:N;return h({value:e,tabValues:d})?e:null}();return(0,o.useLayoutEffect)((function(){x&&b(x)}),[x]),{selectedValue:f,selectValue:(0,o.useCallback)((function(e){if(!h({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);b(e),y(e),S(e)}),[y,S,d]),tabValues:d}}var f=n(72389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){var t=e.className,n=e.block,i=e.selectedValue,l=e.selectValue,c=e.tabValues,u=[],d=(0,s.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,n=u.indexOf(t),a=c[n].value;a!==i&&(d(t),l(a))},h=function(e){var t,n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var a,o=u.indexOf(e.currentTarget)+1;n=null!=(a=u[o])?a:u[0];break;case"ArrowLeft":var r,s=u.indexOf(e.currentTarget)-1;n=null!=(r=u[s])?r:u[u.length-1]}null==(t=n)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},c.map((function(e){var t=e.value,n=e.label,s=e.attributes;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:function(e){return u.push(e)},onKeyDown:h,onClick:p},s,{className:(0,r.Z)("tabs__item",b.tabItem,null==s?void 0:s.className,{"tabs__item--active":i===t})}),null!=n?n:t)})))}function w(e){var t=e.lazy,n=e.children,a=e.selectedValue,r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){var s=r.find((function(e){return e.props.value===a}));return s?(0,o.cloneElement)(s,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map((function(e,t){return(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a})})))}function y(e){var t=m(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",b.tabList)},o.createElement(g,(0,a.Z)({},e,t)),o.createElement(w,(0,a.Z)({},e,t)))}function v(e){var t=(0,f.Z)();return o.createElement(y,(0,a.Z)({key:String(t)},e))}},35426:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>u,default:()=>f,frontMatter:()=>c,metadata:()=>d,toc:()=>h});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),s=(n(47940),n(74866),n(85162),n(52991)),i=n(35703),l=["components"],c={id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Account Guides",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},u=void 0,d={unversionedId:"learn/learn-guides-accounts",id:"learn/learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",description:"Polkadot-JS Guides about Accounts",source:"@site/../docs/learn/learn-guides-accounts.md",sourceDirName:"learn",slug:"/learn-guides-accounts",permalink:"/docs/learn-guides-accounts",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Account Guides",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},sidebar:"docs",previous:{title:"Polkadot-JS Guides",permalink:"/docs/learn-polkadot-js-guides"},next:{title:"Multisig Guides",permalink:"/docs/learn-guides-accounts-multisig"}},p={},h=[{value:"Account Address Format",id:"account-address-format",level:2},{value:"Polkadot-JS Browser Extension",id:"polkadot-js-browser-extension",level:2},{value:"Account Backup using the Polkadot-JS Browser Extension",id:"account-backup-using-the-polkadot-js-browser-extension",level:3},{value:"Reset Password using the Polkadot-JS Browser Extension",id:"reset-password-using-the-polkadot-js-browser-extension",level:3},{value:"Restore Account on the Polkadot-JS Browser Extension",id:"restore-account-on-the-polkadot-js-browser-extension",level:3},{value:"Polkadot-JS UI",id:"polkadot-js-ui",level:2},{value:"Account Backup using the Polkadot-JS UI",id:"account-backup-using-the-polkadot-js-ui",level:3},{value:"Reset password using the Polkadot-JS UI",id:"reset-password-using-the-polkadot-js-ui",level:3},{value:"Restore Account on the Polkadot-JS UI",id:"restore-account-on-the-polkadot-js-ui",level:3},{value:"Unlocking Locks",id:"unlocking-locks",level:3},{value:"Query Account Data in Polkadot-JS",id:"query-account-data-in-polkadot-js",level:2},{value:"Vanity Generator",id:"vanity-generator",level:2},{value:"Encryption Enhancement",id:"encryption-enhancement",level:2}],k={toc:h},m="wrapper";function f(e){var t=e.components,c=(0,o.Z)(e,l);return(0,r.kt)(m,(0,a.Z)({},k,c,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)(s.Z,{mdxType:"DocCardList"}),(0,r.kt)("h2",{id:"account-address-format"},"Account Address Format"),(0,r.kt)("p",null,"An account created for Polkadot can also be\nused on multiple chains in the Polkadot\necosystem. More specifically, the account of a chain that uses the ",(0,r.kt)("inlineCode",{parentName:"p"},"*25519")," account address format\n(the latest list can be accessed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json"},"ss58 registry repository"),"\nis cross-compatible with all the chains that use the similar format. To switch between the accounts\non different chains, you can follow the guidelines in\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000103707-can-i-use-the-same-account-on-polkadot-kusama-and-parachains-"},"this support article"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/tools/format_transform"},"Subscan has a tool")," you can use to convert your\naddress between the different chain formats."),(0,r.kt)("admonition",{title:"Using the same account on multiple chains - Pros and Cons",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The address format differs from chain to chain, but that difference is only visual. The same private\nkey can be used to sign transactions on behalf of the respective accounts on multiple chains. Using\na single account on multiple chains is convenient, as you do not have to deal with multiple mnemonic\nphrases or private keys. But, if your account gets compromised on one chain, the attacker can gain\nfull access to the accounts on all other chains. This also has implications for the account holder's\nprivacy, as knowing the identity of an account on one chain can expose the account holder's identity\non all the chains. In the Accounts tab, the Polkadot-JS UI displays a warning message next to each\nAccount you are using on multiple chains and recommends using different Accounts on different chains\n(see below)."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("img",{alt:"warning multiple chains",src:n(2245).Z,width:"1103",height:"343"}))),(0,r.kt)("p",null,'On Polkadot-JS Extension, you can copy your address by clicking the account\'s icon while the desired\nchain format is active. E.g. selecting "Substrate" as the format will change your address, and\nclicking the colorful icon of your account will copy it in that format. While in\nPolkadot mode, that address format will be\ncopied, and so on.'),(0,r.kt)("h2",{id:"polkadot-js-browser-extension"},"Polkadot-JS Browser Extension"),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/DNU0p5G0Gqc/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc"},"Polkadot-JS Browser Extension Tutorial")))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using the Polkadot Extension, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000098878-how-to-create-a-dot-account"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("p",null,"The Polkadot-JS Browser Extension (the Polkadot Extension) provides a reasonable balance of security\nand usability. It provides a separate local mechanism to generate your address and interact with\nPolkadot."),(0,r.kt)("p",null,'This method involves installing the Polkadot Extension and using it as a \u201cvirtual vault," separate\nfrom your browser, to store your private keys. It also allows the signing of transactions and\nsimilar functionality.'),(0,r.kt)("p",null,"It is still running on the same computer you use to connect to the internet and thus is less secure\nthan using Parity Signer or other air-gapped approaches."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-browser-extension"},"Account Backup using the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account."),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-browser-extension"},"Reset Password using the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc&t=280s"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to\nchange the password for an account that has been created on the Polkadot-JS browser extension (i.e.\nan injected account).")),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Before following the instructions below, make sure you have your mnemonic phrase stored in a safe\nplace accessible to you.")),(0,r.kt)("p",null,"Let's say you created ",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," protected by password ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),". To reset the password of your\n",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," using the browser extension, you must follow the following steps:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Go to ",(0,r.kt)("inlineCode",{parentName:"li"},"ACCOUNT 1"),' on the browser extension and click "Forget account". This action will delete the\naccess to your account. Note that your tokens are still in your account on the\nPolkadot blockchain network.'),(0,r.kt)("li",{parentName:"ul"},'On the browser extension click the "+" button in the top right corner and select the option\n"Import account from pre-existing seed". After entering the mnemonic phrase, you can choose a new\npassword, ',(0,r.kt)("inlineCode",{parentName:"li"},"PSW 2"),".")),(0,r.kt)("admonition",{title:"JSON files do not allow changing account passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},'If you add the account to the extension using the option "Restore account from backup JSON file",\nthis will allow you to restore access to your account using a JSON file protected by the password\n',(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),", but does not let you set a new password. Thus, ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1")," will become the account password by\ndefault.")),(0,r.kt)("admonition",{title:"Accounts on Cold wallets do not need passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For hardware wallets such as ",(0,r.kt)("a",{parentName:"p",href:"https://www.ledger.com/"},"Ledger"),", you may have to set a PIN for\naccessing the accounts on the device, but you do not need to set a password for every individual\naccount. When you need to make transactions with your account, you are required to sign using your\nLedger device. Also, Ledger wallets let you generate multiple accounts for multiple blockchain\nnetworks without setting different passwords to access such accounts.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-browser-extension"},"Restore Account on the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/9ohp8k4Hz8c"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169952-how-to-restore-your-account-in-the-polkadot-extension"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI.")),(0,r.kt)("h2",{id:"polkadot-js-ui"},"Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using Polkadot-JS UI, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180529"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"If you use this method to create your account and clear your cookies in your browser, your account\nwill be lost forever if you do not ",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"back it up"),". Make sure\nyou store your seed phrase in a safe place or download the account's JSON file if using the\nPolkadot{.js} browser extension. Learn more about account backup and restoration\n",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"here"),".")),(0,r.kt)("p",null,"Local in-browser account storage is disabled by default on the Polkadot-JS UI. To create an account\nusing the Polkadot-JS UI, navigate to settings > account options and click on allow local in-browser\naccount storage in the drop-down menu. Using the Polkadot-JS user interface without a browser\nextension is ",(0,r.kt)("strong",{parentName:"p"},"not recommended"),". It is the least secure way of generating an account. It should\nonly be used if all other methods are not feasible."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-ui"},"Account Backup using the Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account.")),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-ui"},"Reset password using the Polkadot-JS UI"),(0,r.kt)("p",null,'To reset the password of an account created with Polkadot-JS Apps UI, you need to go to the\n"Accounts" tab, click the icon with three vertical dots on your account and select "Change this\naccount\'s password".'),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc?t=261"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to change the\npassword for an account created on the Polkadot-JS UI (i.e. a non-injected account)."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"If you create an account first using Polkadot-JS Apps UI and then add it to the browser extension,\nyou need to follow the\n",(0,r.kt)("a",{parentName:"p",href:"#reset-password-using-the-browser-extension"},"guidelines for the browser extension")," to change the\npassword of such an account.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-ui"},"Restore Account on the Polkadot-JS UI"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/cBsZqFpBANY"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180110-how-to-restore-your-account-in-polkadot-js-ui"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI."),(0,r.kt)("h3",{id:"unlocking-locks"},"Unlocking Locks"),(0,r.kt)("admonition",{title:"Locks do not stack!",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The biggest lock decides the total amount of locked funds. See\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/LHgY7ds_bZ0"},(0,r.kt)("strong",{parentName:"a"},"this walk-through video tutorial"))," that will guide you in the\nprocess of unlocking funds in the example above.")),(0,r.kt)("p",null,"In the example, the locked balance is 0.55 KSM because the biggest lock is on democracy and is 0.55\nKSM. As soon as the democracy lock is removed the next biggest lock is on staking 0.5 KSM (bonded\n0.4 KSM + redeemable 0.1 KSM). This means that the locked balance will be 0.5 KSM, and 0.05 KSM will\nbe added to the transferrable balance. After redeeming the unbonded 0.1 KSM, the locked balance will\nbe 0.4 KSM, and an additional 0.1 KSM will be added to the transferrable balance. Now the biggest\nlock is still the bonded one. This means that even if we remove the vested lock, the locked balance\nwill still be 0.4 KSM and no tokens will be added to the transferrable balance. To free those bonded\ntokens we will need to unbond them and wait for the unbonding period to make them redeemable. If we\nremove the proxy the reserved funds will be automatically added to the transferrable balance."),(0,r.kt)("h2",{id:"query-account-data-in-polkadot-js"},"Query Account Data in Polkadot-JS"),(0,r.kt)("p",null,"In the Polkadot-JS UI, you can also query account data under\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Developer > Chain state"),". Under ",(0,r.kt)("inlineCode",{parentName:"p"},"selected state query"),"\nchoose the system pallet followed by ",(0,r.kt)("inlineCode",{parentName:"p"},"account(AccountId32): FrameSystemAccountInfo"),", under ",(0,r.kt)("inlineCode",{parentName:"p"},"Option"),'\nchoose an account, and then click on the "+" button on the right.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"account_balance_types",src:n(9853).Z,width:"1636",height:"343"})),(0,r.kt)("p",null,"Account information include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"nonce"),", the number of transactions the account sent."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"consumers"),", the number of other modules that currently depend on this account's existence. The\naccount cannot be reaped until this is zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"providers"),", the number of other modules that allow this account to exist. The account may not be\nreaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"sufficients")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sufficients"),", the number of modules that allow this account to exist for their own purposes. The\naccount may not be reaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"providers")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"data"),", the additional data that belongs to this account. Used to store the balance(s) in a lot of\nchains.")),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/system/src/lib.rs#LL767C1-L781C24"},"substrate code base"),"."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"AccountData")," structure defines the balance types in Substrate. The three types of balances\ninclude:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"free"),", is the balance that is free but not necessarily transferrable."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"reserved"),", is the balance that is not free, and it is put on hold for on-chain activity such as\ndeposits for multi-signature calls, setting up proxies and identities, and other actions that hold\nstate on the network."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"frozen"),", is the amount that is free to use for on-chain activity but is locked in staking,\ngovernance, or vesting.")),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"usable")," or transferrable balance of the account is currently calculated using the formula\nbelow:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"transferable = free - max(frozen - reserved, ED)\n")),(0,r.kt)("p",null,"Where ED is the existential deposit. The ",(0,r.kt)("strong",{parentName:"p"},"total")," balance of the account is the sum of ",(0,r.kt)("inlineCode",{parentName:"p"},"free")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"reserved")," funds. The ",(0,r.kt)("inlineCode",{parentName:"p"},"flags")," describe extra information about the account."),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/balances/src/types.rs#LL95-L114"},"balances pallet in the Substrate code base"),"."),(0,r.kt)("h2",{id:"vanity-generator"},"Vanity Generator"),(0,r.kt)("p",null,"The vanity generator is a tool on ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts/vanity"},"Polkadot-JS UI"),"\nthat lets you generate addresses that contain a specific substring. For the tutorial on how to\ncreate an account using Vanity Generator, visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000171416"},"this support article"),"."),(0,r.kt)("h2",{id:"encryption-enhancement"},"Encryption Enhancement"),(0,r.kt)("p",null,"Some newly generated ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," account files cannot be imported (restored) into older wallet software.\nThis is due to an enhanced encryption method, noticeable in a slight delay when\nencrypting/decrypting your wallet. If you cannot load a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," file, please use the latest version\nof the wallet software. If you cannot load it, ensure that the wallet software uses the newest\nversion of the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/api/"},"Polkadot API"),"."))}f.isMDXComponent=!0},9853:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/AccountData-struct-118d0bf533806084460cba05bef62b9c.png"},2245:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/warning-multichain-account-0719ff59691f3ff48562d92ef2295e84.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/9f804621.4e0cf011.js b/assets/js/9f804621.4e0cf011.js deleted file mode 100644 index 176dfad4bff2..000000000000 --- a/assets/js/9f804621.4e0cf011.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[4143],{47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(74165),o=n(15861),r=n(67294),s=n(87152),i=n(9712),l=n(67425);function c(e,t,n){return u.apply(this,arguments)}function u(){return(u=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var r,l,c,u,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new s.U(r),e.next=21,i.G.create({provider:c});case 21:u=e.sent,(d=n.split(".")).forEach((function(e){e in u&&(u=u[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=u.toString(),e.abrupt("break",35);case 29:return e.next=31,u();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+n);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,n,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,n,a);break;case"precise":(0,l.Precise)(e,n,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,n);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,n=e.path,s=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,u=(0,r.useState)(""),p=u[0],h=u[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(s.toString(),l,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,n,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var l=void 0;if(s===t||s===o)l=3;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(l)+" "+r[s].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===o)i=1;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},52991:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(67294),o=n(86010),r=n(53438),s=n(39960),i=n(13919),l=n(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){var t=e.href,n=e.children;return a.createElement(s.Z,{href:t,className:(0,o.Z)("card padding--lg",c.cardContainer)},n)}function d(e){var t=e.href,n=e.icon,r=e.title,s=e.description;return a.createElement(u,{href:t},a.createElement("h2",{className:(0,o.Z)("text--truncate",c.cardTitle),title:r},n," ",r),s&&a.createElement("p",{className:(0,o.Z)("text--truncate",c.cardDescription),title:s},s))}function p(e){var t,n=e.item,o=(0,r.Wl)(n);return o?a.createElement(d,{href:o,icon:"\ud83d\uddc3\ufe0f",title:n.label,description:null!=(t=n.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:n.items.length})}):null}function h(e){var t,n,o=e.item,s=(0,i.Z)(o.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,r.xz)(null!=(t=o.docId)?t:void 0);return a.createElement(d,{href:o.href,icon:s,title:o.label,description:null!=(n=o.description)?n:null==l?void 0:l.description})}function k(e){var t=e.item;switch(t.type){case"link":return a.createElement(h,{item:t});case"category":return a.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function m(e){var t=e.className,n=(0,r.jA)();return a.createElement(f,{items:n.items,className:t})}function f(e){var t=e.items,n=e.className;if(!t)return a.createElement(m,e);var s=(0,r.MN)(t);return a.createElement("section",{className:(0,o.Z)("row",n)},s.map((function(e,t){return a.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},a.createElement(k,{item:e}))})))}},85162:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(67294),o=n(86010);const r={tabItem:"tabItem_Ymn6"};function s(e){var t=e.children,n=e.hidden,s=e.className;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,s),hidden:n},t)}},74866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var a=n(87462),o=n(67294),r=n(86010),s=n(12466),i=n(16550),l=n(91980),c=n(67392),u=n(50012);function d(e){return function(e){var t,n;return null!=(t=null==(n=o.Children.map(e,(function(e){if(!e||(0,o.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:n.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,n=e.children;return(0,o.useMemo)((function(){var e=null!=t?t:d(n);return function(e){var t=(0,c.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,n])}function h(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function k(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId,r=(0,i.k6)(),s=function(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=a?a:null}({queryString:n,groupId:a});return[(0,l._X)(s),(0,o.useCallback)((function(e){if(s){var t=new URLSearchParams(r.location.search);t.set(s,e),r.replace(Object.assign({},r.location,{search:t.toString()}))}}),[s,r])]}function m(e){var t,n,a,r,s=e.defaultValue,i=e.queryString,l=void 0!==i&&i,c=e.groupId,d=p(e),m=(0,o.useState)((function(){return function(e){var t,n=e.defaultValue,a=e.tabValues;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:a}))throw new Error('Docusaurus error: The has a defaultValue "'+n+'" but none of its children has the corresponding value. Available values are: '+a.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return n}var o=null!=(t=a.find((function(e){return e.default})))?t:a[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:s,tabValues:d})})),f=m[0],b=m[1],g=k({queryString:l,groupId:c}),w=g[0],y=g[1],v=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:c}.groupId),n=(0,u.Nk)(t),a=n[0],r=n[1],[a,(0,o.useCallback)((function(e){t&&r.set(e)}),[t,r])]),N=v[0],S=v[1],x=function(){var e=null!=w?w:N;return h({value:e,tabValues:d})?e:null}();return(0,o.useLayoutEffect)((function(){x&&b(x)}),[x]),{selectedValue:f,selectValue:(0,o.useCallback)((function(e){if(!h({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);b(e),y(e),S(e)}),[y,S,d]),tabValues:d}}var f=n(72389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){var t=e.className,n=e.block,i=e.selectedValue,l=e.selectValue,c=e.tabValues,u=[],d=(0,s.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,n=u.indexOf(t),a=c[n].value;a!==i&&(d(t),l(a))},h=function(e){var t,n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var a,o=u.indexOf(e.currentTarget)+1;n=null!=(a=u[o])?a:u[0];break;case"ArrowLeft":var r,s=u.indexOf(e.currentTarget)-1;n=null!=(r=u[s])?r:u[u.length-1]}null==(t=n)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},c.map((function(e){var t=e.value,n=e.label,s=e.attributes;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:function(e){return u.push(e)},onKeyDown:h,onClick:p},s,{className:(0,r.Z)("tabs__item",b.tabItem,null==s?void 0:s.className,{"tabs__item--active":i===t})}),null!=n?n:t)})))}function w(e){var t=e.lazy,n=e.children,a=e.selectedValue,r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){var s=r.find((function(e){return e.props.value===a}));return s?(0,o.cloneElement)(s,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map((function(e,t){return(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a})})))}function y(e){var t=m(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",b.tabList)},o.createElement(g,(0,a.Z)({},e,t)),o.createElement(w,(0,a.Z)({},e,t)))}function v(e){var t=(0,f.Z)();return o.createElement(y,(0,a.Z)({key:String(t)},e))}},35426:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>u,toc:()=>p});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),s=(n(47940),n(74866),n(85162),n(52991)),i=["components"],l={id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Account Guides",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},c=void 0,u={unversionedId:"learn/learn-guides-accounts",id:"learn/learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",description:"Polkadot-JS Guides about Accounts",source:"@site/../docs/learn/learn-guides-accounts.md",sourceDirName:"learn",slug:"/learn-guides-accounts",permalink:"/docs/learn-guides-accounts",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Account Guides",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},sidebar:"docs",previous:{title:"Polkadot-JS Guides",permalink:"/docs/learn-polkadot-js-guides"},next:{title:"Multisig Guides",permalink:"/docs/learn-guides-accounts-multisig"}},d={},p=[{value:"Account Address Format",id:"account-address-format",level:2},{value:"Polkadot-JS Browser Extension",id:"polkadot-js-browser-extension",level:2},{value:"Account Backup using the Polkadot-JS Browser Extension",id:"account-backup-using-the-polkadot-js-browser-extension",level:3},{value:"Reset Password using the Polkadot-JS Browser Extension",id:"reset-password-using-the-polkadot-js-browser-extension",level:3},{value:"Restore Account on the Polkadot-JS Browser Extension",id:"restore-account-on-the-polkadot-js-browser-extension",level:3},{value:"Polkadot-JS UI",id:"polkadot-js-ui",level:2},{value:"Account Backup using the Polkadot-JS UI",id:"account-backup-using-the-polkadot-js-ui",level:3},{value:"Reset password using the Polkadot-JS UI",id:"reset-password-using-the-polkadot-js-ui",level:3},{value:"Restore Account on the Polkadot-JS UI",id:"restore-account-on-the-polkadot-js-ui",level:3},{value:"Unlocking Locks",id:"unlocking-locks",level:3},{value:"Query Account Data in Polkadot-JS",id:"query-account-data-in-polkadot-js",level:2},{value:"Vanity Generator",id:"vanity-generator",level:2},{value:"Encryption Enhancement",id:"encryption-enhancement",level:2}],h={toc:p},k="wrapper";function m(e){var t=e.components,l=(0,o.Z)(e,i);return(0,r.kt)(k,(0,a.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,r.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,r.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,r.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,r.kt)(s.Z,{mdxType:"DocCardList"}),(0,r.kt)("h2",{id:"account-address-format"},"Account Address Format"),(0,r.kt)("p",null,"An account created for Polkadot can also be\nused on multiple chains in the Polkadot\necosystem. More specifically, the account of a chain that uses the ",(0,r.kt)("inlineCode",{parentName:"p"},"*25519")," account address format\n(the latest list can be accessed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json"},"ss58 registry repository"),"\nis cross-compatible with all the chains that use the similar format. To switch between the accounts\non different chains, you can follow the guidelines in\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000103707-can-i-use-the-same-account-on-polkadot-kusama-and-parachains-"},"this support article"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/tools/format_transform"},"Subscan has a tool")," you can use to convert your\naddress between the different chain formats."),(0,r.kt)("admonition",{title:"Using the same account on multiple chains - Pros and Cons",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The address format differs from chain to chain, but that difference is only visual. The same private\nkey can be used to sign transactions on behalf of the respective accounts on multiple chains. Using\na single account on multiple chains is convenient, as you do not have to deal with multiple mnemonic\nphrases or private keys. But, if your account gets compromised on one chain, the attacker can gain\nfull access to the accounts on all other chains. This also has implications for the account holder's\nprivacy, as knowing the identity of an account on one chain can expose the account holder's identity\non all the chains. In the Accounts tab, the Polkadot-JS UI displays a warning message next to each\nAccount you are using on multiple chains and recommends using different Accounts on different chains\n(see below)."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("img",{alt:"warning multiple chains",src:n(2245).Z,width:"1103",height:"343"}))),(0,r.kt)("p",null,'On Polkadot-JS Extension, you can copy your address by clicking the account\'s icon while the desired\nchain format is active. E.g. selecting "Substrate" as the format will change your address, and\nclicking the colorful icon of your account will copy it in that format. While in\nPolkadot mode, that address format will be\ncopied, and so on.'),(0,r.kt)("h2",{id:"polkadot-js-browser-extension"},"Polkadot-JS Browser Extension"),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/DNU0p5G0Gqc/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc"},"Polkadot-JS Browser Extension Tutorial")))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using the Polkadot Extension, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000098878-how-to-create-a-dot-account"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("p",null,"The Polkadot-JS Browser Extension (the Polkadot Extension) provides a reasonable balance of security\nand usability. It provides a separate local mechanism to generate your address and interact with\nPolkadot."),(0,r.kt)("p",null,'This method involves installing the Polkadot Extension and using it as a \u201cvirtual vault," separate\nfrom your browser, to store your private keys. It also allows the signing of transactions and\nsimilar functionality.'),(0,r.kt)("p",null,"It is still running on the same computer you use to connect to the internet and thus is less secure\nthan using Parity Signer or other air-gapped approaches."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-browser-extension"},"Account Backup using the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account."),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-browser-extension"},"Reset Password using the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc&t=280s"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to\nchange the password for an account that has been created on the Polkadot-JS browser extension (i.e.\nan injected account).")),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Before following the instructions below, make sure you have your mnemonic phrase stored in a safe\nplace accessible to you.")),(0,r.kt)("p",null,"Let's say you created ",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," protected by password ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),". To reset the password of your\n",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," using the browser extension, you must follow the following steps:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Go to ",(0,r.kt)("inlineCode",{parentName:"li"},"ACCOUNT 1"),' on the browser extension and click "Forget account". This action will delete the\naccess to your account. Note that your tokens are still in your account on the\nPolkadot blockchain network.'),(0,r.kt)("li",{parentName:"ul"},'On the browser extension click the "+" button in the top right corner and select the option\n"Import account from pre-existing seed". After entering the mnemonic phrase, you can choose a new\npassword, ',(0,r.kt)("inlineCode",{parentName:"li"},"PSW 2"),".")),(0,r.kt)("admonition",{title:"JSON files do not allow changing account passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},'If you add the account to the extension using the option "Restore account from backup JSON file",\nthis will allow you to restore access to your account using a JSON file protected by the password\n',(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),", but does not let you set a new password. Thus, ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1")," will become the account password by\ndefault.")),(0,r.kt)("admonition",{title:"Accounts on Cold wallets do not need passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For hardware wallets such as ",(0,r.kt)("a",{parentName:"p",href:"https://www.ledger.com/"},"Ledger"),", you may have to set a PIN for\naccessing the accounts on the device, but you do not need to set a password for every individual\naccount. When you need to make transactions with your account, you are required to sign using your\nLedger device. Also, Ledger wallets let you generate multiple accounts for multiple blockchain\nnetworks without setting different passwords to access such accounts.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-browser-extension"},"Restore Account on the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/9ohp8k4Hz8c"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169952-how-to-restore-your-account-in-the-polkadot-extension"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI.")),(0,r.kt)("h2",{id:"polkadot-js-ui"},"Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using Polkadot-JS UI, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180529"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"If you use this method to create your account and clear your cookies in your browser, your account\nwill be lost forever if you do not ",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"back it up"),". Make sure\nyou store your seed phrase in a safe place or download the account's JSON file if using the\nPolkadot{.js} browser extension. Learn more about account backup and restoration\n",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"here"),".")),(0,r.kt)("p",null,"Local in-browser account storage is disabled by default on the Polkadot-JS UI. To create an account\nusing the Polkadot-JS UI, navigate to settings > account options and click on allow local in-browser\naccount storage in the drop-down menu. Using the Polkadot-JS user interface without a browser\nextension is ",(0,r.kt)("strong",{parentName:"p"},"not recommended"),". It is the least secure way of generating an account. It should\nonly be used if all other methods are not feasible."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-ui"},"Account Backup using the Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account.")),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-ui"},"Reset password using the Polkadot-JS UI"),(0,r.kt)("p",null,'To reset the password of an account created with Polkadot-JS Apps UI, you need to go to the\n"Accounts" tab, click the icon with three vertical dots on your account and select "Change this\naccount\'s password".'),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc?t=261"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to change the\npassword for an account created on the Polkadot-JS UI (i.e. a non-injected account)."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"If you create an account first using Polkadot-JS Apps UI and then add it to the browser extension,\nyou need to follow the\n",(0,r.kt)("a",{parentName:"p",href:"#reset-password-using-the-browser-extension"},"guidelines for the browser extension")," to change the\npassword of such an account.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-ui"},"Restore Account on the Polkadot-JS UI"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/cBsZqFpBANY"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180110-how-to-restore-your-account-in-polkadot-js-ui"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI."),(0,r.kt)("h3",{id:"unlocking-locks"},"Unlocking Locks"),(0,r.kt)("admonition",{title:"Locks do not stack!",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The biggest lock decides the total amount of locked funds. See\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/LHgY7ds_bZ0"},(0,r.kt)("strong",{parentName:"a"},"this walk-through video tutorial"))," that will guide you in the\nprocess of unlocking funds in the example above.")),(0,r.kt)("p",null,"In the example, the locked balance is 0.55 KSM because the biggest lock is on democracy and is 0.55\nKSM. As soon as the democracy lock is removed the next biggest lock is on staking 0.5 KSM (bonded\n0.4 KSM + redeemable 0.1 KSM). This means that the locked balance will be 0.5 KSM, and 0.05 KSM will\nbe added to the transferrable balance. After redeeming the unbonded 0.1 KSM, the locked balance will\nbe 0.4 KSM, and an additional 0.1 KSM will be added to the transferrable balance. Now the biggest\nlock is still the bonded one. This means that even if we remove the vested lock, the locked balance\nwill still be 0.4 KSM and no tokens will be added to the transferrable balance. To free those bonded\ntokens we will need to unbond them and wait for the unbonding period to make them redeemable. If we\nremove the proxy the reserved funds will be automatically added to the transferrable balance."),(0,r.kt)("h2",{id:"query-account-data-in-polkadot-js"},"Query Account Data in Polkadot-JS"),(0,r.kt)("p",null,"In the Polkadot-JS UI, you can also query account data under\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Developer > Chain state"),". Under ",(0,r.kt)("inlineCode",{parentName:"p"},"selected state query"),"\nchoose the system pallet followed by ",(0,r.kt)("inlineCode",{parentName:"p"},"account(AccountId32): FrameSystemAccountInfo"),", under ",(0,r.kt)("inlineCode",{parentName:"p"},"Option"),'\nchoose an account, and then click on the "+" button on the right.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"account_balance_types",src:n(9853).Z,width:"1636",height:"343"})),(0,r.kt)("p",null,"Account information include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"nonce"),", the number of transactions the account sent."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"consumers"),", the number of other modules that currently depend on this account's existence. The\naccount cannot be reaped until this is zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"providers"),", the number of other modules that allow this account to exist. The account may not be\nreaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"sufficients")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sufficients"),", the number of modules that allow this account to exist for their own purposes. The\naccount may not be reaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"providers")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"data"),", the additional data that belongs to this account. Used to store the balance(s) in a lot of\nchains.")),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/system/src/lib.rs#LL767C1-L781C24"},"substrate code base"),"."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"AccountData")," structure defines the balance types in Substrate. The three types of balances\ninclude:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"free"),", is the balance that is free but not necessarily transferrable."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"reserved"),", is the balance that is not free, and it is put on hold for on-chain activity such as\ndeposits for multi-signature calls, setting up proxies and identities, and other actions that hold\nstate on the network."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"frozen"),", is the amount that is free to use for on-chain activity but is locked in staking,\ngovernance, or vesting.")),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"usable")," or transferrable balance of the account is currently calculated using the formula\nbelow:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"transferable = free - max(frozen - reserved, ED)\n")),(0,r.kt)("p",null,"Where ED is the existential deposit. The ",(0,r.kt)("strong",{parentName:"p"},"total")," balance of the account is the sum of ",(0,r.kt)("inlineCode",{parentName:"p"},"free")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"reserved")," funds. The ",(0,r.kt)("inlineCode",{parentName:"p"},"flags")," describe extra information about the account."),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/balances/src/types.rs#LL95-L114"},"balances pallet in the Substrate code base"),"."),(0,r.kt)("h2",{id:"vanity-generator"},"Vanity Generator"),(0,r.kt)("p",null,"The vanity generator is a tool on ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts/vanity"},"Polkadot-JS UI"),"\nthat lets you generate addresses that contain a specific substring. For the tutorial on how to\ncreate an account using Vanity Generator, visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000171416"},"this support article"),"."),(0,r.kt)("h2",{id:"encryption-enhancement"},"Encryption Enhancement"),(0,r.kt)("p",null,"Some newly generated ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," account files cannot be imported (restored) into older wallet software.\nThis is due to an enhanced encryption method, noticeable in a slight delay when\nencrypting/decrypting your wallet. If you cannot load a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," file, please use the latest version\nof the wallet software. If you cannot load it, ensure that the wallet software uses the newest\nversion of the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/api/"},"Polkadot API"),"."))}m.isMDXComponent=!0},9853:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/AccountData-struct-118d0bf533806084460cba05bef62b9c.png"},2245:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/warning-multichain-account-0719ff59691f3ff48562d92ef2295e84.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/b0a48d97.5a7adf6a.js b/assets/js/b0a48d97.5a7adf6a.js deleted file mode 100644 index 6b2afe02ebf1..000000000000 --- a/assets/js/b0a48d97.5a7adf6a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3091],{3905:(e,t,o)=>{o.d(t,{Zo:()=>p,kt:()=>g});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var d=n.createContext({}),l=function(e){var t=n.useContext(d),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=function(e){var t=l(e.components);return n.createElement(d.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,d=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=l(o),h=r,g=c["".concat(d,".").concat(h)]||c[h]||u[h]||a;return o?n.createElement(g,i(i({ref:t},p),{},{components:o})):n.createElement(g,i({ref:t},p))}));function g(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=h;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[c]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>g,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var n=o(87462),r=o(63366),a=(o(67294),o(3905)),i=["components"],s={id:"learn-guides-ledger",title:"Polkadot-JS Guides for Ledger Devices",sidebar_label:"Ledger Guides",description:"Polkadot-JS Guides for Ledger Devices.",keywords:["ledger","polkadot-js"],slug:"../learn-guides-ledger"},d=void 0,l={unversionedId:"learn/learn-guides-ledger",id:"learn/learn-guides-ledger",title:"Polkadot-JS Guides for Ledger Devices",description:"Polkadot-JS Guides for Ledger Devices.",source:"@site/../docs/learn/learn-guides-ledger.md",sourceDirName:"learn",slug:"/learn-guides-ledger",permalink:"/docs/learn-guides-ledger",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-ledger.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-ledger",title:"Polkadot-JS Guides for Ledger Devices",sidebar_label:"Ledger Guides",description:"Polkadot-JS Guides for Ledger Devices.",keywords:["ledger","polkadot-js"],slug:"../learn-guides-ledger"},sidebar:"docs",previous:{title:"Identity Guides",permalink:"/docs/learn-guides-identity"},next:{title:"Polkadot Vault Guides",permalink:"/docs/learn-guides-vault"}},p={},c=[{value:"Loading Your Account",id:"loading-your-account",level:2},{value:"Derivation paths",id:"derivation-paths",level:3},{value:"Connecting your ledger device",id:"connecting-your-ledger-device",level:3},{value:"Confirming the Address on your Device",id:"confirming-the-address-on-your-device",level:2},{value:"Checking the Balance of Your Account",id:"checking-the-balance-of-your-account",level:2},{value:"Sending a Transfer with Ledger Devices",id:"sending-a-transfer-with-ledger-devices",level:2},{value:"Receiving a Transfer",id:"receiving-a-transfer",level:2},{value:"Staking",id:"staking",level:2},{value:"Removing Expired Democracy Locks",id:"removing-expired-democracy-locks",level:2}],u={toc:c},h="wrapper";function g(e){var t=e.components,s=(0,r.Z)(e,i);return(0,a.kt)(h,(0,n.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"sticky",style:{zIndex:1}},(0,a.kt)("br",null),(0,a.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,a.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,a.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,a.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,a.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,a.kt)("h2",{id:"loading-your-account"},"Loading Your Account"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Ledger Live should be off while using Ledger with Polkadot-JS UI as it can interfere with normal\noperation.")),(0,a.kt)("p",null,"You can import your Ledger account to ",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/extension/"},"Polkadot Extension")," or to\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),". For instructions on how to import\nLedger accounts to the Polkadot Extension read through\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000175387-how-to-add-your-ledger-through-the-polkadot-extension"},"this support article"),",\nwhile if you want to import Ledger accounts to the Polkadot-JS UI you can consult\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170812-how-to-add-ledger-account-through-the-polkadot-js-ui"},"this other article"),"."),(0,a.kt)("h3",{id:"derivation-paths"},"Derivation paths"),(0,a.kt)("p",null,"When adding a Ledger account using the extension or the UI, you will be asked to select an\n",(0,a.kt)("inlineCode",{parentName:"p"},"account type")," and an ",(0,a.kt)("inlineCode",{parentName:"p"},"account index"),". The first lets you select an account, while the second lets\nyou pick a derivation path from that account - think of it like a formula from which child accounts\nare generated. When you are creating a\nPolkadot ledger account for the first time on\nLedger Live with name ",(0,a.kt)("inlineCode",{parentName:"p"},"Polkadot 1"),"",", this\ncan be added to Polkadot-JS using the 0/0 derivation path (i.e. account type = 0 and account index =\n0). If you add a second account called\n",(0,a.kt)("inlineCode",{parentName:"p"},"Polkadot 2"),"",", this will correspond to the\n1/0 derivation path, and so on. We thus have multiple parent accounts that can be viewed and used in\nboth Ledger Live and Polkadot-JS. Additionally, we can use Polkadot-JS UI to create multiple\nchildren accounts from each parent account. For example,\n",(0,a.kt)("inlineCode",{parentName:"p"},"Polkadot 1"),""," with 0/0 derivation path can\nhave child 0/1, 0/2, etc. that can be used within the UI. However, such children accounts cannot be\nused in Ledger Live, as it only scans through the parent accounts. So, remember that the balances on\nthe children accounts cannot be viewed, and you will not be able to transact with those accounts on\nLedger Live."),(0,a.kt)("h3",{id:"connecting-your-ledger-device"},"Connecting your ledger device"),(0,a.kt)("p",null,"While using a ledger device to sign transactions, depending on your browser and its security\nsettings, you might need to confirm the USB connection through a popup like the one below:"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Display the device connection popup",src:o(57302).Z,width:"468",height:"461"})),(0,a.kt)("p",null,'If you are adding your Ledger Nano for the first time, click on the "Unknown device" line and the\n"Connect" button will become available.'),(0,a.kt)("admonition",{title:"Signature error message",type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If you have already connected your device, but an error message appears before signing a\ntransaction, make sure you have opened the\nPolkadot application on your Ledger Nano\ndevice. Visit\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181994"},"this support page")," for\nmore information about signing transactions using your ledger.")),(0,a.kt)("h2",{id:"confirming-the-address-on-your-device"},"Confirming the Address on your Device"),(0,a.kt)("p",null,"To display your Polkadot ledger account\naddress on your Ledger Nano, you can follow the guidelines on\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181854-how-to-confirm-your-account-address-on-your-ledger-device"},"this support article"),".\nHere you can scroll through and make sure the address matches what is displayed on\n",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),"."),(0,a.kt)("h2",{id:"checking-the-balance-of-your-account"},"Checking the Balance of Your Account"),(0,a.kt)("p",null,"There are a few methods to check the balance of your account. Check out\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169332-where-can-i-see-the-balance-of-my-account-"},"this support article"),"\nfor information."),(0,a.kt)("h2",{id:"sending-a-transfer-with-ledger-devices"},"Sending a Transfer with Ledger Devices"),(0,a.kt)("admonition",{title:"Verifying Extrinsics",type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"Visit the\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-using-Ledger"},(0,a.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,a.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=360"},(0,a.kt)("strong",{parentName:"a"},"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.")),(0,a.kt)("p",null,"General instructions to send a transfer can be found on\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170304-how-to-send-transfer-funds-out-of-your-dot-account-on-the-polkadot-js-ui"},"this support page"),".\nTo sign transactions with your Ledger nano check\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181994"},"this support article")," or\nsee ",(0,a.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=579"},"this video tutorial"),"."),(0,a.kt)("h2",{id:"receiving-a-transfer"},"Receiving a Transfer"),(0,a.kt)("p",null,"To receive a transfer on the accounts stored on your Ledger device, you must provide the sender\n(i.e. the payer) with your address. To do so, follow the instructions on\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181866-how-to-receive-dot-to-my-account-on-polkadot-js-ui"},"this support page"),"."),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Before giving anyone your address, ensure it matches what's on the Ledger by\n",(0,a.kt)("a",{parentName:"p",href:"#confirming-the-address-on-your-device"},"confirming the address on your device"),". Some malware will\nintercept clicks and clipboard requests and can change your copied value in-flight, so being extra\nvigilant around copy-paste operations makes sense.")),(0,a.kt)("h2",{id:"staking"},"Staking"),(0,a.kt)("p",null,'For staking using Ledger devices, check the section "How to stake using your Ledger" on\n',(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000168057-how-do-i-stake-nominate-on-polkadot-"},"this support article"),"."),(0,a.kt)("h2",{id:"removing-expired-democracy-locks"},"Removing Expired Democracy Locks"),(0,a.kt)("p",null,"Check out\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181870-how-to-remove-expired-democracy-locks"},"this support page"),"\nthe learn how to remove democracy locks after the end of a Governance referendum."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Please be advised"),": Despite the Polkadot ledger application being compatible with both the Ledger\nNano S and the Ledger Nano X, some extrinsics are not supported by the light version. The following\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Zondax/ledger-polkadot"},"repository by Zondax")," lists the currently supported\nextrinsics on the XL version of the Ledger app."))}g.isMDXComponent=!0},57302:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/query-device-d7d9e7e7d28a34a343c59094db864a1a.png"}}]); \ No newline at end of file diff --git a/assets/js/b0a48d97.872881f4.js b/assets/js/b0a48d97.872881f4.js new file mode 100644 index 000000000000..4499406d3516 --- /dev/null +++ b/assets/js/b0a48d97.872881f4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3091],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>g});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var d=n.createContext({}),l=function(e){var t=n.useContext(d),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},c=function(e){var t=l(e.components);return n.createElement(d.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,d=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=l(o),h=r,g=p["".concat(d,".").concat(h)]||p[h]||u[h]||a;return o?n.createElement(g,i(i({ref:t},c),{},{components:o})):n.createElement(g,i({ref:t},c))}));function g(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=h;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var l=2;l{o.d(t,{Z:()=>r});var n=o(67294);const r=function(e){var t,o=e.message,r=(0,n.useState)(!0),a=r[0],i=r[1];return n.createElement(n.Fragment,null,a&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},74789:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>k,frontMatter:()=>d,metadata:()=>c,toc:()=>u});var n=o(87462),r=o(63366),a=(o(67294),o(3905)),i=o(35703),s=["components"],d={id:"learn-guides-ledger",title:"Polkadot-JS Guides for Ledger Devices",sidebar_label:"Ledger Guides",description:"Polkadot-JS Guides for Ledger Devices.",keywords:["ledger","polkadot-js"],slug:"../learn-guides-ledger"},l=void 0,c={unversionedId:"learn/learn-guides-ledger",id:"learn/learn-guides-ledger",title:"Polkadot-JS Guides for Ledger Devices",description:"Polkadot-JS Guides for Ledger Devices.",source:"@site/../docs/learn/learn-guides-ledger.md",sourceDirName:"learn",slug:"/learn-guides-ledger",permalink:"/docs/learn-guides-ledger",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-ledger.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-ledger",title:"Polkadot-JS Guides for Ledger Devices",sidebar_label:"Ledger Guides",description:"Polkadot-JS Guides for Ledger Devices.",keywords:["ledger","polkadot-js"],slug:"../learn-guides-ledger"},sidebar:"docs",previous:{title:"Identity Guides",permalink:"/docs/learn-guides-identity"},next:{title:"Polkadot Vault Guides",permalink:"/docs/learn-guides-vault"}},p={},u=[{value:"Loading Your Account",id:"loading-your-account",level:2},{value:"Derivation paths",id:"derivation-paths",level:3},{value:"Connecting your ledger device",id:"connecting-your-ledger-device",level:3},{value:"Confirming the Address on your Device",id:"confirming-the-address-on-your-device",level:2},{value:"Checking the Balance of Your Account",id:"checking-the-balance-of-your-account",level:2},{value:"Sending a Transfer with Ledger Devices",id:"sending-a-transfer-with-ledger-devices",level:2},{value:"Receiving a Transfer",id:"receiving-a-transfer",level:2},{value:"Staking",id:"staking",level:2},{value:"Removing Expired Democracy Locks",id:"removing-expired-democracy-locks",level:2}],h={toc:u},g="wrapper";function k(e){var t=e.components,d=(0,r.Z)(e,s);return(0,a.kt)(g,(0,n.Z)({},h,d,{components:t,mdxType:"MDXLayout"}),(0,a.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,a.kt)("h2",{id:"loading-your-account"},"Loading Your Account"),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Ledger Live should be off while using Ledger with Polkadot-JS UI as it can interfere with normal\noperation.")),(0,a.kt)("p",null,"You can import your Ledger account to ",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/extension/"},"Polkadot Extension")," or to\nthe ",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),". For instructions on how to import\nLedger accounts to the Polkadot Extension read through\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000175387-how-to-add-your-ledger-through-the-polkadot-extension"},"this support article"),",\nwhile if you want to import Ledger accounts to the Polkadot-JS UI you can consult\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170812-how-to-add-ledger-account-through-the-polkadot-js-ui"},"this other article"),"."),(0,a.kt)("h3",{id:"derivation-paths"},"Derivation paths"),(0,a.kt)("p",null,"When adding a Ledger account using the extension or the UI, you will be asked to select an\n",(0,a.kt)("inlineCode",{parentName:"p"},"account type")," and an ",(0,a.kt)("inlineCode",{parentName:"p"},"account index"),". The first lets you select an account, while the second lets\nyou pick a derivation path from that account - think of it like a formula from which child accounts\nare generated. When you are creating a\nPolkadot ledger account for the first time on\nLedger Live with name ",(0,a.kt)("inlineCode",{parentName:"p"},"Polkadot 1"),"",", this\ncan be added to Polkadot-JS using the 0/0 derivation path (i.e. account type = 0 and account index =\n0). If you add a second account called\n",(0,a.kt)("inlineCode",{parentName:"p"},"Polkadot 2"),"",", this will correspond to the\n1/0 derivation path, and so on. We thus have multiple parent accounts that can be viewed and used in\nboth Ledger Live and Polkadot-JS. Additionally, we can use Polkadot-JS UI to create multiple\nchildren accounts from each parent account. For example,\n",(0,a.kt)("inlineCode",{parentName:"p"},"Polkadot 1"),""," with 0/0 derivation path can\nhave child 0/1, 0/2, etc. that can be used within the UI. However, such children accounts cannot be\nused in Ledger Live, as it only scans through the parent accounts. So, remember that the balances on\nthe children accounts cannot be viewed, and you will not be able to transact with those accounts on\nLedger Live."),(0,a.kt)("h3",{id:"connecting-your-ledger-device"},"Connecting your ledger device"),(0,a.kt)("p",null,"While using a ledger device to sign transactions, depending on your browser and its security\nsettings, you might need to confirm the USB connection through a popup like the one below:"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Display the device connection popup",src:o(57302).Z,width:"468",height:"461"})),(0,a.kt)("p",null,'If you are adding your Ledger Nano for the first time, click on the "Unknown device" line and the\n"Connect" button will become available.'),(0,a.kt)("admonition",{title:"Signature error message",type:"info"},(0,a.kt)("p",{parentName:"admonition"},"If you have already connected your device, but an error message appears before signing a\ntransaction, make sure you have opened the\nPolkadot application on your Ledger Nano\ndevice. Visit\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181994"},"this support page")," for\nmore information about signing transactions using your ledger.")),(0,a.kt)("h2",{id:"confirming-the-address-on-your-device"},"Confirming the Address on your Device"),(0,a.kt)("p",null,"To display your Polkadot ledger account\naddress on your Ledger Nano, you can follow the guidelines on\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181854-how-to-confirm-your-account-address-on-your-ledger-device"},"this support article"),".\nHere you can scroll through and make sure the address matches what is displayed on\n",(0,a.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),"."),(0,a.kt)("h2",{id:"checking-the-balance-of-your-account"},"Checking the Balance of Your Account"),(0,a.kt)("p",null,"There are a few methods to check the balance of your account. Check out\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169332-where-can-i-see-the-balance-of-my-account-"},"this support article"),"\nfor information."),(0,a.kt)("h2",{id:"sending-a-transfer-with-ledger-devices"},"Sending a Transfer with Ledger Devices"),(0,a.kt)("admonition",{title:"Verifying Extrinsics",type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"Visit the\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-using-Ledger"},(0,a.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,a.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=360"},(0,a.kt)("strong",{parentName:"a"},"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.")),(0,a.kt)("p",null,"General instructions to send a transfer can be found on\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170304-how-to-send-transfer-funds-out-of-your-dot-account-on-the-polkadot-js-ui"},"this support page"),".\nTo sign transactions with your Ledger nano check\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181994"},"this support article")," or\nsee ",(0,a.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=579"},"this video tutorial"),"."),(0,a.kt)("h2",{id:"receiving-a-transfer"},"Receiving a Transfer"),(0,a.kt)("p",null,"To receive a transfer on the accounts stored on your Ledger device, you must provide the sender\n(i.e. the payer) with your address. To do so, follow the instructions on\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181866-how-to-receive-dot-to-my-account-on-polkadot-js-ui"},"this support page"),"."),(0,a.kt)("admonition",{type:"warning"},(0,a.kt)("p",{parentName:"admonition"},"Before giving anyone your address, ensure it matches what's on the Ledger by\n",(0,a.kt)("a",{parentName:"p",href:"#confirming-the-address-on-your-device"},"confirming the address on your device"),". Some malware will\nintercept clicks and clipboard requests and can change your copied value in-flight, so being extra\nvigilant around copy-paste operations makes sense.")),(0,a.kt)("h2",{id:"staking"},"Staking"),(0,a.kt)("p",null,'For staking using Ledger devices, check the section "How to stake using your Ledger" on\n',(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000168057-how-do-i-stake-nominate-on-polkadot-"},"this support article"),"."),(0,a.kt)("h2",{id:"removing-expired-democracy-locks"},"Removing Expired Democracy Locks"),(0,a.kt)("p",null,"Check out\n",(0,a.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181870-how-to-remove-expired-democracy-locks"},"this support page"),"\nthe learn how to remove democracy locks after the end of a Governance referendum."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Please be advised"),": Despite the Polkadot ledger application being compatible with both the Ledger\nNano S and the Ledger Nano X, some extrinsics are not supported by the light version. The following\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/Zondax/ledger-polkadot"},"repository by Zondax")," lists the currently supported\nextrinsics on the XL version of the Ledger app."))}k.isMDXComponent=!0},57302:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/query-device-d7d9e7e7d28a34a343c59094db864a1a.png"}}]); \ No newline at end of file diff --git a/assets/js/bf3ab9de.efdf4196.js b/assets/js/bf3ab9de.efdf4196.js new file mode 100644 index 000000000000..a9a23335d9c9 --- /dev/null +++ b/assets/js/bf3ab9de.efdf4196.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[289,8047],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var u=n.createContext({}),s=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,u=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=s(r),m=a,f=d["".concat(u,".").concat(m)]||d[m]||p[m]||o;return r?n.createElement(f,i(i({ref:t},c),{},{components:r})):n.createElement(f,i({ref:t},c))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var l={};for(var u in t)hasOwnProperty.call(t,u)&&(l[u]=t[u]);l.originalType=e,l[d]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{r.d(t,{Z:()=>a});var n=r(67294);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),o=a[0],i=a[1];return n.createElement(n.Fragment,null,o&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52991:(e,t,r)=>{r.d(t,{Z:()=>v});var n=r(67294),a=r(86010),o=r(53438),i=r(39960),l=r(13919),u=r(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function c(e){var t=e.href,r=e.children;return n.createElement(i.Z,{href:t,className:(0,a.Z)("card padding--lg",s.cardContainer)},r)}function d(e){var t=e.href,r=e.icon,o=e.title,i=e.description;return n.createElement(c,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:o},r," ",o),i&&n.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:i},i))}function p(e){var t,r=e.item,a=(0,o.Wl)(r);return a?n.createElement(d,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,u.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,i=(0,l.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",u=(0,o.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(d,{href:a.href,icon:i,title:a.label,description:null!=(r=a.description)?r:null==u?void 0:u.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function b(e){var t=e.className,r=(0,o.jA)();return n.createElement(v,{items:r.items,className:t})}function v(e){var t=e.items,r=e.className;if(!t)return n.createElement(b,e);var i=(0,o.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},i.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},85162:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(67294),a=r(86010);const o={tabItem:"tabItem_Ymn6"};function i(e){var t=e.children,r=e.hidden,i=e.className;return n.createElement("div",{role:"tabpanel",className:(0,a.Z)(o.tabItem,i),hidden:r},t)}},74866:(e,t,r)=>{r.d(t,{Z:()=>w});var n=r(87462),a=r(67294),o=r(86010),i=r(12466),l=r(16550),u=r(91980),s=r(67392),c=r(50012);function d(e){return function(e){var t,r;return null!=(t=null==(r=a.Children.map(e,(function(e){if(!e||(0,a.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:r.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,r=e.children;return(0,a.useMemo)((function(){var e=null!=t?t:d(r);return function(e){var t=(0,s.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,r])}function m(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function f(e){var t=e.queryString,r=void 0!==t&&t,n=e.groupId,o=(0,l.k6)(),i=function(e){var t=e.queryString,r=void 0!==t&&t,n=e.groupId;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=n?n:null}({queryString:r,groupId:n});return[(0,u._X)(i),(0,a.useCallback)((function(e){if(i){var t=new URLSearchParams(o.location.search);t.set(i,e),o.replace(Object.assign({},o.location,{search:t.toString()}))}}),[i,o])]}function b(e){var t,r,n,o,i=e.defaultValue,l=e.queryString,u=void 0!==l&&l,s=e.groupId,d=p(e),b=(0,a.useState)((function(){return function(e){var t,r=e.defaultValue,n=e.tabValues;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:n}))throw new Error('Docusaurus error: The has a defaultValue "'+r+'" but none of its children has the corresponding value. Available values are: '+n.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return r}var a=null!=(t=n.find((function(e){return e.default})))?t:n[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:i,tabValues:d})})),v=b[0],g=b[1],h=f({queryString:u,groupId:s}),y=h[0],k=h[1],w=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:s}.groupId),r=(0,c.Nk)(t),n=r[0],o=r[1],[n,(0,a.useCallback)((function(e){t&&o.set(e)}),[t,o])]),E=w[0],O=w[1],T=function(){var e=null!=y?y:E;return m({value:e,tabValues:d})?e:null}();return(0,a.useLayoutEffect)((function(){T&&g(T)}),[T]),{selectedValue:v,selectValue:(0,a.useCallback)((function(e){if(!m({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);g(e),k(e),O(e)}),[k,O,d]),tabValues:d}}var v=r(72389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){var t=e.className,r=e.block,l=e.selectedValue,u=e.selectValue,s=e.tabValues,c=[],d=(0,i.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,r=c.indexOf(t),n=s[r].value;n!==l&&(d(t),u(n))},m=function(e){var t,r=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var n,a=c.indexOf(e.currentTarget)+1;r=null!=(n=c[a])?n:c[0];break;case"ArrowLeft":var o,i=c.indexOf(e.currentTarget)-1;r=null!=(o=c[i])?o:c[c.length-1]}null==(t=r)||t.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},t)},s.map((function(e){var t=e.value,r=e.label,i=e.attributes;return a.createElement("li",(0,n.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:function(e){return c.push(e)},onKeyDown:m,onClick:p},i,{className:(0,o.Z)("tabs__item",g.tabItem,null==i?void 0:i.className,{"tabs__item--active":l===t})}),null!=r?r:t)})))}function y(e){var t=e.lazy,r=e.children,n=e.selectedValue,o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){var i=o.find((function(e){return e.props.value===n}));return i?(0,a.cloneElement)(i,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},o.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==n})})))}function k(e){var t=b(e);return a.createElement("div",{className:(0,o.Z)("tabs-container",g.tabList)},a.createElement(h,(0,n.Z)({},e,t)),a.createElement(y,(0,n.Z)({},e,t)))}function w(e){var t=(0,v.Z)();return a.createElement(k,(0,n.Z)({key:String(t)},e))}},24284:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>v,frontMatter:()=>s,metadata:()=>d,toc:()=>m});var n=r(87462),a=r(63366),o=(r(67294),r(3905)),i=(r(74866),r(85162),r(52991)),l=r(35703),u=["components"],s={id:"learn-guides-bridges",title:"Polkadot-JS Guides about Bridge Hub",sidebar_label:"Bridge Hub Guides",description:"Polkadot-JS Guides about the Bridge Hub.",keywords:["Bridge","XCM","Bridge Hub","polkadot-js"],slug:"../learn-guides-bridges"},c=void 0,d={unversionedId:"learn/learn-guides-bridges",id:"learn/learn-guides-bridges",title:"Polkadot-JS Guides about Bridge Hub",description:"Polkadot-JS Guides about the Bridge Hub.",source:"@site/../docs/learn/learn-guides-bridges.md",sourceDirName:"learn",slug:"/learn-guides-bridges",permalink:"/docs/learn-guides-bridges",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-bridges.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-bridges",title:"Polkadot-JS Guides about Bridge Hub",sidebar_label:"Bridge Hub Guides",description:"Polkadot-JS Guides about the Bridge Hub.",keywords:["Bridge","XCM","Bridge Hub","polkadot-js"],slug:"../learn-guides-bridges"},sidebar:"docs",previous:{title:"Asset Conversion Tutorials",permalink:"/docs/learn-guides-asset-conversion"},next:{title:"DOT <> KSM Bridge",permalink:"/docs/learn-guides-dot-ksm-bridge"}},p={},m=[],f={toc:m},b="wrapper";function v(e){var t=e.components,r=(0,a.Z)(e,u);return(0,o.kt)(b,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(l.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)(i.Z,{mdxType:"DocCardList"}))}v.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c07c2447.26723e91.js b/assets/js/c07c2447.26723e91.js deleted file mode 100644 index 88ebf7a368f4..000000000000 --- a/assets/js/c07c2447.26723e91.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[7654],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>c});var o=a(74165),n=a(15861),i=a(67294),r=a(87152),s=a(9712),l=a(67425);function p(e,t,a){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,o.Z)().mark((function e(t,a,n){var i,l,p,d,u;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return p=new r.U(i),e.next=21,s.G.create({provider:p});case 21:d=e.sent,(u=a.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=u[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+u[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function u(e,t,a,o){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,o);break;case"precise":(0,l.Precise)(e,a,o);break;case"blocksToDays":(0,l.BlocksToDays)(e,o);break;case"erasToDays":(0,l.ErasToDays)(e,o,a);break;case"percentage":(0,l.Percentage)(e,o);break;case"permillToPercent":(0,l.PermillToPercent)(e,o);break;case"arrayLength":(0,l.ArrayLength)(e,o);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,a=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),c=d[0],h=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?u(r.toString(),l,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;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,n.Z)((0,o.Z)().mark((function e(){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,a,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?u(n,l,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),c}},67425:e=>{var t="polkadot",a="kusama",o="statemine",n="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===n)l=3;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===n)s=1;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},40569:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>p,default:()=>k,frontMatter:()=>l,metadata:()=>d,toc:()=>c});var o=a(87462),n=a(63366),i=(a(67294),a(3905)),r=a(47940),s=["components"],l={id:"learn-guides-polkadot-opengov",title:"Polkadot-JS Guides about OpenGov",sidebar_label:"OpenGov Guides",description:"Polkadot-JS Guides about Polkadot OpenGov.",keywords:["opengov","polkadot opengov","referenda","cancel","polkadot-js"],slug:"../learn-guides-polkadot-opengov"},p=void 0,d={unversionedId:"learn/learn-guides-polkadot-opengov",id:"learn/learn-guides-polkadot-opengov",title:"Polkadot-JS Guides about OpenGov",description:"Polkadot-JS Guides about Polkadot OpenGov.",source:"@site/../docs/learn/learn-guides-polkadot-opengov.md",sourceDirName:"learn",slug:"/learn-guides-polkadot-opengov",permalink:"/docs/learn-guides-polkadot-opengov",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-polkadot-opengov.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1712218963,formattedLastUpdatedAt:"Apr 4, 2024",frontMatter:{id:"learn-guides-polkadot-opengov",title:"Polkadot-JS Guides about OpenGov",sidebar_label:"OpenGov Guides",description:"Polkadot-JS Guides about Polkadot OpenGov.",keywords:["opengov","polkadot opengov","referenda","cancel","polkadot-js"],slug:"../learn-guides-polkadot-opengov"},sidebar:"docs",previous:{title:"Nomination Pool Guides",permalink:"/docs/learn-guides-staking-pools"},next:{title:"Treasury Guides",permalink:"/docs/learn-guides-treasury"}},u={},c=[{value:"Create a Referenda Proposal",id:"create-a-referenda-proposal",level:2},{value:"Submitting a Preimage",id:"submitting-a-preimage",level:3},{value:"Submitting a Proposal",id:"submitting-a-proposal",level:3},{value:"Submitting a Referendum on the Whitelisted Caller Track",id:"submitting-a-referendum-on-the-whitelisted-caller-track",level:3},{value:"Voting on Referenda",id:"voting-on-referenda",level:2},{value:"Removing Votes",id:"removing-votes",level:3},{value:"Removing Expired Voting Locks",id:"removing-expired-voting-locks",level:3},{value:"Delegations",id:"delegations",level:2},{value:"Delegate Votes",id:"delegate-votes",level:3},{value:"Undelegate Votes",id:"undelegate-votes",level:3},{value:"Remove Expired Locks from Delegations",id:"remove-expired-locks-from-delegations",level:3},{value:"Modify your Delegations",id:"modify-your-delegations",level:3},{value:"Claiming OpenGov Deposits",id:"claiming-opengov-deposits",level:2},{value:"Claiming the Preimage and Decision Deposits",id:"claiming-the-preimage-and-decision-deposits",level:3},{value:"Claiming the Referendum Submission Deposit",id:"claiming-the-referendum-submission-deposit",level:3},{value:"Cancel or Kill a Referendum",id:"cancel-or-kill-a-referendum",level:2},{value:"Interpreting On-Chain Voting Data",id:"interpreting-on-chain-voting-data",level:2}],h={toc:c},m="wrapper";function k(e){var t=e.components,l=(0,n.Z)(e,s);return(0,i.kt)(m,(0,o.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,i.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,i.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,i.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"this page")," to learn about Polkadot OpenGov."),(0,i.kt)("p",null,"This guide will instruct token holders how to propose and vote on public referenda using the\nReferenda module (OpenGov). Below are a few links to stay informed and directly engage with the\ncommunity."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction")," - a place to discuss\ngovernance and the future of Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Kusama-Direction:parity.io"},"Kusama Direction")," - a place to discuss\ngovernance and the future of Kusama."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.polkassembly.io"},"Polkadot")," and ",(0,i.kt)("a",{parentName:"li",href:"https://kusama.polkassembly.io"},"Kusama"),"\nPolkassembly - for current referenda, latest proposals, motions, treasury proposals, tips,\nbounties, and more."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#dailydigest:web3.foundation"},"Polkadot Daily Digest")," - News about what is\nhappening in the Polkadot ecosystem, published every weekday except holidays.")),(0,i.kt)("h2",{id:"create-a-referenda-proposal"},"Create a Referenda Proposal"),(0,i.kt)("h3",{id:"submitting-a-preimage"},"Submitting a Preimage"),(0,i.kt)("p",null,"The act of creating a proposal is split from submitting the preimage for the proposal since the\nstorage cost of submitting a large preimage could be expensive. Allowing the preimage submission to\ncome as a separate transaction means that another account could submit the preimage for you and pay\nthe fee. The example below demonstrates the creation of a preimage to propose and approve a spend of\ntreasury funds."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"submit preimage",src:a(10579).Z,width:"1078",height:"606"})),(0,i.kt)("p",null,"Follow the steps below to submit a preimage as shown in the screenshot above."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Navigate to Governance -> Referenda."),(0,i.kt)("li",{parentName:"ol"},'Click on the "Add preimage" button.'),(0,i.kt)("li",{parentName:"ol"},"From the ",(0,i.kt)("em",{parentName:"li"},"propose")," drop-down field, select ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury"),"."),(0,i.kt)("li",{parentName:"ol"},"From the unlabeled drop-down field to the right of the ",(0,i.kt)("em",{parentName:"li"},"propose")," drop-down field, select\n",(0,i.kt)("inlineCode",{parentName:"li"},"spendLocal(amount, beneficiary)"),"."),(0,i.kt)("li",{parentName:"ol"},"In the ",(0,i.kt)("inlineCode",{parentName:"li"},"amount: Compact (BalanceOf)")," text field, enter the spend amount."),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"beneficiary: MultiAddress (AccountIdLookupOf)")," drop-down field will have ",(0,i.kt)("inlineCode",{parentName:"li"},"Id")," selected by\ndefault. Select the beneficiary from the ",(0,i.kt)("inlineCode",{parentName:"li"},"Id: AccountId")," drop-down field.")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Copy the ",(0,i.kt)("inlineCode",{parentName:"p"},"preimage hash"),' value before clicking the "Submit preimage" button.')),(0,i.kt)("ol",{start:7},(0,i.kt)("li",{parentName:"ol"},'Click the "Submit preimage" button.')),(0,i.kt)("p",null,"After the preimage is submitted successfully on-chain, Polkadot-JS UI lists it under the tab of\nGovernance -> Preimages."),(0,i.kt)("h3",{id:"submitting-a-proposal"},"Submitting a Proposal"),(0,i.kt)("p",null,'Submitting a proposal requires you to bond some tokens. On Polkadot-JS UI, you can navigate to the\nGovernance -> Referenda to make a new proposal. In order to submit a proposal, you will need to\nsubmit what\'s called the preimage hash. The preimage hash is simply the hash of the proposal to be\nenacted. The easiest way to get the preimage hash is by clicking on the "Submit preimage" button as\nshown in the previous section.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"submit proposal",src:a(31993).Z,width:"1936",height:"1118"})),(0,i.kt)("p",null,"The proposal will be registered from the account selected and the balance lock will be applied to\nit. An appropriate origin must be chosen, as each origin has different privileges, and acceptance\ncriteria. After entering the hash of the preimage for the proposal, the preimage length field is\nautomatically populated. The enactment delay can be specified either as a block number, or as a\nspecific number of blocks after the referendum is approved. The deposit for this proposal will be\nlocked for the referendum duration."),(0,i.kt)("h3",{id:"submitting-a-referendum-on-the-whitelisted-caller-track"},"Submitting a Referendum on the Whitelisted Caller Track"),(0,i.kt)("p",null,"Let's consider increasing the number of validators participating in parachain consensus. You could\n",(0,i.kt)("a",{parentName:"p",href:"#submitting-a-preimage"},"submit a preimage")," with the call that sets the number of validators to\n1,000 and submit a referendum to the Root track directly. However, this requires a large decision\ndeposit and has very conservative passing parameters such that it will probably need the entire\n28-day voting period to pass."),(0,i.kt)("p",null,"Operations that are deemed safe or time critical by the Polkadot Technical Fellowship can use the\nWhitelisted Caller track. This track requires less turnout in the first half of the decision period\nso that it can pass more quickly. This track is typically used for more neutral, technical proposals\nlike runtime upgrades or changing the system's parachain validation configuration."),(0,i.kt)("p",null,"Using the Whitelisted Caller track requires some special calls. Submitting a referendum in the same\nform as other tracks will not work. Namely, rather than voting on a particular ",(0,i.kt)("inlineCode",{parentName:"p"},"proposal"),", the\nWhitelisted Caller track requires a vote to ",(0,i.kt)("inlineCode",{parentName:"p"},"dispatch")," the ",(0,i.kt)("inlineCode",{parentName:"p"},"proposal")," via the Whitelist pallet.\nBefore opening a referendum on this track, you should also attempt to get a positive signal from the\nFellowship that they will whitelist the proposal. If they do not, then even if the public referendum\npasses, it will not execute."),(0,i.kt)("p",null,"Below are the steps to follow when submitting a proposal to the Whitelist track."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#submitting-a-preimage"},"Submit a preimage")," with the call to ",(0,i.kt)("em",{parentName:"li"},"dispatch")," the proposal (",(0,i.kt)("inlineCode",{parentName:"li"},"call"),") you\nwant to submit -- ",(0,i.kt)("inlineCode",{parentName:"li"},"whitelist.dispatchWhitelistedCallWithPreimage(call)")," -- and obtain the preimage\nhash. This is the preimage for the ",(0,i.kt)("em",{parentName:"li"},"public referendum")," on the Whitelisted Caller track.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"preimage-whitelist",src:a(80474).Z,width:"2146",height:"1113"})),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Obtain the hash of ",(0,i.kt)("inlineCode",{parentName:"p"},"call"),". The Polkadot Fellowship needs to start a Fellowship referendum to\nwhitelist the call with ",(0,i.kt)("inlineCode",{parentName:"p"},"whitelist.whitelistCall(callHash)"),". The Fellowship referendum gets voted\non by the Polkadot Fellowship members only."),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"call-hash",src:a(78249).Z,width:"2257",height:"858"}))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The public now votes on the referendum. Someone must place a decision deposit to go into the\ndeciding phase.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Once passed, it gets enacted successfully as long as the call has been whitelisted by the\nFellowship."))),(0,i.kt)("p",null,"Note that the public referendum and Fellowship referendum can happen simultaneously. However, if the\nFellowship does not whitelist the call, you must submit it directly to the Root origin."),(0,i.kt)("h2",{id:"voting-on-referenda"},"Voting on Referenda"),(0,i.kt)("p",null,"As Polkadot OpenGov takes both the approval and support into account, there are four options to\nchoose from when voting on a referendum:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Aye"),(0,i.kt)("li",{parentName:"ul"},"Nay"),(0,i.kt)("li",{parentName:"ul"},"Split"),(0,i.kt)("li",{parentName:"ul"},"Abstain")),(0,i.kt)("p",null,"Also, you have to specify the conviction multiplier for this vote. The longer you are willing to\nlock your tokens, the stronger your vote will be weighted. Unwillingness to lock your tokens means\nthat your vote only counts for 10% of the tokens that you hold."),(0,i.kt)("p",null,"For detailed instructions on how to vote on Polkadot OpenGov referenda, check\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184120-polkadot-opengov-how-to-vote"},"this support guide.")),(0,i.kt)("admonition",{title:"Polkadot OpenGov uses Conviction Voting Pallet (Not Democracy Pallet)",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"Use ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting.vote")," for voting on Referenda in Polkadot OpenGov instead of ",(0,i.kt)("inlineCode",{parentName:"p"},"democracy.vote"),"\n(which only works for the old version of governance).")),(0,i.kt)("h3",{id:"removing-votes"},"Removing Votes"),(0,i.kt)("p",null,"To remove votes, you need to use the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics tab")," and\ncall the ",(0,i.kt)("inlineCode",{parentName:"p"},"removeVote")," function through the ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting")," pallet."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"rm-vote",src:a(28422).Z,width:"2388",height:"594"})),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"class")," is the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins"},"OpenGov track")," of the referendum you voted\non and the ",(0,i.kt)("inlineCode",{parentName:"p"},"index")," is the referendum number."),(0,i.kt)("h3",{id:"removing-expired-voting-locks"},"Removing Expired Voting Locks"),(0,i.kt)("p",null,"To remove an expired lock, you need to use the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics tab")," and call the ",(0,i.kt)("inlineCode",{parentName:"p"},"unlock")," function through\nthe ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting")," pallet. Note that if you voted on referenda in multiple tracks, the tokens\nwill be unlocked after removing votes and unlocking on all the tracks. Similarly, if you you\n",(0,i.kt)("a",{parentName:"p",href:"#delegations"},"delegated")," on multiple tracks, the funds will be unlocked after\n",(0,i.kt)("a",{parentName:"p",href:"#undelegate-votes"},"undelegating")," and unlocking on all the tracks."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"rm-voting-lock",src:a(43577).Z,width:"2382",height:"684"})),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"class")," is the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins"},"OpenGov track")," where you have the lock."),(0,i.kt)("p",null,"For additional instructions, check\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184129-polkadot-js-ui-how-to-remove-expired-referenda-locks"},"this support guide.")),(0,i.kt)("h2",{id:"delegations"},"Delegations"),(0,i.kt)("admonition",{title:"Video Tutorial about Delegations using the Polkadot-JS UI",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"See ",(0,i.kt)("a",{parentName:"p",href:"https://youtu.be/PNGs11EvCB0"},"this video tutorial")," to learn about how to delegate, modify\ndelegations and remove delegations using the Polkadot-JS UI.")),(0,i.kt)("p",null,"For an overview of how delegation works in Polkadot OpenGov, check out the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#multirole-delegation"},"Multirole Delegation")," section on the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Learn Polkadot OpenGov")," page."),(0,i.kt)("p",null,"Instructions to do delegations with Polkadot-JS are also available on the\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184776-polkadot-js-ui-how-to-delegate-your-voting-power-on-polkadot-opengov"},"Support Pages"),"."),(0,i.kt)("h3",{id:"delegate-votes"},"Delegate Votes"),(0,i.kt)("p",null,'You can start delegating your votes by clicking the "Delegate" button on\n',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda"),"."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-start",src:a(90691).Z,width:"1055",height:"497"})),(0,i.kt)("p",null,"If it is the first time you delegate or vote, there will be a banner message. You can delegate on a\nsingle track or all the tracks. You have an option to specify the number of votes (i.e., the number\nof tokens) and the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#voluntary-locking"},"conviction multiplier"),'. After\nclicking "Next", you will need to specify the account to delegate your votes to, and after clicking\n"Delegate" and "Sign and Submit" your delegations will appear for each track (see below).'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-allTracks",src:a(62428).Z,width:"2116",height:"1438"})),(0,i.kt)("p",null,"Note that if you want to delegate just a few tracks, you have two options:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},'Repeat the process using the "Delegate" button multiple times'),(0,i.kt)("li",{parentName:"ul"},"Issue a batch call with multiple ",(0,i.kt)("inlineCode",{parentName:"li"},"convictionVoting.delegate")," extrinsics under\n",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics"))),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-delegate",src:a(54853).Z,width:"2694",height:"1104"})),(0,i.kt)("p",null,'By clicking on "Add item" you can add new extrinsics for multiple tracks.'),(0,i.kt)("h3",{id:"undelegate-votes"},"Undelegate Votes"),(0,i.kt)("p",null,'The "Delegate" button on ',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda")," is only\nfor delegating votes. You cannot undelegate or modify your delegations. If you wish to undelegate,\nyou will need to go to ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics")," and\nsubmit a ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting.undelegate")," extrinsic, specifying the track you wish to undelegate."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-undelegate",src:a(9459).Z,width:"2708",height:"632"})),(0,i.kt)("p",null,'Undelegated tracks will show up as "0 votes" on the Delegate tab.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-undelegate",src:a(93996).Z,width:"2128",height:"1432"})),(0,i.kt)("p",null,"After you undelegated, the conviction lock will start the countdown, and your funds will be\navailable for unlocking after the countdown ends."),(0,i.kt)("h3",{id:"remove-expired-locks-from-delegations"},"Remove Expired Locks from Delegations"),(0,i.kt)("p",null,"To remove expired locks from delegations, you can\n",(0,i.kt)("a",{parentName:"p",href:"#removing-expired-voting-locks"},"follow the same procedure as how to remove expired voting locks"),"."),(0,i.kt)("h3",{id:"modify-your-delegations"},"Modify your Delegations"),(0,i.kt)("p",null,'The "Delegate" button on ',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda")," is only\nfor delegating votes. You cannot undelegate or modify your delegations. If you wish to update the\ndelegated account, the conviction, and the number of votes you will need to go to\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics"),", ",(0,i.kt)("a",{parentName:"p",href:"#undelegate-votes"},"undelegate"),"\nthe track and ",(0,i.kt)("a",{parentName:"p",href:"#delegate-votes"},"delegate")," again with updated information."),(0,i.kt)("h2",{id:"claiming-opengov-deposits"},"Claiming OpenGov Deposits"),(0,i.kt)("admonition",{title:"Video Tutorial about OpenGov deposits using the Polkadot-JS UI",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"See ",(0,i.kt)("a",{parentName:"p",href:"https://youtu.be/kkEq5cqW2Pk"},"this video tutorial")," to learn about how to claim OpenGov deposits\nusing the Polkadot-JS UI.")),(0,i.kt)("h3",{id:"claiming-the-preimage-and-decision-deposits"},"Claiming the Preimage and Decision Deposits"),(0,i.kt)("p",null,"After a referendum finishes its life cycle (and gets approved or rejected or timed out), the\npreimage and decision deposits can be claimed. For claiming the preimage deposit, navigate to\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Governance > Preimages")," and click on\nunnote button shown on the preimage you submitted."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Claim Preimage Deposit",src:a(80560).Z,width:"2828",height:"362"})),(0,i.kt)("p",null,"Similarly, to claim the decision deposit, navigate to\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Polkadot-JS UI > Governance > Referenda")," and scroll down\nto the end of the page to click on the referenda with the decision deposit and claim it."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Claim Referendum Deposits",src:a(62248).Z,width:"2830",height:"444"})),(0,i.kt)("h3",{id:"claiming-the-referendum-submission-deposit"},"Claiming the Referendum Submission Deposit"),(0,i.kt)("p",null,"The submission deposit for a referendum can be claimed\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/cfb29254f74412cea35e8048d8aea94bc789fcb1/substrate/frame/referenda/src/types.rs#L261"},"only if the referendum was ",(0,i.kt)("inlineCode",{parentName:"a"},"Approved")," or ",(0,i.kt)("inlineCode",{parentName:"a"},"Canceled")),".\nThe submission deposit can be claimed by issuing the ",(0,i.kt)("inlineCode",{parentName:"p"},"refundSubmissionDeposit")," extrinsic."),(0,i.kt)("p",null,"Users can not refund their submission deposit while the referendum is ",(0,i.kt)("inlineCode",{parentName:"p"},"Ongoing")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"Rejected"),".\nSimilarly, users cannot refund their submission deposit if the proposal has ",(0,i.kt)("inlineCode",{parentName:"p"},"TimedOut")," (failing to\nsubmit the decision deposit within a\n",(0,i.kt)(r.Z,{network:"polkadot",path:"const.referenda.undecidingTimeout",defaultValue:201600,filter:"blocksToDays",mdxType:"RPC"}),"","-day\nperiod will lead to a referendum timeout). This behavior exists so that users can refrain from\nspamming the chain with proposals that have no interest from the community. If a proposal is in the\n",(0,i.kt)("inlineCode",{parentName:"p"},"TimedOut")," state, any user can call ",(0,i.kt)("inlineCode",{parentName:"p"},"slash_proposal_deposit"),", which will move the funds from the\nuser to a runtime-configured account, like the treasury."),(0,i.kt)("p",null,"To refund your slashed deposit, you can start a new referendum and specifically request a refund\nfrom the treasury. You need to make sure you have enough balance for a new submission and decision\ndeposit, and you will need to select the right track to ask for a refund. For example, the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#small-tipper"},"Small Tipper Track")," would be fine for any kind of\ndeposit refund up to 250 DOT."),(0,i.kt)("h2",{id:"cancel-or-kill-a-referendum"},"Cancel or Kill a Referendum"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Anybody can cancel an ongoing referendum (i.e., a referendum within the Lead-in or\nvoting/confirmation period). For more information about the referenda timeline in Polkadot OpenGov,\nsee the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#referenda-timeline"},"dedicated page"),"."),(0,i.kt)("p",{parentName:"admonition"},"To successfully cancel a referendum through the track ",(0,i.kt)("inlineCode",{parentName:"p"},"20 / Referendum Canceller"),", you will need to\nattain\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#referendum-canceller"},"specific approval and support levels"),".")),(0,i.kt)("p",null,"To cancel a referendum, you need first to submit a preimage with the ",(0,i.kt)("inlineCode",{parentName:"p"},"referenda.cancel")," extrinsic.\nGo to the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Polkadot-JS UI > Governance > Referenda"),' and\nclick on the "Add Preimage" button. You must specify the ',(0,i.kt)("inlineCode",{parentName:"p"},"referenda.cancel")," extrinsic with the index\nequal to the ongoing Referendum you wish to cancel. In the screenshot below, the Referendum to be\ncancelled is 249."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"cancel-referenda-preimage-creation",src:a(78996).Z,width:"2144",height:"944"})),(0,i.kt)("p",null,"This call will cancel the referendum and return the deposit. You can also kill a referendum using\nthe ",(0,i.kt)("inlineCode",{parentName:"p"},"referenda.kill")," extrinsic. This will cancel the referendum and slash the deposit."),(0,i.kt)("admonition",{title:"Preimage Submission Deposit",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"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\n41 DOT. Ensure you have enough account\nbalance to pay for this submission deposit as well as the transaction fees.")),(0,i.kt)("p",null,"Once a preimage is submitted, it can be checked under\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/preimages"},"Governance > Preimages"),"."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"cancel-referenda-preimage-check",src:a(16212).Z,width:"2758",height:"190"})),(0,i.kt)("p",null,"You must copy the preimage to use it when you submit your proposal. To submit the proposal to cancel\nreferendum 249, for example, you need to go under\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda"),' and click the "Submit Proposal"\nbutton.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"cancel-referenda-proposal",src:a(81405).Z,width:"2130",height:"1226"})),(0,i.kt)("p",null,"You must specify the account to submit the proposal (this can differ from the account used to create\nthe preimage). Then you will need to specify the track ",(0,i.kt)("inlineCode",{parentName:"p"},"20 / Referendum Canceller")," and add the\npreimage hash containing the specific action that will be enacted if the referendum passes. Note\nthat a submission deposit of\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.referenda.submissionDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"","\nwill be reserved for submitting the proposal."),(0,i.kt)("p",null,"Once the proposal has been submitted, it will stay in the Lead-in period until there is enough space\nwithin the track, and a\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#polkadot-opengov-terminology-and-parameters"},"track-dependent preparation period and decision deposit"),"\nhave been met. Failing to submit the decision deposit within a\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.referenda.undecidingTimeout",defaultValue:201600,filter:"blocksToDays",mdxType:"RPC"}),"","-day\nperiod will lead to a referendum timeout."),(0,i.kt)("h2",{id:"interpreting-on-chain-voting-data"},"Interpreting On-Chain Voting Data"),(0,i.kt)("p",null,"Below is the numeric conversion of the type of vote and conviction displayed in a block explorer."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"Nay 0.1x => 0\nNay 1x => 1\nNay 2x => 2\nNay 3x => 3\nNay 4x => 4\nNay 5x => 5\nNay 6x => 6\n\nAye 0.1x => 128\nAye 1x => 129\nAye 2x => 130\nAye 3x => 131\nAye 4x => 132\nAye 5x => 133\nAye 6x => 134\n")),(0,i.kt)("p",null,"Take, for example, the information provided for\n",(0,i.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/22460598-2"},"this vote"),". The vote ",(0,i.kt)("inlineCode",{parentName:"p"},"131")," means the account voted\nAye with 3x conviction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"vote_numeric_conversion",src:a(38119).Z,width:"870",height:"255"})),(0,i.kt)("p",null,'At first glance, it may not be easy to interpret what you voted on. We need to take a step back and\nconsider the "voting data" at the binary level.'),(0,i.kt)("p",null,"The vote is stored as a byte using a bitfield data structure and displayed on the block explorer as\na decimal integer. The bitfield stores both the conviction and aye/nay boolean, where the boolean is\nrepresented using the MSB of the byte. This would mean that the seven remaining bits are grouped to\nstore the conviction."))}k.isMDXComponent=!0},16212:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/cancel-referenda-preimage-check-45ef7f984450113a2b1a87e9e2751d69.png"},78996:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/cancel-referenda-preimage-creation-3923463db47aec298f74a426dba23166.png"},81405:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/cancel-referenda-proposal-b9c5e90784ec8216360053d8bda84980.png"},80560:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/claim-preimage-deposit-069843b91eba35d4829b237b59ab2d12.png"},62248:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/claim-referendum-decision-deposit-6352bbad189dac6fe7a651b5a3c8f5a5.png"},78249:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/encoded-call-hash-4e0347923993beea4d12d5a787649f8f.png"},80474:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/opengov-submit-preimage-whitelist-67d383745b6e7b3ef31a37567e044e80.png"},10579:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/opengov-submit-preimage-ddb9c9c348a6c169f24bf70b9439712e.png"},31993:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/opengov-submit-proposal-0c82b35f3f7b1d9e66130a621b76c44b.png"},62428:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-allTracks-788efa580f296aa78b65b77691570181.png"},54853:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-delegate-3bcce735bcc35b831079cd44ad0eef15.png"},90691:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-start-c8186f8875fd402b993abfd5ab09f515.png"},9459:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-undelegate-a5018d2ecd2d5523f711199cd6fa1e63.png"},93996:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-undelegated-9b5efde53d2016c4e4b1f0f6b651ecf5.png"},28422:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/rm-vote-8572ff30a00c8d6fe903fae7a39147f4.png"},43577:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/rm-voting-lock-214119c2fcfe92488190b321cdfe823a.png"},38119:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/vote_numeric_conversion-6aef93a6fd1ea92beabfcbe058ac876b.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/c07c2447.b6206f94.js b/assets/js/c07c2447.b6206f94.js new file mode 100644 index 000000000000..730cc2a90b60 --- /dev/null +++ b/assets/js/c07c2447.b6206f94.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[7654],{35703:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});var o=a(67294);const n=function(e){var t,a=e.message,n=(0,o.useState)(!0),i=n[0],r=n[1];return o.createElement(o.Fragment,null,i&&o.createElement("div",{className:"message-box"},o.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),o.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>u});var o=a(74165),n=a(15861),i=a(67294),r=a(87152),s=a(9712),l=a(67425);function p(e,t,a){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,o.Z)().mark((function e(t,a,n){var i,l,p,d,c;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return p=new r.U(i),e.next=21,s.G.create({provider:p});case 21:d=e.sent,(c=a.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,a,o){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,o);break;case"precise":(0,l.Precise)(e,a,o);break;case"blocksToDays":(0,l.BlocksToDays)(e,o);break;case"erasToDays":(0,l.ErasToDays)(e,o,a);break;case"percentage":(0,l.Percentage)(e,o);break;case"permillToPercent":(0,l.PermillToPercent)(e,o);break;case"arrayLength":(0,l.ArrayLength)(e,o);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,a=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),u=d[0],h=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?c(r.toString(),l,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;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,n.Z)((0,o.Z)().mark((function e(){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,a,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?c(n,l,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),u}},67425:e=>{var t="polkadot",a="kusama",o="statemine",n="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===n)l=3;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===n)s=1;else{if(r!==a&&r!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},40569:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>g,frontMatter:()=>p,metadata:()=>c,toc:()=>h});var o=a(87462),n=a(63366),i=(a(67294),a(3905)),r=a(47940),s=a(35703),l=["components"],p={id:"learn-guides-polkadot-opengov",title:"Polkadot-JS Guides about OpenGov",sidebar_label:"OpenGov Guides",description:"Polkadot-JS Guides about Polkadot OpenGov.",keywords:["opengov","polkadot opengov","referenda","cancel","polkadot-js"],slug:"../learn-guides-polkadot-opengov"},d=void 0,c={unversionedId:"learn/learn-guides-polkadot-opengov",id:"learn/learn-guides-polkadot-opengov",title:"Polkadot-JS Guides about OpenGov",description:"Polkadot-JS Guides about Polkadot OpenGov.",source:"@site/../docs/learn/learn-guides-polkadot-opengov.md",sourceDirName:"learn",slug:"/learn-guides-polkadot-opengov",permalink:"/docs/learn-guides-polkadot-opengov",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-polkadot-opengov.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-polkadot-opengov",title:"Polkadot-JS Guides about OpenGov",sidebar_label:"OpenGov Guides",description:"Polkadot-JS Guides about Polkadot OpenGov.",keywords:["opengov","polkadot opengov","referenda","cancel","polkadot-js"],slug:"../learn-guides-polkadot-opengov"},sidebar:"docs",previous:{title:"Nomination Pool Guides",permalink:"/docs/learn-guides-staking-pools"},next:{title:"Treasury Guides",permalink:"/docs/learn-guides-treasury"}},u={},h=[{value:"Create a Referenda Proposal",id:"create-a-referenda-proposal",level:2},{value:"Submitting a Preimage",id:"submitting-a-preimage",level:3},{value:"Submitting a Proposal",id:"submitting-a-proposal",level:3},{value:"Submitting a Referendum on the Whitelisted Caller Track",id:"submitting-a-referendum-on-the-whitelisted-caller-track",level:3},{value:"Voting on Referenda",id:"voting-on-referenda",level:2},{value:"Removing Votes",id:"removing-votes",level:3},{value:"Removing Expired Voting Locks",id:"removing-expired-voting-locks",level:3},{value:"Delegations",id:"delegations",level:2},{value:"Delegate Votes",id:"delegate-votes",level:3},{value:"Undelegate Votes",id:"undelegate-votes",level:3},{value:"Remove Expired Locks from Delegations",id:"remove-expired-locks-from-delegations",level:3},{value:"Modify your Delegations",id:"modify-your-delegations",level:3},{value:"Claiming OpenGov Deposits",id:"claiming-opengov-deposits",level:2},{value:"Claiming the Preimage and Decision Deposits",id:"claiming-the-preimage-and-decision-deposits",level:3},{value:"Claiming the Referendum Submission Deposit",id:"claiming-the-referendum-submission-deposit",level:3},{value:"Cancel or Kill a Referendum",id:"cancel-or-kill-a-referendum",level:2},{value:"Interpreting On-Chain Voting Data",id:"interpreting-on-chain-voting-data",level:2}],m={toc:h},k="wrapper";function g(e){var t=e.components,p=(0,n.Z)(e,l);return(0,i.kt)(k,(0,o.Z)({},m,p,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(s.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"this page")," to learn about Polkadot OpenGov."),(0,i.kt)("p",null,"This guide will instruct token holders how to propose and vote on public referenda using the\nReferenda module (OpenGov). Below are a few links to stay informed and directly engage with the\ncommunity."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction")," - a place to discuss\ngovernance and the future of Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Kusama-Direction:parity.io"},"Kusama Direction")," - a place to discuss\ngovernance and the future of Kusama."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.polkassembly.io"},"Polkadot")," and ",(0,i.kt)("a",{parentName:"li",href:"https://kusama.polkassembly.io"},"Kusama"),"\nPolkassembly - for current referenda, latest proposals, motions, treasury proposals, tips,\nbounties, and more."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#dailydigest:web3.foundation"},"Polkadot Daily Digest")," - News about what is\nhappening in the Polkadot ecosystem, published every weekday except holidays.")),(0,i.kt)("h2",{id:"create-a-referenda-proposal"},"Create a Referenda Proposal"),(0,i.kt)("h3",{id:"submitting-a-preimage"},"Submitting a Preimage"),(0,i.kt)("p",null,"The act of creating a proposal is split from submitting the preimage for the proposal since the\nstorage cost of submitting a large preimage could be expensive. Allowing the preimage submission to\ncome as a separate transaction means that another account could submit the preimage for you and pay\nthe fee. The example below demonstrates the creation of a preimage to propose and approve a spend of\ntreasury funds."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"submit preimage",src:a(10579).Z,width:"1078",height:"606"})),(0,i.kt)("p",null,"Follow the steps below to submit a preimage as shown in the screenshot above."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Navigate to Governance -> Referenda."),(0,i.kt)("li",{parentName:"ol"},'Click on the "Add preimage" button.'),(0,i.kt)("li",{parentName:"ol"},"From the ",(0,i.kt)("em",{parentName:"li"},"propose")," drop-down field, select ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury"),"."),(0,i.kt)("li",{parentName:"ol"},"From the unlabeled drop-down field to the right of the ",(0,i.kt)("em",{parentName:"li"},"propose")," drop-down field, select\n",(0,i.kt)("inlineCode",{parentName:"li"},"spendLocal(amount, beneficiary)"),"."),(0,i.kt)("li",{parentName:"ol"},"In the ",(0,i.kt)("inlineCode",{parentName:"li"},"amount: Compact (BalanceOf)")," text field, enter the spend amount."),(0,i.kt)("li",{parentName:"ol"},"The ",(0,i.kt)("inlineCode",{parentName:"li"},"beneficiary: MultiAddress (AccountIdLookupOf)")," drop-down field will have ",(0,i.kt)("inlineCode",{parentName:"li"},"Id")," selected by\ndefault. Select the beneficiary from the ",(0,i.kt)("inlineCode",{parentName:"li"},"Id: AccountId")," drop-down field.")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Copy the ",(0,i.kt)("inlineCode",{parentName:"p"},"preimage hash"),' value before clicking the "Submit preimage" button.')),(0,i.kt)("ol",{start:7},(0,i.kt)("li",{parentName:"ol"},'Click the "Submit preimage" button.')),(0,i.kt)("p",null,"After the preimage is submitted successfully on-chain, Polkadot-JS UI lists it under the tab of\nGovernance -> Preimages."),(0,i.kt)("h3",{id:"submitting-a-proposal"},"Submitting a Proposal"),(0,i.kt)("p",null,'Submitting a proposal requires you to bond some tokens. On Polkadot-JS UI, you can navigate to the\nGovernance -> Referenda to make a new proposal. In order to submit a proposal, you will need to\nsubmit what\'s called the preimage hash. The preimage hash is simply the hash of the proposal to be\nenacted. The easiest way to get the preimage hash is by clicking on the "Submit preimage" button as\nshown in the previous section.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"submit proposal",src:a(31993).Z,width:"1936",height:"1118"})),(0,i.kt)("p",null,"The proposal will be registered from the account selected and the balance lock will be applied to\nit. An appropriate origin must be chosen, as each origin has different privileges, and acceptance\ncriteria. After entering the hash of the preimage for the proposal, the preimage length field is\nautomatically populated. The enactment delay can be specified either as a block number, or as a\nspecific number of blocks after the referendum is approved. The deposit for this proposal will be\nlocked for the referendum duration."),(0,i.kt)("h3",{id:"submitting-a-referendum-on-the-whitelisted-caller-track"},"Submitting a Referendum on the Whitelisted Caller Track"),(0,i.kt)("p",null,"Let's consider increasing the number of validators participating in parachain consensus. You could\n",(0,i.kt)("a",{parentName:"p",href:"#submitting-a-preimage"},"submit a preimage")," with the call that sets the number of validators to\n1,000 and submit a referendum to the Root track directly. However, this requires a large decision\ndeposit and has very conservative passing parameters such that it will probably need the entire\n28-day voting period to pass."),(0,i.kt)("p",null,"Operations that are deemed safe or time critical by the Polkadot Technical Fellowship can use the\nWhitelisted Caller track. This track requires less turnout in the first half of the decision period\nso that it can pass more quickly. This track is typically used for more neutral, technical proposals\nlike runtime upgrades or changing the system's parachain validation configuration."),(0,i.kt)("p",null,"Using the Whitelisted Caller track requires some special calls. Submitting a referendum in the same\nform as other tracks will not work. Namely, rather than voting on a particular ",(0,i.kt)("inlineCode",{parentName:"p"},"proposal"),", the\nWhitelisted Caller track requires a vote to ",(0,i.kt)("inlineCode",{parentName:"p"},"dispatch")," the ",(0,i.kt)("inlineCode",{parentName:"p"},"proposal")," via the Whitelist pallet.\nBefore opening a referendum on this track, you should also attempt to get a positive signal from the\nFellowship that they will whitelist the proposal. If they do not, then even if the public referendum\npasses, it will not execute."),(0,i.kt)("p",null,"Below are the steps to follow when submitting a proposal to the Whitelist track."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"#submitting-a-preimage"},"Submit a preimage")," with the call to ",(0,i.kt)("em",{parentName:"li"},"dispatch")," the proposal (",(0,i.kt)("inlineCode",{parentName:"li"},"call"),") you\nwant to submit -- ",(0,i.kt)("inlineCode",{parentName:"li"},"whitelist.dispatchWhitelistedCallWithPreimage(call)")," -- and obtain the preimage\nhash. This is the preimage for the ",(0,i.kt)("em",{parentName:"li"},"public referendum")," on the Whitelisted Caller track.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"preimage-whitelist",src:a(80474).Z,width:"2146",height:"1113"})),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Obtain the hash of ",(0,i.kt)("inlineCode",{parentName:"p"},"call"),". The Polkadot Fellowship needs to start a Fellowship referendum to\nwhitelist the call with ",(0,i.kt)("inlineCode",{parentName:"p"},"whitelist.whitelistCall(callHash)"),". The Fellowship referendum gets voted\non by the Polkadot Fellowship members only."),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"call-hash",src:a(78249).Z,width:"2257",height:"858"}))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The public now votes on the referendum. Someone must place a decision deposit to go into the\ndeciding phase.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Once passed, it gets enacted successfully as long as the call has been whitelisted by the\nFellowship."))),(0,i.kt)("p",null,"Note that the public referendum and Fellowship referendum can happen simultaneously. However, if the\nFellowship does not whitelist the call, you must submit it directly to the Root origin."),(0,i.kt)("h2",{id:"voting-on-referenda"},"Voting on Referenda"),(0,i.kt)("p",null,"As Polkadot OpenGov takes both the approval and support into account, there are four options to\nchoose from when voting on a referendum:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Aye"),(0,i.kt)("li",{parentName:"ul"},"Nay"),(0,i.kt)("li",{parentName:"ul"},"Split"),(0,i.kt)("li",{parentName:"ul"},"Abstain")),(0,i.kt)("p",null,"Also, you have to specify the conviction multiplier for this vote. The longer you are willing to\nlock your tokens, the stronger your vote will be weighted. Unwillingness to lock your tokens means\nthat your vote only counts for 10% of the tokens that you hold."),(0,i.kt)("p",null,"For detailed instructions on how to vote on Polkadot OpenGov referenda, check\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184120-polkadot-opengov-how-to-vote"},"this support guide.")),(0,i.kt)("admonition",{title:"Polkadot OpenGov uses Conviction Voting Pallet (Not Democracy Pallet)",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"Use ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting.vote")," for voting on Referenda in Polkadot OpenGov instead of ",(0,i.kt)("inlineCode",{parentName:"p"},"democracy.vote"),"\n(which only works for the old version of governance).")),(0,i.kt)("h3",{id:"removing-votes"},"Removing Votes"),(0,i.kt)("p",null,"To remove votes, you need to use the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics tab")," and\ncall the ",(0,i.kt)("inlineCode",{parentName:"p"},"removeVote")," function through the ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting")," pallet."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"rm-vote",src:a(28422).Z,width:"2388",height:"594"})),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"class")," is the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins"},"OpenGov track")," of the referendum you voted\non and the ",(0,i.kt)("inlineCode",{parentName:"p"},"index")," is the referendum number."),(0,i.kt)("h3",{id:"removing-expired-voting-locks"},"Removing Expired Voting Locks"),(0,i.kt)("p",null,"To remove an expired lock, you need to use the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics tab")," and call the ",(0,i.kt)("inlineCode",{parentName:"p"},"unlock")," function through\nthe ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting")," pallet. Note that if you voted on referenda in multiple tracks, the tokens\nwill be unlocked after removing votes and unlocking on all the tracks. Similarly, if you you\n",(0,i.kt)("a",{parentName:"p",href:"#delegations"},"delegated")," on multiple tracks, the funds will be unlocked after\n",(0,i.kt)("a",{parentName:"p",href:"#undelegate-votes"},"undelegating")," and unlocking on all the tracks."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"rm-voting-lock",src:a(43577).Z,width:"2382",height:"684"})),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"class")," is the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins"},"OpenGov track")," where you have the lock."),(0,i.kt)("p",null,"For additional instructions, check\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184129-polkadot-js-ui-how-to-remove-expired-referenda-locks"},"this support guide.")),(0,i.kt)("h2",{id:"delegations"},"Delegations"),(0,i.kt)("admonition",{title:"Video Tutorial about Delegations using the Polkadot-JS UI",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"See ",(0,i.kt)("a",{parentName:"p",href:"https://youtu.be/PNGs11EvCB0"},"this video tutorial")," to learn about how to delegate, modify\ndelegations and remove delegations using the Polkadot-JS UI.")),(0,i.kt)("p",null,"For an overview of how delegation works in Polkadot OpenGov, check out the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#multirole-delegation"},"Multirole Delegation")," section on the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Learn Polkadot OpenGov")," page."),(0,i.kt)("p",null,"Instructions to do delegations with Polkadot-JS are also available on the\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184776-polkadot-js-ui-how-to-delegate-your-voting-power-on-polkadot-opengov"},"Support Pages"),"."),(0,i.kt)("h3",{id:"delegate-votes"},"Delegate Votes"),(0,i.kt)("p",null,'You can start delegating your votes by clicking the "Delegate" button on\n',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda"),"."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-start",src:a(90691).Z,width:"1055",height:"497"})),(0,i.kt)("p",null,"If it is the first time you delegate or vote, there will be a banner message. You can delegate on a\nsingle track or all the tracks. You have an option to specify the number of votes (i.e., the number\nof tokens) and the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#voluntary-locking"},"conviction multiplier"),'. After\nclicking "Next", you will need to specify the account to delegate your votes to, and after clicking\n"Delegate" and "Sign and Submit" your delegations will appear for each track (see below).'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-allTracks",src:a(62428).Z,width:"2116",height:"1438"})),(0,i.kt)("p",null,"Note that if you want to delegate just a few tracks, you have two options:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},'Repeat the process using the "Delegate" button multiple times'),(0,i.kt)("li",{parentName:"ul"},"Issue a batch call with multiple ",(0,i.kt)("inlineCode",{parentName:"li"},"convictionVoting.delegate")," extrinsics under\n",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics"))),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-delegate",src:a(54853).Z,width:"2694",height:"1104"})),(0,i.kt)("p",null,'By clicking on "Add item" you can add new extrinsics for multiple tracks.'),(0,i.kt)("h3",{id:"undelegate-votes"},"Undelegate Votes"),(0,i.kt)("p",null,'The "Delegate" button on ',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda")," is only\nfor delegating votes. You cannot undelegate or modify your delegations. If you wish to undelegate,\nyou will need to go to ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics")," and\nsubmit a ",(0,i.kt)("inlineCode",{parentName:"p"},"convictionVoting.undelegate")," extrinsic, specifying the track you wish to undelegate."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-undelegate",src:a(9459).Z,width:"2708",height:"632"})),(0,i.kt)("p",null,'Undelegated tracks will show up as "0 votes" on the Delegate tab.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"js-delegation-undelegate",src:a(93996).Z,width:"2128",height:"1432"})),(0,i.kt)("p",null,"After you undelegated, the conviction lock will start the countdown, and your funds will be\navailable for unlocking after the countdown ends."),(0,i.kt)("h3",{id:"remove-expired-locks-from-delegations"},"Remove Expired Locks from Delegations"),(0,i.kt)("p",null,"To remove expired locks from delegations, you can\n",(0,i.kt)("a",{parentName:"p",href:"#removing-expired-voting-locks"},"follow the same procedure as how to remove expired voting locks"),"."),(0,i.kt)("h3",{id:"modify-your-delegations"},"Modify your Delegations"),(0,i.kt)("p",null,'The "Delegate" button on ',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda")," is only\nfor delegating votes. You cannot undelegate or modify your delegations. If you wish to update the\ndelegated account, the conviction, and the number of votes you will need to go to\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Developer > Extrinsics"),", ",(0,i.kt)("a",{parentName:"p",href:"#undelegate-votes"},"undelegate"),"\nthe track and ",(0,i.kt)("a",{parentName:"p",href:"#delegate-votes"},"delegate")," again with updated information."),(0,i.kt)("h2",{id:"claiming-opengov-deposits"},"Claiming OpenGov Deposits"),(0,i.kt)("admonition",{title:"Video Tutorial about OpenGov deposits using the Polkadot-JS UI",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"See ",(0,i.kt)("a",{parentName:"p",href:"https://youtu.be/kkEq5cqW2Pk"},"this video tutorial")," to learn about how to claim OpenGov deposits\nusing the Polkadot-JS UI.")),(0,i.kt)("h3",{id:"claiming-the-preimage-and-decision-deposits"},"Claiming the Preimage and Decision Deposits"),(0,i.kt)("p",null,"After a referendum finishes its life cycle (and gets approved or rejected or timed out), the\npreimage and decision deposits can be claimed. For claiming the preimage deposit, navigate to\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Governance > Preimages")," and click on\nunnote button shown on the preimage you submitted."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Claim Preimage Deposit",src:a(80560).Z,width:"2828",height:"362"})),(0,i.kt)("p",null,"Similarly, to claim the decision deposit, navigate to\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Polkadot-JS UI > Governance > Referenda")," and scroll down\nto the end of the page to click on the referenda with the decision deposit and claim it."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Claim Referendum Deposits",src:a(62248).Z,width:"2830",height:"444"})),(0,i.kt)("h3",{id:"claiming-the-referendum-submission-deposit"},"Claiming the Referendum Submission Deposit"),(0,i.kt)("p",null,"The submission deposit for a referendum can be claimed\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/cfb29254f74412cea35e8048d8aea94bc789fcb1/substrate/frame/referenda/src/types.rs#L261"},"only if the referendum was ",(0,i.kt)("inlineCode",{parentName:"a"},"Approved")," or ",(0,i.kt)("inlineCode",{parentName:"a"},"Canceled")),".\nThe submission deposit can be claimed by issuing the ",(0,i.kt)("inlineCode",{parentName:"p"},"refundSubmissionDeposit")," extrinsic."),(0,i.kt)("p",null,"Users can not refund their submission deposit while the referendum is ",(0,i.kt)("inlineCode",{parentName:"p"},"Ongoing")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"Rejected"),".\nSimilarly, users cannot refund their submission deposit if the proposal has ",(0,i.kt)("inlineCode",{parentName:"p"},"TimedOut")," (failing to\nsubmit the decision deposit within a\n",(0,i.kt)(r.Z,{network:"polkadot",path:"const.referenda.undecidingTimeout",defaultValue:201600,filter:"blocksToDays",mdxType:"RPC"}),"","-day\nperiod will lead to a referendum timeout). This behavior exists so that users can refrain from\nspamming the chain with proposals that have no interest from the community. If a proposal is in the\n",(0,i.kt)("inlineCode",{parentName:"p"},"TimedOut")," state, any user can call ",(0,i.kt)("inlineCode",{parentName:"p"},"slash_proposal_deposit"),", which will move the funds from the\nuser to a runtime-configured account, like the treasury."),(0,i.kt)("p",null,"To refund your slashed deposit, you can start a new referendum and specifically request a refund\nfrom the treasury. You need to make sure you have enough balance for a new submission and decision\ndeposit, and you will need to select the right track to ask for a refund. For example, the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#small-tipper"},"Small Tipper Track")," would be fine for any kind of\ndeposit refund up to 250 DOT."),(0,i.kt)("h2",{id:"cancel-or-kill-a-referendum"},"Cancel or Kill a Referendum"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Anybody can cancel an ongoing referendum (i.e., a referendum within the Lead-in or\nvoting/confirmation period). For more information about the referenda timeline in Polkadot OpenGov,\nsee the ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#referenda-timeline"},"dedicated page"),"."),(0,i.kt)("p",{parentName:"admonition"},"To successfully cancel a referendum through the track ",(0,i.kt)("inlineCode",{parentName:"p"},"20 / Referendum Canceller"),", you will need to\nattain\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#referendum-canceller"},"specific approval and support levels"),".")),(0,i.kt)("p",null,"To cancel a referendum, you need first to submit a preimage with the ",(0,i.kt)("inlineCode",{parentName:"p"},"referenda.cancel")," extrinsic.\nGo to the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Polkadot-JS UI > Governance > Referenda"),' and\nclick on the "Add Preimage" button. You must specify the ',(0,i.kt)("inlineCode",{parentName:"p"},"referenda.cancel")," extrinsic with the index\nequal to the ongoing Referendum you wish to cancel. In the screenshot below, the Referendum to be\ncancelled is 249."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"cancel-referenda-preimage-creation",src:a(78996).Z,width:"2144",height:"944"})),(0,i.kt)("p",null,"This call will cancel the referendum and return the deposit. You can also kill a referendum using\nthe ",(0,i.kt)("inlineCode",{parentName:"p"},"referenda.kill")," extrinsic. This will cancel the referendum and slash the deposit."),(0,i.kt)("admonition",{title:"Preimage Submission Deposit",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"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\n41 DOT. Ensure you have enough account\nbalance to pay for this submission deposit as well as the transaction fees.")),(0,i.kt)("p",null,"Once a preimage is submitted, it can be checked under\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/preimages"},"Governance > Preimages"),"."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"cancel-referenda-preimage-check",src:a(16212).Z,width:"2758",height:"190"})),(0,i.kt)("p",null,"You must copy the preimage to use it when you submit your proposal. To submit the proposal to cancel\nreferendum 249, for example, you need to go under\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"Governance > Referenda"),' and click the "Submit Proposal"\nbutton.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"cancel-referenda-proposal",src:a(81405).Z,width:"2130",height:"1226"})),(0,i.kt)("p",null,"You must specify the account to submit the proposal (this can differ from the account used to create\nthe preimage). Then you will need to specify the track ",(0,i.kt)("inlineCode",{parentName:"p"},"20 / Referendum Canceller")," and add the\npreimage hash containing the specific action that will be enacted if the referendum passes. Note\nthat a submission deposit of\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.referenda.submissionDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"","\nwill be reserved for submitting the proposal."),(0,i.kt)("p",null,"Once the proposal has been submitted, it will stay in the Lead-in period until there is enough space\nwithin the track, and a\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#polkadot-opengov-terminology-and-parameters"},"track-dependent preparation period and decision deposit"),"\nhave been met. Failing to submit the decision deposit within a\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.referenda.undecidingTimeout",defaultValue:201600,filter:"blocksToDays",mdxType:"RPC"}),"","-day\nperiod will lead to a referendum timeout."),(0,i.kt)("h2",{id:"interpreting-on-chain-voting-data"},"Interpreting On-Chain Voting Data"),(0,i.kt)("p",null,"Below is the numeric conversion of the type of vote and conviction displayed in a block explorer."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"Nay 0.1x => 0\nNay 1x => 1\nNay 2x => 2\nNay 3x => 3\nNay 4x => 4\nNay 5x => 5\nNay 6x => 6\n\nAye 0.1x => 128\nAye 1x => 129\nAye 2x => 130\nAye 3x => 131\nAye 4x => 132\nAye 5x => 133\nAye 6x => 134\n")),(0,i.kt)("p",null,"Take, for example, the information provided for\n",(0,i.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/extrinsic/22460598-2"},"this vote"),". The vote ",(0,i.kt)("inlineCode",{parentName:"p"},"131")," means the account voted\nAye with 3x conviction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"vote_numeric_conversion",src:a(38119).Z,width:"870",height:"255"})),(0,i.kt)("p",null,'At first glance, it may not be easy to interpret what you voted on. We need to take a step back and\nconsider the "voting data" at the binary level.'),(0,i.kt)("p",null,"The vote is stored as a byte using a bitfield data structure and displayed on the block explorer as\na decimal integer. The bitfield stores both the conviction and aye/nay boolean, where the boolean is\nrepresented using the MSB of the byte. This would mean that the seven remaining bits are grouped to\nstore the conviction."))}g.isMDXComponent=!0},16212:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/cancel-referenda-preimage-check-45ef7f984450113a2b1a87e9e2751d69.png"},78996:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/cancel-referenda-preimage-creation-3923463db47aec298f74a426dba23166.png"},81405:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/cancel-referenda-proposal-b9c5e90784ec8216360053d8bda84980.png"},80560:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/claim-preimage-deposit-069843b91eba35d4829b237b59ab2d12.png"},62248:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/claim-referendum-decision-deposit-6352bbad189dac6fe7a651b5a3c8f5a5.png"},78249:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/encoded-call-hash-4e0347923993beea4d12d5a787649f8f.png"},80474:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/opengov-submit-preimage-whitelist-67d383745b6e7b3ef31a37567e044e80.png"},10579:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/opengov-submit-preimage-ddb9c9c348a6c169f24bf70b9439712e.png"},31993:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/opengov-submit-proposal-0c82b35f3f7b1d9e66130a621b76c44b.png"},62428:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-allTracks-788efa580f296aa78b65b77691570181.png"},54853:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-delegate-3bcce735bcc35b831079cd44ad0eef15.png"},90691:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-start-c8186f8875fd402b993abfd5ab09f515.png"},9459:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-undelegate-a5018d2ecd2d5523f711199cd6fa1e63.png"},93996:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/js-delegation-undelegated-9b5efde53d2016c4e4b1f0f6b651ecf5.png"},28422:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/rm-vote-8572ff30a00c8d6fe903fae7a39147f4.png"},43577:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/rm-voting-lock-214119c2fcfe92488190b321cdfe823a.png"},38119:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/vote_numeric_conversion-6aef93a6fd1ea92beabfcbe058ac876b.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/c8dd560b.53cc8c81.js b/assets/js/c8dd560b.53cc8c81.js deleted file mode 100644 index 342c35fc3ade..000000000000 --- a/assets/js/c8dd560b.53cc8c81.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[3978],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>d});var n=a(74165),o=a(15861),r=a(67294),i=a(87152),s=a(9712),p=a(67425);function u(e,t,a){return l.apply(this,arguments)}function l(){return(l=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var r,p,u,l,c;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,p=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return u=new i.U(r),e.next=21,s.G.create({provider:u});case 21:l=e.sent,(c=a.split(".")).forEach((function(e){e in l&&(l=l[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return p=l.toString(),e.abrupt("break",35);case 29:return e.next=31,l();case 31:return p=(p=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return e.abrupt("return",p);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,a,n){switch(t){case"humanReadable":(0,p.HumanReadable)(e,a,n);break;case"precise":(0,p.Precise)(e,a,n);break;case"blocksToDays":(0,p.BlocksToDays)(e,n);break;case"erasToDays":(0,p.ErasToDays)(e,n,a);break;case"percentage":(0,p.Percentage)(e,n);break;case"permillToPercent":(0,p.PermillToPercent)(e,n);break;case"arrayLength":(0,p.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const d=function(e){var t=e.network,a=e.path,i=e.defaultValue,s=e.filter,p=void 0===s?void 0:s,l=(0,r.useState)(""),d=l[0],m=l[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==p?c(i.toString(),p,t,m):m(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,n.Z)().mark((function e(){var o;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t,a,m);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==p?c(o,p,t,m):m(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),d}},67425:e=>{var t="polkadot",a="kusama",n="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,s){var p=void 0;if(i===t||i===o)p=3;else{if(i!==a&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");p=6}e=parseFloat(e),s((e=Number.isInteger(e/r[i].precision)?e/r[i].precision+" "+r[i].symbol:(e/r[i].precision).toFixed(p)+" "+r[i].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,i){var s=void 0;if(i===t||i===o)s=1;else{if(i!==a&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},82651:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>p,default:()=>h,frontMatter:()=>s,metadata:()=>u,toc:()=>c});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=(a(47940),["components"]),s={id:"learn-guides-accounts-proxy-pure",title:"Polkadot-JS Guides about Pure Proxy Accounts",sidebar_label:"Pure Proxy Guides",description:"Polkadot-JS Guides about Pure Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy","pure proxy","anonymous proxy"],slug:"../learn-guides-accounts-proxy-pure"},p=void 0,u={unversionedId:"learn/learn-guides-accounts-proxy-pure",id:"learn/learn-guides-accounts-proxy-pure",title:"Polkadot-JS Guides about Pure Proxy Accounts",description:"Polkadot-JS Guides about Pure Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy-pure.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy-pure",permalink:"/docs/learn-guides-accounts-proxy-pure",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy-pure.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-guides-accounts-proxy-pure",title:"Polkadot-JS Guides about Pure Proxy Accounts",sidebar_label:"Pure Proxy Guides",description:"Polkadot-JS Guides about Pure Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy","pure proxy","anonymous proxy"],slug:"../learn-guides-accounts-proxy-pure"},sidebar:"docs",previous:{title:"Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy"},next:{title:"Transfer Guides",permalink:"/docs/learn-guides-transfers"}},l={},c=[{value:"Create and Remove Pure Proxies with Polkadot-JS",id:"create-and-remove-pure-proxies-with-polkadot-js",level:2},{value:"Advanced Account Management with Pure Proxies",id:"advanced-account-management-with-pure-proxies",level:2},{value:"Pure Proxies and Multisigs",id:"pure-proxies-and-multisigs",level:2},{value:"Scenario One: One Pure Proxy within a Multisig",id:"scenario-one-one-pure-proxy-within-a-multisig",level:3},{value:"Scenario Two: Multisig made of Pure Proxies",id:"scenario-two-multisig-made-of-pure-proxies",level:3},{value:"Scenario Three: Multisig controlling a Pure Proxy",id:"scenario-three-multisig-controlling-a-pure-proxy",level:3}],d={toc:c},m="wrapper";function h(e){var t=e.components,s=(0,o.Z)(e,i);return(0,r.kt)(m,(0,n.Z)({},d,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,r.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,r.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,r.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,r.kt)("admonition",{title:"The Account Tab in the Polkadot-JS UI cannot handle complex proxy setups",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The Accounts Tab in the Polkadot-JS UI cannot handle complex proxy setups (e.g. a proxy -> multisig\n-> a pure proxy which is part of another multisig). These complex setups must be done using the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics Tab")," directly."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"We recommend to use the ",(0,r.kt)("a",{parentName:"strong",href:"/docs/learn-DOT#getting-tokens-on-the-westend-testnet"},"Westend Testnet")," if\nyou are testing features for the first time.")," By performing the complex proxy setups on the\ntestnet, you can comfortably replicate the procedure on the main networks.")),(0,r.kt)("admonition",{title:"Risk of loss of funds",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Read carefully the text below and before performing any action using anonymous proxies on\nPolkadot, experiment on the Westend testnet.")),(0,r.kt)("h2",{id:"create-and-remove-pure-proxies-with-polkadot-js"},"Create and Remove Pure Proxies with Polkadot-JS"),(0,r.kt)("p",null,"To create a ",(0,r.kt)("strong",{parentName:"p"},"pure proxy")," see\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182196"},"this support article"),", or\nwatch ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T443RcCYP24"},"this technical explainer video"),"."),(0,r.kt)("admonition",{title:"Removing Pure Proxies",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The procedure for removing a ",(0,r.kt)("em",{parentName:"p"},"pure"),' proxy is different from the one used to remove other proxies.\nVisit the section "Removing an Anonymous Proxy" on\n',(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182196"},"this support article"),", or\nwatch ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T443RcCYP24"},"this technical explainer video"),".")),(0,r.kt)("p",null,"Learn more about pure proxies from our\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=YkYApbhU3i0"},"technical explainer video"),"."),(0,r.kt)("h2",{id:"advanced-account-management-with-pure-proxies"},"Advanced Account Management with Pure Proxies"),(0,r.kt)("admonition",{title:"Walk-through tutorial video of Account Management",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can see ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=YkYApbhU3i0"},"this video tutorial")," that goes through the\nexample below. The tutorial requires some familiarity with the Extrinsic Tab of the Polkadot-JS UI.")),(0,r.kt)("p",null,"Let's take for example 3 accounts belonging to Charlie, Dan and Eleanor working for Company X.\nCharlie holds funds belonging to Company X, but he wants to leave the company and transfer the\neconomic responsibility to Eleanor. Dan is a staking proxy of Charlie."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Without ",(0,r.kt)("em",{parentName:"strong"},"Pure")," Proxy"),", Charlie must (see ",(0,r.kt)("em",{parentName:"p"},"left")," side of the Figure below):"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Remove Dan as a staking proxy, this step requires 1 signature"),(0,r.kt)("li",{parentName:"ul"},"Stop nominating and unbound all funds , this step requires 2 signatures"),(0,r.kt)("li",{parentName:"ul"},"Transfer the funds to Eleanor, this step requires 1 signature")),(0,r.kt)("p",null,"Then Eleanor adds Dan as a staking proxy (1 signature). The whole process requires 5 signatures.\nHere we are presenting a simple example, in fact, with multi-signature accounts and multiple proxies\nthe procedure would be more time-consuming and labor-intensive."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"why anonymous proxies",src:a(9518).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"With ",(0,r.kt)("em",{parentName:"strong"},"Pure")," Proxy")," (see ",(0,r.kt)("em",{parentName:"p"},"right")," side of the Figure above), Charlie must add Eleanor as ",(0,r.kt)("em",{parentName:"p"},"any"),"\nproxy of the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, and remove himself (or Eleanor can remove him). The process requires just\n2 signatures (1 signature to add the new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy and 1 signature the remove the old one). The\nfunds remain in the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, and it is not necessary to stop nominating or unbond funds. Also,\nany proxy relationships with the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy stay in place. Thus, if we use the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, with\nan increasing number of proxies we will always have to sign twice (not necessarily true in\nmulti-signature accounts). While if we are not using the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, the more the proxies the more\nsignatures we need to detach them from the old stash and attach them to the new stash (see Figure\nbelow)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"anon vs stash plot",src:a(78618).Z,width:"1920",height:"800"})),(0,r.kt)("h2",{id:"pure-proxies-and-multisigs"},"Pure Proxies and Multisigs"),(0,r.kt)("h3",{id:"scenario-one-one-pure-proxy-within-a-multisig"},"Scenario One: One Pure Proxy within a Multisig"),(0,r.kt)("admonition",{title:"Walk-through tutorial video",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can see ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=iGRoGstB_pQ"},"this video tutorial")," that goes through\nthis scenario. The tutorial requires some familiarity with the Extrinsic Tab of the Polkadot-JS UI.")),(0,r.kt)("p",null,"It is possible to put a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy within a multisig, and then transactions will be signed by the\n",(0,r.kt)("em",{parentName:"p"},"any")," proxy on behalf of the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy (proxied account). Let's take for example the diagram\nbelow. Alice, Bob and Anon are part of the multisig ABC, a multisig account with threshold 2. P-C is\na ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy spawned by Charlie, who now acts as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy and thus signs anything on behalf of\nP-C. The ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy cannot sign directly because it does not have a private key. So, for example,\nto send funds from the multisig to Dan, Charly needs to submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to P-C,\nwhich in turn will submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic to ABC containing the call data for the\n",(0,r.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive")," extrinsic about the transfer of some funds from ABC to Dan. Alice can\nthen approve the transfer by submitting a ",(0,r.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic also containing the call data\nfor the ",(0,r.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive")," extrinsic about the transfer of some funds from ABC to Dan."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multisig with one anon",src:a(19372).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"If Charly wants to leave the multisig, a new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy can be added to P-C and Charly can be\nremoved (by himself or by the new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy). Note that the multisig also contains Bob that in\nthis specific example does not do anything."),(0,r.kt)("admonition",{title:"Proxy calls",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"To use a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy within a multisig you need to use the Extrinsic Tab and generate a\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic. If you try to sign a multisig transaction using the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy you will\nbe prompted with a warning. Remember, you cannot sign something directly if you do not have a\nprivate key.")),(0,r.kt)("h3",{id:"scenario-two-multisig-made-of-pure-proxies"},"Scenario Two: Multisig made of Pure Proxies"),(0,r.kt)("admonition",{title:"Walk-through Tutorial Video",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can see ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=F82C3zDNJyk"},"this video tutorial")," that goes through\nthis scenario. The tutorial requires some familiarity with the Extrinsic Tab of the Polkadot-JS UI.")),(0,r.kt)("p",null,"The diagram below shows a multisig that is made only with ",(0,r.kt)("em",{parentName:"p"},"pure")," proxies (P-A, P-B and P-C). In this\nsituation Alice, Bob or Charly can leave the multisig at any time without the requirement of\ncreating a new multisig. If for example, Bob leaves the multisig the procedure will require somebody\nelse to be added as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy to P-B, and then Bob can remove himself (or the new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy can\nremove Bob)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multisig with anons",src:a(58047).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"In the diagram above, Alice submits the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to P-A, which in turn submits the\n",(0,r.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic containing the ",(0,r.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive")," extrinsic about the\ntransfer of some tokens from ABC to Dan. Then, Charly does the same to confirm the transaction. Note\nthat Charly will need to pay for some weight, for the computation that is necessary to execute the\ntransaction."),(0,r.kt)("h3",{id:"scenario-three-multisig-controlling-a-pure-proxy"},"Scenario Three: Multisig controlling a Pure Proxy"),(0,r.kt)("p",null,"This setup is used by the ",(0,r.kt)("a",{parentName:"p",href:"/docs/multisig-apps#multix"},"MultiX")," tool."),(0,r.kt)("p",null,"After its creation, a multi-signature account creates a pure proxy that becomes the proxied account.\nThe multi-signature account behaves as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of the pure. If signatories of the\nmulti-signature account change, a new multisig can be created, assigned as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of the pure,\nand then the old multisig can be removed as a proxy."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multisig with pure",src:a(5348).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"Compared to ",(0,r.kt)("a",{parentName:"p",href:"#scenario-two-multisig-made-of-pure-proxies"},"Scenario Two"),", signatories do not need to\ncreate pure proxies here. Multisig controlling a Pure Proxy is a more practical solution, where the\nsignatories, number of signatories and/or the threshold can be changed, which changes the multisig\naddress but does not impact the pure proxy address. In Scenario Two, if signatories behind the pure\nproxies change, the address of the multisig stays the same. However, changing the number of\nsignatories and threshold would not be possible."))}h.isMDXComponent=!0},78618:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/anon-vs-stash-plot-fa8f730710dbf5cbec2d7db43d5d962d.png"},58047:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/multisig-with-anons-209a0f481e6a13ed943a952be07e1a75.png"},19372:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/multisig-with-one-anon-b8bb0a5183fbdc1d1809d4cd58489ab4.png"},5348:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/multisig-with-pure-684efe47eba1ab52cd41218daf674357.png"},9518:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/why-anon-proxy-48fc32ddd2da9a5e9342554c68372d98.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/c8dd560b.df73a918.js b/assets/js/c8dd560b.df73a918.js new file mode 100644 index 000000000000..b1767abfca5f --- /dev/null +++ b/assets/js/c8dd560b.df73a918.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[3978],{35703:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});var n=a(67294);const o=function(e){var t,a=e.message,o=(0,n.useState)(!0),r=o[0],i=o[1];return n.createElement(n.Fragment,null,r&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>d});var n=a(74165),o=a(15861),r=a(67294),i=a(87152),s=a(9712),p=a(67425);function u(e,t,a){return l.apply(this,arguments)}function l(){return(l=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var r,p,u,l,c;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,p=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return u=new i.U(r),e.next=21,s.G.create({provider:u});case 21:l=e.sent,(c=a.split(".")).forEach((function(e){e in l&&(l=l[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return p=l.toString(),e.abrupt("break",35);case 29:return e.next=31,l();case 31:return p=(p=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return e.abrupt("return",p);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,a,n){switch(t){case"humanReadable":(0,p.HumanReadable)(e,a,n);break;case"precise":(0,p.Precise)(e,a,n);break;case"blocksToDays":(0,p.BlocksToDays)(e,n);break;case"erasToDays":(0,p.ErasToDays)(e,n,a);break;case"percentage":(0,p.Percentage)(e,n);break;case"permillToPercent":(0,p.PermillToPercent)(e,n);break;case"arrayLength":(0,p.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const d=function(e){var t=e.network,a=e.path,i=e.defaultValue,s=e.filter,p=void 0===s?void 0:s,l=(0,r.useState)(""),d=l[0],m=l[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==p?c(i.toString(),p,t,m):m(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,n.Z)().mark((function e(){var o;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t,a,m);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==p?c(o,p,t,m):m(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),d}},67425:e=>{var t="polkadot",a="kusama",n="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,s){var p=void 0;if(i===t||i===o)p=3;else{if(i!==a&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");p=6}e=parseFloat(e),s((e=Number.isInteger(e/r[i].precision)?e/r[i].precision+" "+r[i].symbol:(e/r[i].precision).toFixed(p)+" "+r[i].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,i){var s=void 0;if(i===t||i===o)s=1;else{if(i!==a&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},82651:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>g,frontMatter:()=>p,metadata:()=>l,toc:()=>d});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=(a(47940),a(35703)),s=["components"],p={id:"learn-guides-accounts-proxy-pure",title:"Polkadot-JS Guides about Pure Proxy Accounts",sidebar_label:"Pure Proxy Guides",description:"Polkadot-JS Guides about Pure Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy","pure proxy","anonymous proxy"],slug:"../learn-guides-accounts-proxy-pure"},u=void 0,l={unversionedId:"learn/learn-guides-accounts-proxy-pure",id:"learn/learn-guides-accounts-proxy-pure",title:"Polkadot-JS Guides about Pure Proxy Accounts",description:"Polkadot-JS Guides about Pure Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy-pure.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy-pure",permalink:"/docs/learn-guides-accounts-proxy-pure",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy-pure.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-guides-accounts-proxy-pure",title:"Polkadot-JS Guides about Pure Proxy Accounts",sidebar_label:"Pure Proxy Guides",description:"Polkadot-JS Guides about Pure Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy","pure proxy","anonymous proxy"],slug:"../learn-guides-accounts-proxy-pure"},sidebar:"docs",previous:{title:"Proxy Guides",permalink:"/docs/learn-guides-accounts-proxy"},next:{title:"Transfer Guides",permalink:"/docs/learn-guides-transfers"}},c={},d=[{value:"Create and Remove Pure Proxies with Polkadot-JS",id:"create-and-remove-pure-proxies-with-polkadot-js",level:2},{value:"Advanced Account Management with Pure Proxies",id:"advanced-account-management-with-pure-proxies",level:2},{value:"Pure Proxies and Multisigs",id:"pure-proxies-and-multisigs",level:2},{value:"Scenario One: One Pure Proxy within a Multisig",id:"scenario-one-one-pure-proxy-within-a-multisig",level:3},{value:"Scenario Two: Multisig made of Pure Proxies",id:"scenario-two-multisig-made-of-pure-proxies",level:3},{value:"Scenario Three: Multisig controlling a Pure Proxy",id:"scenario-three-multisig-controlling-a-pure-proxy",level:3}],m={toc:d},h="wrapper";function g(e){var t=e.components,p=(0,o.Z)(e,s);return(0,r.kt)(h,(0,n.Z)({},m,p,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)("admonition",{title:"The Account Tab in the Polkadot-JS UI cannot handle complex proxy setups",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The Accounts Tab in the Polkadot-JS UI cannot handle complex proxy setups (e.g. a proxy -> multisig\n-> a pure proxy which is part of another multisig). These complex setups must be done using the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics Tab")," directly."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"We recommend to use the ",(0,r.kt)("a",{parentName:"strong",href:"/docs/learn-DOT#getting-tokens-on-the-westend-testnet"},"Westend Testnet")," if\nyou are testing features for the first time.")," By performing the complex proxy setups on the\ntestnet, you can comfortably replicate the procedure on the main networks.")),(0,r.kt)("admonition",{title:"Risk of loss of funds",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Read carefully the text below and before performing any action using anonymous proxies on\nPolkadot, experiment on the Westend testnet.")),(0,r.kt)("h2",{id:"create-and-remove-pure-proxies-with-polkadot-js"},"Create and Remove Pure Proxies with Polkadot-JS"),(0,r.kt)("p",null,"To create a ",(0,r.kt)("strong",{parentName:"p"},"pure proxy")," see\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182196"},"this support article"),", or\nwatch ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T443RcCYP24"},"this technical explainer video"),"."),(0,r.kt)("admonition",{title:"Removing Pure Proxies",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The procedure for removing a ",(0,r.kt)("em",{parentName:"p"},"pure"),' proxy is different from the one used to remove other proxies.\nVisit the section "Removing an Anonymous Proxy" on\n',(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182196"},"this support article"),", or\nwatch ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=T443RcCYP24"},"this technical explainer video"),".")),(0,r.kt)("p",null,"Learn more about pure proxies from our\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=YkYApbhU3i0"},"technical explainer video"),"."),(0,r.kt)("h2",{id:"advanced-account-management-with-pure-proxies"},"Advanced Account Management with Pure Proxies"),(0,r.kt)("admonition",{title:"Walk-through tutorial video of Account Management",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can see ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=YkYApbhU3i0"},"this video tutorial")," that goes through the\nexample below. The tutorial requires some familiarity with the Extrinsic Tab of the Polkadot-JS UI.")),(0,r.kt)("p",null,"Let's take for example 3 accounts belonging to Charlie, Dan and Eleanor working for Company X.\nCharlie holds funds belonging to Company X, but he wants to leave the company and transfer the\neconomic responsibility to Eleanor. Dan is a staking proxy of Charlie."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Without ",(0,r.kt)("em",{parentName:"strong"},"Pure")," Proxy"),", Charlie must (see ",(0,r.kt)("em",{parentName:"p"},"left")," side of the Figure below):"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Remove Dan as a staking proxy, this step requires 1 signature"),(0,r.kt)("li",{parentName:"ul"},"Stop nominating and unbound all funds , this step requires 2 signatures"),(0,r.kt)("li",{parentName:"ul"},"Transfer the funds to Eleanor, this step requires 1 signature")),(0,r.kt)("p",null,"Then Eleanor adds Dan as a staking proxy (1 signature). The whole process requires 5 signatures.\nHere we are presenting a simple example, in fact, with multi-signature accounts and multiple proxies\nthe procedure would be more time-consuming and labor-intensive."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"why anonymous proxies",src:a(9518).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"With ",(0,r.kt)("em",{parentName:"strong"},"Pure")," Proxy")," (see ",(0,r.kt)("em",{parentName:"p"},"right")," side of the Figure above), Charlie must add Eleanor as ",(0,r.kt)("em",{parentName:"p"},"any"),"\nproxy of the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, and remove himself (or Eleanor can remove him). The process requires just\n2 signatures (1 signature to add the new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy and 1 signature the remove the old one). The\nfunds remain in the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, and it is not necessary to stop nominating or unbond funds. Also,\nany proxy relationships with the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy stay in place. Thus, if we use the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, with\nan increasing number of proxies we will always have to sign twice (not necessarily true in\nmulti-signature accounts). While if we are not using the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, the more the proxies the more\nsignatures we need to detach them from the old stash and attach them to the new stash (see Figure\nbelow)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"anon vs stash plot",src:a(78618).Z,width:"1920",height:"800"})),(0,r.kt)("h2",{id:"pure-proxies-and-multisigs"},"Pure Proxies and Multisigs"),(0,r.kt)("h3",{id:"scenario-one-one-pure-proxy-within-a-multisig"},"Scenario One: One Pure Proxy within a Multisig"),(0,r.kt)("admonition",{title:"Walk-through tutorial video",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can see ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=iGRoGstB_pQ"},"this video tutorial")," that goes through\nthis scenario. The tutorial requires some familiarity with the Extrinsic Tab of the Polkadot-JS UI.")),(0,r.kt)("p",null,"It is possible to put a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy within a multisig, and then transactions will be signed by the\n",(0,r.kt)("em",{parentName:"p"},"any")," proxy on behalf of the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy (proxied account). Let's take for example the diagram\nbelow. Alice, Bob and Anon are part of the multisig ABC, a multisig account with threshold 2. P-C is\na ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy spawned by Charlie, who now acts as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy and thus signs anything on behalf of\nP-C. The ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy cannot sign directly because it does not have a private key. So, for example,\nto send funds from the multisig to Dan, Charly needs to submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to P-C,\nwhich in turn will submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic to ABC containing the call data for the\n",(0,r.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive")," extrinsic about the transfer of some funds from ABC to Dan. Alice can\nthen approve the transfer by submitting a ",(0,r.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic also containing the call data\nfor the ",(0,r.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive")," extrinsic about the transfer of some funds from ABC to Dan."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multisig with one anon",src:a(19372).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"If Charly wants to leave the multisig, a new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy can be added to P-C and Charly can be\nremoved (by himself or by the new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy). Note that the multisig also contains Bob that in\nthis specific example does not do anything."),(0,r.kt)("admonition",{title:"Proxy calls",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"To use a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy within a multisig you need to use the Extrinsic Tab and generate a\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic. If you try to sign a multisig transaction using the ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy you will\nbe prompted with a warning. Remember, you cannot sign something directly if you do not have a\nprivate key.")),(0,r.kt)("h3",{id:"scenario-two-multisig-made-of-pure-proxies"},"Scenario Two: Multisig made of Pure Proxies"),(0,r.kt)("admonition",{title:"Walk-through Tutorial Video",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can see ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=F82C3zDNJyk"},"this video tutorial")," that goes through\nthis scenario. The tutorial requires some familiarity with the Extrinsic Tab of the Polkadot-JS UI.")),(0,r.kt)("p",null,"The diagram below shows a multisig that is made only with ",(0,r.kt)("em",{parentName:"p"},"pure")," proxies (P-A, P-B and P-C). In this\nsituation Alice, Bob or Charly can leave the multisig at any time without the requirement of\ncreating a new multisig. If for example, Bob leaves the multisig the procedure will require somebody\nelse to be added as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy to P-B, and then Bob can remove himself (or the new ",(0,r.kt)("em",{parentName:"p"},"any")," proxy can\nremove Bob)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multisig with anons",src:a(58047).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"In the diagram above, Alice submits the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to P-A, which in turn submits the\n",(0,r.kt)("inlineCode",{parentName:"p"},"multisig.asMulti")," extrinsic containing the ",(0,r.kt)("inlineCode",{parentName:"p"},"balances.transferKeepAlive")," extrinsic about the\ntransfer of some tokens from ABC to Dan. Then, Charly does the same to confirm the transaction. Note\nthat Charly will need to pay for some weight, for the computation that is necessary to execute the\ntransaction."),(0,r.kt)("h3",{id:"scenario-three-multisig-controlling-a-pure-proxy"},"Scenario Three: Multisig controlling a Pure Proxy"),(0,r.kt)("p",null,"This setup is used by the ",(0,r.kt)("a",{parentName:"p",href:"/docs/multisig-apps#multix"},"MultiX")," tool."),(0,r.kt)("p",null,"After its creation, a multi-signature account creates a pure proxy that becomes the proxied account.\nThe multi-signature account behaves as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of the pure. If signatories of the\nmulti-signature account change, a new multisig can be created, assigned as ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of the pure,\nand then the old multisig can be removed as a proxy."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"multisig with pure",src:a(5348).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"Compared to ",(0,r.kt)("a",{parentName:"p",href:"#scenario-two-multisig-made-of-pure-proxies"},"Scenario Two"),", signatories do not need to\ncreate pure proxies here. Multisig controlling a Pure Proxy is a more practical solution, where the\nsignatories, number of signatories and/or the threshold can be changed, which changes the multisig\naddress but does not impact the pure proxy address. In Scenario Two, if signatories behind the pure\nproxies change, the address of the multisig stays the same. However, changing the number of\nsignatories and threshold would not be possible."))}g.isMDXComponent=!0},78618:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/anon-vs-stash-plot-fa8f730710dbf5cbec2d7db43d5d962d.png"},58047:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/multisig-with-anons-209a0f481e6a13ed943a952be07e1a75.png"},19372:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/multisig-with-one-anon-b8bb0a5183fbdc1d1809d4cd58489ab4.png"},5348:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/multisig-with-pure-684efe47eba1ab52cd41218daf674357.png"},9518:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/why-anon-proxy-48fc32ddd2da9a5e9342554c68372d98.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/cb9afd28.912ea526.js b/assets/js/cb9afd28.912ea526.js deleted file mode 100644 index 21ff7cb713ba..000000000000 --- a/assets/js/cb9afd28.912ea526.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[3643],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>p});var r=a(74165),n=a(15861),o=a(67294),s=a(87152),i=a(9712),l=a(67425);function u(e,t,a){return c.apply(this,arguments)}function c(){return(c=(0,n.Z)((0,r.Z)().mark((function e(t,a,n){var o,l,u,c,d;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return o="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return o="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return o="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return o="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==o){e.next=18;break}return e.abrupt("return");case 18:return u=new s.U(o),e.next=21,i.G.create({provider:u});case 21:c=e.sent,(d=a.split(".")).forEach((function(e){e in c&&(c=c[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=c.toString(),e.abrupt("break",35);case 29:return e.next=31,c();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,a,r){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,r);break;case"precise":(0,l.Precise)(e,a,r);break;case"blocksToDays":(0,l.BlocksToDays)(e,r);break;case"erasToDays":(0,l.ErasToDays)(e,r,a);break;case"percentage":(0,l.Percentage)(e,r);break;case"permillToPercent":(0,l.PermillToPercent)(e,r);break;case"arrayLength":(0,l.ArrayLength)(e,r);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,a=e.path,s=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,c=(0,o.useState)(""),p=c[0],m=c[1];return t=t.toLowerCase(),(0,o.useEffect)((function(){void 0!==l?d(s.toString(),l,t,m):m(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var o=function(){var e=(0,n.Z)((0,r.Z)().mark((function e(){var n;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t,a,m);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(n,l,t,m):m(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{o()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",a="kusama",r="statemine",n="statemint",o={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var l=void 0;if(s===t||s===n)l=3;else{if(s!==a&&s!==r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/o[s].precision)?e/o[s].precision+" "+o[s].symbol:(e/o[s].precision).toFixed(l)+" "+o[s].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/o[t].precision+" "+o[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,o,s){var i=void 0;if(s===t||s===n)i=1;else{if(s!==a&&s!==r)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}o((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},52991:(e,t,a)=>{"use strict";a.d(t,{Z:()=>b});var r=a(67294),n=a(86010),o=a(53438),s=a(39960),i=a(13919),l=a(95999);const u={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function c(e){var t=e.href,a=e.children;return r.createElement(s.Z,{href:t,className:(0,n.Z)("card padding--lg",u.cardContainer)},a)}function d(e){var t=e.href,a=e.icon,o=e.title,s=e.description;return r.createElement(c,{href:t},r.createElement("h2",{className:(0,n.Z)("text--truncate",u.cardTitle),title:o},a," ",o),s&&r.createElement("p",{className:(0,n.Z)("text--truncate",u.cardDescription),title:s},s))}function p(e){var t,a=e.item,n=(0,o.Wl)(a);return n?r.createElement(d,{href:n,icon:"\ud83d\uddc3\ufe0f",title:a.label,description:null!=(t=a.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:a.items.length})}):null}function m(e){var t,a,n=e.item,s=(0,i.Z)(n.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,o.xz)(null!=(t=n.docId)?t:void 0);return r.createElement(d,{href:n.href,icon:s,title:n.label,description:null!=(a=n.description)?a:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return r.createElement(m,{item:t});case"category":return r.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function k(e){var t=e.className,a=(0,o.jA)();return r.createElement(b,{items:a.items,className:t})}function b(e){var t=e.items,a=e.className;if(!t)return r.createElement(k,e);var s=(0,o.MN)(t);return r.createElement("section",{className:(0,n.Z)("row",a)},s.map((function(e,t){return r.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},r.createElement(f,{item:e}))})))}},85162:(e,t,a)=>{"use strict";a.d(t,{Z:()=>s});var r=a(67294),n=a(86010);const o={tabItem:"tabItem_Ymn6"};function s(e){var t=e.children,a=e.hidden,s=e.className;return r.createElement("div",{role:"tabpanel",className:(0,n.Z)(o.tabItem,s),hidden:a},t)}},74866:(e,t,a)=>{"use strict";a.d(t,{Z:()=>w});var r=a(87462),n=a(67294),o=a(86010),s=a(12466),i=a(16550),l=a(91980),u=a(67392),c=a(50012);function d(e){return function(e){var t,a;return null!=(t=null==(a=n.Children.map(e,(function(e){if(!e||(0,n.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:a.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,a=e.children;return(0,n.useMemo)((function(){var e=null!=t?t:d(a);return function(e){var t=(0,u.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,a])}function m(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function f(e){var t=e.queryString,a=void 0!==t&&t,r=e.groupId,o=(0,i.k6)(),s=function(e){var t=e.queryString,a=void 0!==t&&t,r=e.groupId;if("string"==typeof a)return a;if(!1===a)return null;if(!0===a&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=r?r:null}({queryString:a,groupId:r});return[(0,l._X)(s),(0,n.useCallback)((function(e){if(s){var t=new URLSearchParams(o.location.search);t.set(s,e),o.replace(Object.assign({},o.location,{search:t.toString()}))}}),[s,o])]}function k(e){var t,a,r,o,s=e.defaultValue,i=e.queryString,l=void 0!==i&&i,u=e.groupId,d=p(e),k=(0,n.useState)((function(){return function(e){var t,a=e.defaultValue,r=e.tabValues;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(a){if(!m({value:a,tabValues:r}))throw new Error('Docusaurus error: The has a defaultValue "'+a+'" but none of its children has the corresponding value. Available values are: '+r.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return a}var n=null!=(t=r.find((function(e){return e.default})))?t:r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:s,tabValues:d})})),b=k[0],v=k[1],h=f({queryString:l,groupId:u}),g=h[0],y=h[1],w=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:u}.groupId),a=(0,c.Nk)(t),r=a[0],o=a[1],[r,(0,n.useCallback)((function(e){t&&o.set(e)}),[t,o])]),S=w[0],E=w[1],N=function(){var e=null!=g?g:S;return m({value:e,tabValues:d})?e:null}();return(0,n.useLayoutEffect)((function(){N&&v(N)}),[N]),{selectedValue:b,selectValue:(0,n.useCallback)((function(e){if(!m({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);v(e),y(e),E(e)}),[y,E,d]),tabValues:d}}var b=a(72389);const v={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function h(e){var t=e.className,a=e.block,i=e.selectedValue,l=e.selectValue,u=e.tabValues,c=[],d=(0,s.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,a=c.indexOf(t),r=u[a].value;r!==i&&(d(t),l(r))},m=function(e){var t,a=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var r,n=c.indexOf(e.currentTarget)+1;a=null!=(r=c[n])?r:c[0];break;case"ArrowLeft":var o,s=c.indexOf(e.currentTarget)-1;a=null!=(o=c[s])?o:c[c.length-1]}null==(t=a)||t.focus()};return n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":a},t)},u.map((function(e){var t=e.value,a=e.label,s=e.attributes;return n.createElement("li",(0,r.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:function(e){return c.push(e)},onKeyDown:m,onClick:p},s,{className:(0,o.Z)("tabs__item",v.tabItem,null==s?void 0:s.className,{"tabs__item--active":i===t})}),null!=a?a:t)})))}function g(e){var t=e.lazy,a=e.children,r=e.selectedValue,o=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){var s=o.find((function(e){return e.props.value===r}));return s?(0,n.cloneElement)(s,{className:"margin-top--md"}):null}return n.createElement("div",{className:"margin-top--md"},o.map((function(e,t){return(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==r})})))}function y(e){var t=k(e);return n.createElement("div",{className:(0,o.Z)("tabs-container",v.tabList)},n.createElement(h,(0,r.Z)({},e,t)),n.createElement(g,(0,r.Z)({},e,t)))}function w(e){var t=(0,b.Z)();return n.createElement(y,(0,r.Z)({key:String(t)},e))}},46301:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=a(87462),n=a(63366),o=(a(67294),a(3905)),s=(a(47940),a(74866),a(85162),a(52991)),i=["components"],l={id:"learn-polkadot-js-guides",title:"Polkadot-JS Guides",sidebar_label:"Polkadot-JS Guides",description:"Guides about Polkadot-JS.",keywords:["polkadot-JS","polkadotjs","guides","advanced"],slug:"../learn-polkadot-js-guides"},u=void 0,c={unversionedId:"learn/learn-polkadot-js-guides",id:"learn/learn-polkadot-js-guides",title:"Polkadot-JS Guides",description:"Guides about Polkadot-JS.",source:"@site/../docs/learn/learn-polkadot-js-guides.md",sourceDirName:"learn",slug:"/learn-polkadot-js-guides",permalink:"/docs/learn-polkadot-js-guides",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadot-js-guides.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",frontMatter:{id:"learn-polkadot-js-guides",title:"Polkadot-JS Guides",sidebar_label:"Polkadot-JS Guides",description:"Guides about Polkadot-JS.",keywords:["polkadot-JS","polkadotjs","guides","advanced"],slug:"../learn-polkadot-js-guides"},sidebar:"docs",previous:{title:"Polkadot-JS UI",permalink:"/docs/polkadotjs-ui"},next:{title:"Account Guides",permalink:"/docs/learn-guides-accounts"}},d={},p=[],m={toc:p},f="wrapper";function k(e){var t=e.components,a=(0,n.Z)(e,i);return(0,o.kt)(f,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"sticky",style:{zIndex:1}},(0,o.kt)("br",null),(0,o.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,o.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,o.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,o.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"We support only the use of the ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},(0,o.kt)("strong",{parentName:"a"},"Polkadot-JS UI")),"\ntogether with the ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/extension/"},(0,o.kt)("strong",{parentName:"a"},"Polkadot-JS browser extension")),",\n",(0,o.kt)("a",{parentName:"p",href:"https://www.ledger.com/ledger-live"},(0,o.kt)("strong",{parentName:"a"},"Ledger"))," and\n",(0,o.kt)("a",{parentName:"p",href:"https://www.parity.io/technologies/signer/"},(0,o.kt)("strong",{parentName:"a"},"Polkadot Vault"))," for signing transactions. We do not\nprovide support for third party applications.")),(0,o.kt)(s.Z,{mdxType:"DocCardList"}))}k.isMDXComponent=!0},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/cb9afd28.c2dd3728.js b/assets/js/cb9afd28.c2dd3728.js new file mode 100644 index 000000000000..e429076669e9 --- /dev/null +++ b/assets/js/cb9afd28.c2dd3728.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3643],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(r),m=a,f=p["".concat(l,".").concat(m)]||p[m]||u[m]||o;return r?n.createElement(f,i(i({ref:t},d),{},{components:r})):n.createElement(f,i({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{r.d(t,{Z:()=>a});var n=r(67294);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),o=a[0],i=a[1];return n.createElement(n.Fragment,null,o&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){i(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52991:(e,t,r)=>{r.d(t,{Z:()=>k});var n=r(67294),a=r(86010),o=r(53438),i=r(39960),s=r(13919),l=r(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var t=e.href,r=e.children;return n.createElement(i.Z,{href:t,className:(0,a.Z)("card padding--lg",c.cardContainer)},r)}function p(e){var t=e.href,r=e.icon,o=e.title,i=e.description;return n.createElement(d,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",c.cardTitle),title:o},r," ",o),i&&n.createElement("p",{className:(0,a.Z)("text--truncate",c.cardDescription),title:i},i))}function u(e){var t,r=e.item,a=(0,o.Wl)(r);return a?n.createElement(p,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,i=(0,s.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,o.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(p,{href:a.href,icon:i,title:a.label,description:null!=(r=a.description)?r:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(u,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function g(e){var t=e.className,r=(0,o.jA)();return n.createElement(k,{items:r.items,className:t})}function k(e){var t=e.items,r=e.className;if(!t)return n.createElement(g,e);var i=(0,o.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},i.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},46301:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>k,frontMatter:()=>c,metadata:()=>p,toc:()=>m});var n=r(87462),a=r(63366),o=(r(67294),r(3905)),i=r(35703),s=r(52991),l=["components"],c={id:"learn-polkadot-js-guides",title:"Polkadot-JS Guides",sidebar_label:"Polkadot-JS Guides",description:"Guides about Polkadot-JS.",keywords:["polkadot-JS","polkadotjs","guides","advanced"],slug:"../learn-polkadot-js-guides"},d=void 0,p={unversionedId:"learn/learn-polkadot-js-guides",id:"learn/learn-polkadot-js-guides",title:"Polkadot-JS Guides",description:"Guides about Polkadot-JS.",source:"@site/../docs/learn/learn-polkadot-js-guides.md",sourceDirName:"learn",slug:"/learn-polkadot-js-guides",permalink:"/docs/learn-polkadot-js-guides",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadot-js-guides.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"learn-polkadot-js-guides",title:"Polkadot-JS Guides",sidebar_label:"Polkadot-JS Guides",description:"Guides about Polkadot-JS.",keywords:["polkadot-JS","polkadotjs","guides","advanced"],slug:"../learn-polkadot-js-guides"},sidebar:"docs",previous:{title:"Polkadot-JS UI",permalink:"/docs/polkadotjs-ui"},next:{title:"Account Guides",permalink:"/docs/learn-guides-accounts"}},u={},m=[],f={toc:m},g="wrapper";function k(e){var t=e.components,r=(0,a.Z)(e,l);return(0,o.kt)(g,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"We support only the use of the ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},(0,o.kt)("strong",{parentName:"a"},"Polkadot-JS UI")),"\ntogether with the ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.js.org/extension/"},(0,o.kt)("strong",{parentName:"a"},"Polkadot-JS browser extension")),",\n",(0,o.kt)("a",{parentName:"p",href:"https://www.ledger.com/ledger-live"},(0,o.kt)("strong",{parentName:"a"},"Ledger"))," and\n",(0,o.kt)("a",{parentName:"p",href:"https://www.parity.io/technologies/signer/"},(0,o.kt)("strong",{parentName:"a"},"Polkadot Vault"))," for signing transactions. We do not\nprovide support for third party applications.")),(0,o.kt)(s.Z,{mdxType:"DocCardList"}))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dbbd9e76.ed32f583.js b/assets/js/dbbd9e76.ed32f583.js deleted file mode 100644 index eafa0213bec0..000000000000 --- a/assets/js/dbbd9e76.ed32f583.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3669],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var p=n.createContext({}),s=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},d=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=s(a),c=i,m=u["".concat(p,".").concat(c)]||u[c]||h[c]||o;return a?n.createElement(m,r(r({ref:t},d),{},{components:a})):n.createElement(m,r({ref:t},d))}));function m(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,r=new Array(o);r[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:i,r[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>p,default:()=>m,frontMatter:()=>l,metadata:()=>s,toc:()=>u});var n=a(87462),i=a(63366),o=(a(67294),a(3905)),r=["components"],l={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"},p=void 0,s={unversionedId:"learn/learn-guides-vault",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-vault.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",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"}},d={},u=[{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}],h={toc:u},c="wrapper";function m(e){var t=e.components,a=(0,i.Z)(e,r);return(0,o.kt)(c,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"sticky",style:{zIndex:1}},(0,o.kt)("br",null),(0,o.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,o.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,o.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,o.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"These guides apply to both Parity Signer and Polkadot Vault apps.")),(0,o.kt)("h2",{id:"sending-a-transfer-with-the-vault-app"},"Sending a Transfer with the Vault App"),(0,o.kt)("admonition",{title:"Verifying Extrinsics",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Visit the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-using-Ledger"},(0,o.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,o.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=360"},(0,o.kt)("strong",{parentName:"a"},"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.")),(0,o.kt)("p",null,"General instructions to send a transfer can be found on\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170304-how-to-send-transfer-funds-out-of-your-dot-account-on-the-polkadot-js-ui"},"this support page"),".\nTo sign transactions with the Polkadot Vault app check\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182000-how-to-sign-a-transaction-in-parity-signer"},"this support article"),"\nor see ",(0,o.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=281"},"this video tutorial"),"."),(0,o.kt)("h2",{id:"import-vault-accounts-into-polkadot-js"},"Import Vault Accounts into Polkadot-JS"),(0,o.kt)("p",null,"See\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184118-polkadot-vault-how-to-add-your-account-on-polkadot-js-ui"},"this support article"),"\nto import a Polkadot Vault account into the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},"Polkadot-JS Browser Extension")," or\n",(0,o.kt)("a",{parentName:"p",href:"https://chrome.google.com/webstore/detail/parity-signer-companion/damllfnhhcbmclmjilomenbhkappdjgb"},"Parity Signer Companion"),".\nAccounts added to those extensions will be injected into the Polkadot-JS UI."),(0,o.kt)("h2",{id:"do-your-own-chain-spec-and-metadata-update"},"Do Your Own Chain Spec and Metadata Update"),(0,o.kt)("admonition",{title:"This section is for developers and power users only",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"By requesting the chain specification and metadata you trust the specific endpoint you are using\n(unless you are using you own node).")),(0,o.kt)("p",null,"The following guide bases on the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/parity-signer"},"Parity Signer")," Github\npage (to create the Chain Spec QR code and the metadata QR code fountain) and\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/metadata-portal"},"Metadata Portal")," Github page (to embed the Chain\nSpec and Metadata into a portal)."),(0,o.kt)("h3",{id:"chain-specification"},"Chain Specification"),(0,o.kt)("h4",{id:"chain-spec-qr"},"Chain Spec QR"),(0,o.kt)("p",null,"To add more chains on the Vault app you can follow the instructions\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-specs"},"here"),".\nIn this example we will add the ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-assets"},"Asset Hub")," system parachain. Briefly,\nfork the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/parity-signer"},"Parity Signer GitHub repository"),", start the\nterminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"cargo run add-specs -d -u wss://kusama-asset-hub-rpc.polkadot.io --encryption sr25519")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"wss://kusama-asset.hub-rpc.polkadot.io")," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,o.kt)("inlineCode",{parentName:"p"},"sign_me_add_specs_statemine_sr25510")," under the\n",(0,o.kt)("inlineCode",{parentName:"p"},"files/in_progress")," folder. See\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/blob/089fd77b14169749e35e073a93f7e7276963009c/packages/apps-config/src/endpoints/productionRelayPolkadot.ts"},"this GitHub page")," for a list of all endpoints listed in the Polkadot-JS UI.",""),(0,o.kt)("h4",{id:"generating-signature"},"Generating Signature"),(0,o.kt)("admonition",{title:"Use a hot account",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"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.")),(0,o.kt)("p",null,"Start the terminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/in_progress")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},'cat sign_me_add_specs_statemine_sr25519 | subkey sign --suri "YOUR SEED PHRASE"')),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},'"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:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"0xc4ce72db959000b6166af96d3bda55a927fd837747bf1bf1ae8a69e57c9ef37c25a88707c47b105a9eb1fbcf9345680eff57eb978cf73919506f6c738834e78a")),(0,o.kt)("h4",{id:"signing-chain-spec"},"Signing Chain Spec"),(0,o.kt)("p",null,"Now, go back to the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"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")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"PUBLIC KEY")," is the public key of the account with seed ",(0,o.kt)("inlineCode",{parentName:"p"},'"YOUR SEED PHRASE"'),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"SIGNATURE"),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,o.kt)("inlineCode",{parentName:"p"},"add_specs_statemine-sr25519")," under the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/completed")," folder."),(0,o.kt)("h3",{id:"metadata-updates"},"Metadata Updates"),(0,o.kt)("p",null,"Similarly to what we did for the chain specification, we now generate and sign the Asset Hub\nmetadata."),(0,o.kt)("h4",{id:"metadata-qr-fountain"},"Metadata QR Fountain"),(0,o.kt)("p",null,"To update the chain metadata for the Asset Hub specs on the Vault app you can follow the\ninstructions\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-metadata"},"here"),".\nBriefly, in the Parity Signer repository, start the terminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder\nand type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"cargo run load-metadata -d -u wss://kusama-asset-hub-rpc.polkadot.io")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"wss://kusama-asset-hub-rpc.polkadot.io")," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,o.kt)("inlineCode",{parentName:"p"},"sign_me_load_metadata_statemineV9370")," under the\n",(0,o.kt)("inlineCode",{parentName:"p"},"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,o.kt)("inlineCode",{parentName:"p"},"V9370"),"."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Note that the name of the file changes according to the network version. That is, ",(0,o.kt)("inlineCode",{parentName:"p"},"????")," in\n",(0,o.kt)("inlineCode",{parentName:"p"},"sign_me_load_metadata_statemineV????")," will be the latest version at fetch time.")),(0,o.kt)("h4",{id:"generating-signature-1"},"Generating Signature"),(0,o.kt)("admonition",{title:"Use a hot account",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"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.")),(0,o.kt)("p",null,"Start the terminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/in_progress")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},'cat sign_me_load_metadata_statemineV9370 | subkey sign --suri "YOUR SEED PHRASE"')),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},'"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:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"0xde1ad7aeb252acb3cf42a522dcc8dc3f317a49be2ed636836dd6df8f7e47135f2c712480055822eba87e9ea5ac7d3bba96045992ae795856fdf4eea09a411f85")),(0,o.kt)("admonition",{title:"Do not copy the code lines above",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Note that the name of the file changes according to the network version. That is, ",(0,o.kt)("inlineCode",{parentName:"p"},"????")," in\n",(0,o.kt)("inlineCode",{parentName:"p"},"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,o.kt)("inlineCode",{parentName:"p"},"files/in_progress"),"\nfolder. The signature changes as well.")),(0,o.kt)("h4",{id:"signing-metadata"},"Signing Metadata"),(0,o.kt)("p",null,"Now, go back to the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"cargo run --release make --goal qr --crypto sr25519 --msg load-metadata --payload sign_me_load_metadata_statemineV9370 --verifier-hex PUBLIC KEY --signature-hex SIGNATURE")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"PUBLIC KEY")," is the public key of the account with seed ",(0,o.kt)("inlineCode",{parentName:"p"},'"YOUR SEED PHRASE"'),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"SIGNATURE"),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,o.kt)("inlineCode",{parentName:"p"},"load_metadata_statemineV9370")," under the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/completed")," folder."),(0,o.kt)("h3",{id:"add-chain--update-metadata"},"Add Chain & Update Metadata"),(0,o.kt)("p",null,"You can open ",(0,o.kt)("inlineCode",{parentName:"p"},"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,o.kt)("inlineCode",{parentName:"p"},"load_metadata_statemineV9370"),". This is a .apng file containing the QR\ncode fountain to do the metadata update for the Asset Hub on Kusama."),(0,o.kt)("h3",{id:"metadata-portal"},"Metadata Portal"),(0,o.kt)("h4",{id:"modify-config-file"},"Modify ",(0,o.kt)("inlineCode",{parentName:"h4"},"config")," File"),(0,o.kt)("p",null,"Alternatively, you can add the chain specification QR code and the metadata QR code fountain in a\nmetadata portal. Briefly, fork the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/metadata-portal"},"Parity's Metadata Portal GitHub repository"),". You can\nmodify the following fields of the ",(0,o.kt)("inlineCode",{parentName:"p"},"config.toml")," file:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"name"),": your name / institution"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"public_key"),": the public key of the account you use to sign the chain spec and the metadata."),(0,o.kt)("li",{parentName:"ul"},"At the bottom of the file add the following information:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},'[[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')),(0,o.kt)("p",null,"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."),(0,o.kt)("h4",{id:"rename-chains-files"},"Rename Chain's Files"),(0,o.kt)("p",null,"Rename the signed chain specification and metadata files as follow:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Chain specification: ",(0,o.kt)("inlineCode",{parentName:"p"},"add_specs_statemine-sr25519")," --\x3e ",(0,o.kt)("inlineCode",{parentName:"p"},"statemine_specs.png"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Metadata updates: ",(0,o.kt)("inlineCode",{parentName:"p"},"load_metadata_statemineV9370"),"--\x3e ",(0,o.kt)("inlineCode",{parentName:"p"},"statemine_metadata_9370.apng")))),(0,o.kt)("p",null,"Thus, for chain specification the file must be renamed to ",(0,o.kt)("inlineCode",{parentName:"p"},"chainName_specs.png")," while for metadata\nthe file must be renamed to ",(0,o.kt)("inlineCode",{parentName:"p"},"chainName_metadata_version.apng")," where ",(0,o.kt)("inlineCode",{parentName:"p"},"chainName")," is the name of the\nchain and ",(0,o.kt)("inlineCode",{parentName:"p"},"version")," is the version of the metadata."),(0,o.kt)("p",null,"Add the renamed files to the ",(0,o.kt)("inlineCode",{parentName:"p"},"/public/qr folder")," within the Metadata Portal repository."),(0,o.kt)("h4",{id:"run-portal"},"Run Portal"),(0,o.kt)("p",null,"Open the terminal within the Metadata Portal repository and run ",(0,o.kt)("inlineCode",{parentName:"p"},"make updater"),". Then run\n",(0,o.kt)("inlineCode",{parentName:"p"},"make collector"),"; this will create the ",(0,o.kt)("inlineCode",{parentName:"p"},"_latest.apng")," files for each of the chains (removed by the\ncommand ",(0,o.kt)("inlineCode",{parentName:"p"},"make cleaner"),"). Finally, run ",(0,o.kt)("inlineCode",{parentName:"p"},"yarn start")," to load the metadata portal on your localhost."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dbbd9e76.ffd12b05.js b/assets/js/dbbd9e76.ffd12b05.js new file mode 100644 index 000000000000..f9a783209ac1 --- /dev/null +++ b/assets/js/dbbd9e76.ffd12b05.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3669],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),c=i,m=u["".concat(s,".").concat(c)]||u[c]||h[c]||o;return a?n.createElement(m,r(r({ref:t},d),{},{components:a})):n.createElement(m,r({ref:t},d))}));function m(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,r=new Array(o);r[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,r[1]=l;for(var p=2;p{a.d(t,{Z:()=>i});var n=a(67294);const i=function(e){var t,a=e.message,i=(0,n.useState)(!0),o=i[0],r=i[1];return n.createElement(n.Fragment,null,o&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},69156:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>p,default:()=>k,frontMatter:()=>s,metadata:()=>d,toc:()=>h});var n=a(87462),i=a(63366),o=(a(67294),a(3905)),r=a(35703),l=["components"],s={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"},p=void 0,d={unversionedId:"learn/learn-guides-vault",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-vault.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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"}},u={},h=[{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}],c={toc:h},m="wrapper";function k(e){var t=e.components,a=(0,i.Z)(e,l);return(0,o.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(r.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"These guides apply to both Parity Signer and Polkadot Vault apps.")),(0,o.kt)("h2",{id:"sending-a-transfer-with-the-vault-app"},"Sending a Transfer with the Vault App"),(0,o.kt)("admonition",{title:"Verifying Extrinsics",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Visit the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000179161-how-can-i-verify-what-extrinsic-i-m-signing-#Verify-an-extrinsic-using-Ledger"},(0,o.kt)("strong",{parentName:"a"},"dedicated support page")),"\nand see ",(0,o.kt)("a",{parentName:"p",href:"https://youtu.be/bxMs-9fBtFk?t=360"},(0,o.kt)("strong",{parentName:"a"},"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.")),(0,o.kt)("p",null,"General instructions to send a transfer can be found on\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000170304-how-to-send-transfer-funds-out-of-your-dot-account-on-the-polkadot-js-ui"},"this support page"),".\nTo sign transactions with the Polkadot Vault app check\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182000-how-to-sign-a-transaction-in-parity-signer"},"this support article"),"\nor see ",(0,o.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=281"},"this video tutorial"),"."),(0,o.kt)("h2",{id:"import-vault-accounts-into-polkadot-js"},"Import Vault Accounts into Polkadot-JS"),(0,o.kt)("p",null,"See\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184118-polkadot-vault-how-to-add-your-account-on-polkadot-js-ui"},"this support article"),"\nto import a Polkadot Vault account into the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},"Polkadot-JS Browser Extension")," or\n",(0,o.kt)("a",{parentName:"p",href:"https://chrome.google.com/webstore/detail/parity-signer-companion/damllfnhhcbmclmjilomenbhkappdjgb"},"Parity Signer Companion"),".\nAccounts added to those extensions will be injected into the Polkadot-JS UI."),(0,o.kt)("h2",{id:"do-your-own-chain-spec-and-metadata-update"},"Do Your Own Chain Spec and Metadata Update"),(0,o.kt)("admonition",{title:"This section is for developers and power users only",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"By requesting the chain specification and metadata you trust the specific endpoint you are using\n(unless you are using you own node).")),(0,o.kt)("p",null,"The following guide bases on the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/parity-signer"},"Parity Signer")," Github\npage (to create the Chain Spec QR code and the metadata QR code fountain) and\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/metadata-portal"},"Metadata Portal")," Github page (to embed the Chain\nSpec and Metadata into a portal)."),(0,o.kt)("h3",{id:"chain-specification"},"Chain Specification"),(0,o.kt)("h4",{id:"chain-spec-qr"},"Chain Spec QR"),(0,o.kt)("p",null,"To add more chains on the Vault app you can follow the instructions\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-specs"},"here"),".\nIn this example we will add the ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-assets"},"Asset Hub")," system parachain. Briefly,\nfork the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/parity-signer"},"Parity Signer GitHub repository"),", start the\nterminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"cargo run add-specs -d -u wss://kusama-asset-hub-rpc.polkadot.io --encryption sr25519")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"wss://kusama-asset.hub-rpc.polkadot.io")," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,o.kt)("inlineCode",{parentName:"p"},"sign_me_add_specs_statemine_sr25510")," under the\n",(0,o.kt)("inlineCode",{parentName:"p"},"files/in_progress")," folder. See\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/blob/089fd77b14169749e35e073a93f7e7276963009c/packages/apps-config/src/endpoints/productionRelayPolkadot.ts"},"this GitHub page")," for a list of all endpoints listed in the Polkadot-JS UI.",""),(0,o.kt)("h4",{id:"generating-signature"},"Generating Signature"),(0,o.kt)("admonition",{title:"Use a hot account",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"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.")),(0,o.kt)("p",null,"Start the terminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/in_progress")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},'cat sign_me_add_specs_statemine_sr25519 | subkey sign --suri "YOUR SEED PHRASE"')),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},'"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:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"0xc4ce72db959000b6166af96d3bda55a927fd837747bf1bf1ae8a69e57c9ef37c25a88707c47b105a9eb1fbcf9345680eff57eb978cf73919506f6c738834e78a")),(0,o.kt)("h4",{id:"signing-chain-spec"},"Signing Chain Spec"),(0,o.kt)("p",null,"Now, go back to the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"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")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"PUBLIC KEY")," is the public key of the account with seed ",(0,o.kt)("inlineCode",{parentName:"p"},'"YOUR SEED PHRASE"'),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"SIGNATURE"),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,o.kt)("inlineCode",{parentName:"p"},"add_specs_statemine-sr25519")," under the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/completed")," folder."),(0,o.kt)("h3",{id:"metadata-updates"},"Metadata Updates"),(0,o.kt)("p",null,"Similarly to what we did for the chain specification, we now generate and sign the Asset Hub\nmetadata."),(0,o.kt)("h4",{id:"metadata-qr-fountain"},"Metadata QR Fountain"),(0,o.kt)("p",null,"To update the chain metadata for the Asset Hub specs on the Vault app you can follow the\ninstructions\n",(0,o.kt)("a",{parentName:"p",href:"https://paritytech.github.io/parity-signer/tutorials/Add-New-Network.html#add-network-metadata"},"here"),".\nBriefly, in the Parity Signer repository, start the terminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder\nand type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"cargo run load-metadata -d -u wss://kusama-asset-hub-rpc.polkadot.io")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"wss://kusama-asset-hub-rpc.polkadot.io")," is the Parity RPC endpoint for the Asset Hub on\nKusama. This will create the file ",(0,o.kt)("inlineCode",{parentName:"p"},"sign_me_load_metadata_statemineV9370")," under the\n",(0,o.kt)("inlineCode",{parentName:"p"},"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,o.kt)("inlineCode",{parentName:"p"},"V9370"),"."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Note that the name of the file changes according to the network version. That is, ",(0,o.kt)("inlineCode",{parentName:"p"},"????")," in\n",(0,o.kt)("inlineCode",{parentName:"p"},"sign_me_load_metadata_statemineV????")," will be the latest version at fetch time.")),(0,o.kt)("h4",{id:"generating-signature-1"},"Generating Signature"),(0,o.kt)("admonition",{title:"Use a hot account",type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"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.")),(0,o.kt)("p",null,"Start the terminal within the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/in_progress")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},'cat sign_me_load_metadata_statemineV9370 | subkey sign --suri "YOUR SEED PHRASE"')),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},'"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:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"0xde1ad7aeb252acb3cf42a522dcc8dc3f317a49be2ed636836dd6df8f7e47135f2c712480055822eba87e9ea5ac7d3bba96045992ae795856fdf4eea09a411f85")),(0,o.kt)("admonition",{title:"Do not copy the code lines above",type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Note that the name of the file changes according to the network version. That is, ",(0,o.kt)("inlineCode",{parentName:"p"},"????")," in\n",(0,o.kt)("inlineCode",{parentName:"p"},"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,o.kt)("inlineCode",{parentName:"p"},"files/in_progress"),"\nfolder. The signature changes as well.")),(0,o.kt)("h4",{id:"signing-metadata"},"Signing Metadata"),(0,o.kt)("p",null,"Now, go back to the ",(0,o.kt)("inlineCode",{parentName:"p"},"/generate_message")," folder and type the following:"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"cargo run --release make --goal qr --crypto sr25519 --msg load-metadata --payload sign_me_load_metadata_statemineV9370 --verifier-hex PUBLIC KEY --signature-hex SIGNATURE")),(0,o.kt)("p",null,"where ",(0,o.kt)("inlineCode",{parentName:"p"},"PUBLIC KEY")," is the public key of the account with seed ",(0,o.kt)("inlineCode",{parentName:"p"},'"YOUR SEED PHRASE"'),", and ",(0,o.kt)("inlineCode",{parentName:"p"},"SIGNATURE"),"\nis the signature generated in the previous step. Running the code above will create the file\n",(0,o.kt)("inlineCode",{parentName:"p"},"load_metadata_statemineV9370")," under the ",(0,o.kt)("inlineCode",{parentName:"p"},"files/completed")," folder."),(0,o.kt)("h3",{id:"add-chain--update-metadata"},"Add Chain & Update Metadata"),(0,o.kt)("p",null,"You can open ",(0,o.kt)("inlineCode",{parentName:"p"},"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,o.kt)("inlineCode",{parentName:"p"},"load_metadata_statemineV9370"),". This is a .apng file containing the QR\ncode fountain to do the metadata update for the Asset Hub on Kusama."),(0,o.kt)("h3",{id:"metadata-portal"},"Metadata Portal"),(0,o.kt)("h4",{id:"modify-config-file"},"Modify ",(0,o.kt)("inlineCode",{parentName:"h4"},"config")," File"),(0,o.kt)("p",null,"Alternatively, you can add the chain specification QR code and the metadata QR code fountain in a\nmetadata portal. Briefly, fork the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/metadata-portal"},"Parity's Metadata Portal GitHub repository"),". You can\nmodify the following fields of the ",(0,o.kt)("inlineCode",{parentName:"p"},"config.toml")," file:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"name"),": your name / institution"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"public_key"),": the public key of the account you use to sign the chain spec and the metadata."),(0,o.kt)("li",{parentName:"ul"},"At the bottom of the file add the following information:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},'[[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')),(0,o.kt)("p",null,"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."),(0,o.kt)("h4",{id:"rename-chains-files"},"Rename Chain's Files"),(0,o.kt)("p",null,"Rename the signed chain specification and metadata files as follow:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Chain specification: ",(0,o.kt)("inlineCode",{parentName:"p"},"add_specs_statemine-sr25519")," --\x3e ",(0,o.kt)("inlineCode",{parentName:"p"},"statemine_specs.png"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Metadata updates: ",(0,o.kt)("inlineCode",{parentName:"p"},"load_metadata_statemineV9370"),"--\x3e ",(0,o.kt)("inlineCode",{parentName:"p"},"statemine_metadata_9370.apng")))),(0,o.kt)("p",null,"Thus, for chain specification the file must be renamed to ",(0,o.kt)("inlineCode",{parentName:"p"},"chainName_specs.png")," while for metadata\nthe file must be renamed to ",(0,o.kt)("inlineCode",{parentName:"p"},"chainName_metadata_version.apng")," where ",(0,o.kt)("inlineCode",{parentName:"p"},"chainName")," is the name of the\nchain and ",(0,o.kt)("inlineCode",{parentName:"p"},"version")," is the version of the metadata."),(0,o.kt)("p",null,"Add the renamed files to the ",(0,o.kt)("inlineCode",{parentName:"p"},"/public/qr folder")," within the Metadata Portal repository."),(0,o.kt)("h4",{id:"run-portal"},"Run Portal"),(0,o.kt)("p",null,"Open the terminal within the Metadata Portal repository and run ",(0,o.kt)("inlineCode",{parentName:"p"},"make updater"),". Then run\n",(0,o.kt)("inlineCode",{parentName:"p"},"make collector"),"; this will create the ",(0,o.kt)("inlineCode",{parentName:"p"},"_latest.apng")," files for each of the chains (removed by the\ncommand ",(0,o.kt)("inlineCode",{parentName:"p"},"make cleaner"),"). Finally, run ",(0,o.kt)("inlineCode",{parentName:"p"},"yarn start")," to load the metadata portal on your localhost."))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dc36d550.0c153b40.js b/assets/js/dc36d550.0c153b40.js new file mode 100644 index 000000000000..2dfdb54d4ad1 --- /dev/null +++ b/assets/js/dc36d550.0c153b40.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4359],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 c(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},m=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=s(n),p=a,f=d["".concat(l,".").concat(p)]||d[p]||u[p]||i;return n?r.createElement(f,c(c({ref:t},m),{},{components:n})):r.createElement(f,c({ref:t},m))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,c=new Array(i);c[0]=p;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:a,c[1]=o;for(var s=2;s{n.d(t,{Z:()=>a});var r=n(67294);const a=function(e){var t,n=e.message,a=(0,r.useState)(!0),i=a[0],c=a[1];return r.createElement(r.Fragment,null,i&&r.createElement("div",{className:"message-box"},r.createElement("button",{className:"close-button",onClick:function(){c(!1)}},"\u2716 "),r.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52991:(e,t,n)=>{n.d(t,{Z:()=>h});var r=n(67294),a=n(86010),i=n(53438),c=n(39960),o=n(13919),l=n(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function m(e){var t=e.href,n=e.children;return r.createElement(c.Z,{href:t,className:(0,a.Z)("card padding--lg",s.cardContainer)},n)}function d(e){var t=e.href,n=e.icon,i=e.title,c=e.description;return r.createElement(m,{href:t},r.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:i},n," ",i),c&&r.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:c},c))}function u(e){var t,n=e.item,a=(0,i.Wl)(n);return a?r.createElement(d,{href:a,icon:"\ud83d\uddc3\ufe0f",title:n.label,description:null!=(t=n.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:n.items.length})}):null}function p(e){var t,n,a=e.item,c=(0,o.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,i.xz)(null!=(t=a.docId)?t:void 0);return r.createElement(d,{href:a.href,icon:c,title:a.label,description:null!=(n=a.description)?n:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return r.createElement(p,{item:t});case"category":return r.createElement(u,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function v(e){var t=e.className,n=(0,i.jA)();return r.createElement(h,{items:n.items,className:t})}function h(e){var t=e.items,n=e.className;if(!t)return r.createElement(v,e);var c=(0,i.MN)(t);return r.createElement("section",{className:(0,a.Z)("row",n)},c.map((function(e,t){return r.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},r.createElement(f,{item:e}))})))}},62252:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>m,default:()=>h,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var r=n(87462),a=n(63366),i=(n(67294),n(3905)),c=n(35703),o=n(52991),l=["components"],s={id:"maintain-archive",title:"Maintain Archive",sidebar_label:"Archive",description:"Archive for the Maintain Section.",keywords:["Democracy","Council","Gov1","Councillor"],slug:"../maintain-archive"},m=void 0,d={unversionedId:"maintain/maintain-archive",id:"maintain/maintain-archive",title:"Maintain Archive",description:"Archive for the Maintain Section.",source:"@site/../docs/maintain/maintain-archive.md",sourceDirName:"maintain",slug:"/maintain-archive",permalink:"/docs/maintain-archive",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/maintain-archive.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",frontMatter:{id:"maintain-archive",title:"Maintain Archive",sidebar_label:"Archive",description:"Archive for the Maintain Section.",keywords:["Democracy","Council","Gov1","Councillor"],slug:"../maintain-archive"},sidebar:"docs",previous:{title:"Validator Best Practices",permalink:"/docs/maintain-guides-avoid-slashing"},next:{title:"Participate in Democracy",permalink:"/docs/maintain/maintain-guides-democracy"}},u={},p=[],f={toc:p},v="wrapper";function h(e){var t=e.components,n=(0,a.Z)(e,l);return(0,i.kt)(v,(0,r.Z)({},f,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(c.Z,{message:"This section contains archived pages. The content in them no longer applies to Polkadot but can\nstill be relevant for parachains and related projects.",mdxType:"MessageBox"}),(0,i.kt)(o.Z,{mdxType:"DocCardList"}))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dc36d550.399f8361.js b/assets/js/dc36d550.399f8361.js deleted file mode 100644 index a8a0d7b57f4e..000000000000 --- a/assets/js/dc36d550.399f8361.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4359],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=n.createContext({}),s=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},m=function(e){var t=s(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=s(r),p=i,f=d["".concat(l,".").concat(p)]||d[p]||u[p]||a;return r?n.createElement(f,c(c({ref:t},m),{},{components:r})):n.createElement(f,c({ref:t},m))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,c=new Array(a);c[0]=p;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:i,c[1]=o;for(var s=2;s{r.d(t,{Z:()=>h});var n=r(67294),i=r(86010),a=r(53438),c=r(39960),o=r(13919),l=r(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function m(e){var t=e.href,r=e.children;return n.createElement(c.Z,{href:t,className:(0,i.Z)("card padding--lg",s.cardContainer)},r)}function d(e){var t=e.href,r=e.icon,a=e.title,c=e.description;return n.createElement(m,{href:t},n.createElement("h2",{className:(0,i.Z)("text--truncate",s.cardTitle),title:a},r," ",a),c&&n.createElement("p",{className:(0,i.Z)("text--truncate",s.cardDescription),title:c},c))}function u(e){var t,r=e.item,i=(0,a.Wl)(r);return i?n.createElement(d,{href:i,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function p(e){var t,r,i=e.item,c=(0,o.Z)(i.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,a.xz)(null!=(t=i.docId)?t:void 0);return n.createElement(d,{href:i.href,icon:c,title:i.label,description:null!=(r=i.description)?r:null==l?void 0:l.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(p,{item:t});case"category":return n.createElement(u,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function v(e){var t=e.className,r=(0,a.jA)();return n.createElement(h,{items:r.items,className:t})}function h(e){var t=e.items,r=e.className;if(!t)return n.createElement(v,e);var c=(0,a.MN)(t);return n.createElement("section",{className:(0,i.Z)("row",r)},c.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},62252:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>v,frontMatter:()=>l,metadata:()=>m,toc:()=>u});var n=r(87462),i=r(63366),a=(r(67294),r(3905)),c=r(52991),o=["components"],l={id:"maintain-archive",title:"Maintain Archive",sidebar_label:"Archive",description:"Archive for the Maintain Section.",keywords:["Democracy","Council","Gov1","Councillor"],slug:"../maintain-archive"},s=void 0,m={unversionedId:"maintain/maintain-archive",id:"maintain/maintain-archive",title:"Maintain Archive",description:"Archive for the Maintain Section.",source:"@site/../docs/maintain/maintain-archive.md",sourceDirName:"maintain",slug:"/maintain-archive",permalink:"/docs/maintain-archive",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/maintain-archive.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"maintain-archive",title:"Maintain Archive",sidebar_label:"Archive",description:"Archive for the Maintain Section.",keywords:["Democracy","Council","Gov1","Councillor"],slug:"../maintain-archive"},sidebar:"docs",previous:{title:"Validator Best Practices",permalink:"/docs/maintain-guides-avoid-slashing"},next:{title:"Participate in Democracy",permalink:"/docs/maintain/maintain-guides-democracy"}},d={},u=[],p={toc:u},f="wrapper";function v(e){var t=e.components,r=(0,i.Z)(e,o);return(0,a.kt)(f,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"sticky",style:{zIndex:1}},(0,a.kt)("br",null),(0,a.kt)("p",null,"This section contains archived pages. The content in them no longer applies to Polkadot but can\nstill be relevant for parachains and related projects.")),(0,a.kt)(c.Z,{mdxType:"DocCardList"}))}v.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dd2fa029.01163b0e.js b/assets/js/dd2fa029.01163b0e.js deleted file mode 100644 index 3d7850c35ae3..000000000000 --- a/assets/js/dd2fa029.01163b0e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9962],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=s(r),m=a,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return r?n.createElement(f,l(l({ref:t},d),{},{components:r})):n.createElement(f,l({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var s=2;s{r.d(t,{Z:()=>y});var n=r(67294),a=r(86010),o=r(53438),l=r(39960),i=r(13919),c=r(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var t=e.href,r=e.children;return n.createElement(l.Z,{href:t,className:(0,a.Z)("card padding--lg",s.cardContainer)},r)}function p(e){var t=e.href,r=e.icon,o=e.title,l=e.description;return n.createElement(d,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:o},r," ",o),l&&n.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:l},l))}function u(e){var t,r=e.item,a=(0,o.Wl)(r);return a?n.createElement(p,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,c.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,l=(0,i.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",c=(0,o.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(p,{href:a.href,icon:l,title:a.label,description:null!=(r=a.description)?r:null==c?void 0:c.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(u,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function k(e){var t=e.className,r=(0,o.jA)();return n.createElement(y,{items:r.items,className:t})}function y(e){var t=e.items,r=e.className;if(!t)return n.createElement(k,e);var l=(0,o.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},l.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},78209:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>k,frontMatter:()=>c,metadata:()=>d,toc:()=>u});var n=r(87462),a=r(63366),o=(r(67294),r(3905)),l=r(52991),i=["components"],c={id:"learn-polkadotjs",title:"Polkadot-JS",sidebar_label:"Polkadot-JS",description:"Overview of Polkadot-JS.",keywords:["polkadot-js","polkadot js"],slug:"../learn-polkadotjs"},s=void 0,d={unversionedId:"learn/learn-polkadotjs",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadotjs.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",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"}},p={},u=[],m={toc:u},f="wrapper";function k(e){var t=e.components,r=(0,a.Z)(e,i);return(0,o.kt)(f,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"sticky",style:{zIndex:1}},(0,o.kt)("br",null),(0,o.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,o.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,o.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,o.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,o.kt)(l.Z,{mdxType:"DocCardList"}))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dd2fa029.a3138a8e.js b/assets/js/dd2fa029.a3138a8e.js new file mode 100644 index 000000000000..a33dc370a570 --- /dev/null +++ b/assets/js/dd2fa029.a3138a8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9962],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=s(r),m=a,f=p["".concat(c,".").concat(m)]||p[m]||u[m]||o;return r?n.createElement(f,l(l({ref:t},d),{},{components:r})):n.createElement(f,l({ref:t},d))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var s=2;s{r.d(t,{Z:()=>a});var n=r(67294);const a=function(e){var t,r=e.message,a=(0,n.useState)(!0),o=a[0],l=a[1];return n.createElement(n.Fragment,null,o&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){l(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=r,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},52991:(e,t,r)=>{r.d(t,{Z:()=>k});var n=r(67294),a=r(86010),o=r(53438),l=r(39960),i=r(13919),c=r(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var t=e.href,r=e.children;return n.createElement(l.Z,{href:t,className:(0,a.Z)("card padding--lg",s.cardContainer)},r)}function p(e){var t=e.href,r=e.icon,o=e.title,l=e.description;return n.createElement(d,{href:t},n.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:o},r," ",o),l&&n.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:l},l))}function u(e){var t,r=e.item,a=(0,o.Wl)(r);return a?n.createElement(p,{href:a,icon:"\ud83d\uddc3\ufe0f",title:r.label,description:null!=(t=r.description)?t:(0,c.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:r.items.length})}):null}function m(e){var t,r,a=e.item,l=(0,i.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",c=(0,o.xz)(null!=(t=a.docId)?t:void 0);return n.createElement(p,{href:a.href,icon:l,title:a.label,description:null!=(r=a.description)?r:null==c?void 0:c.description})}function f(e){var t=e.item;switch(t.type){case"link":return n.createElement(m,{item:t});case"category":return n.createElement(u,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function y(e){var t=e.className,r=(0,o.jA)();return n.createElement(k,{items:r.items,className:t})}function k(e){var t=e.items,r=e.className;if(!t)return n.createElement(y,e);var l=(0,o.MN)(t);return n.createElement("section",{className:(0,a.Z)("row",r)},l.map((function(e,t){return n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},78209:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>k,frontMatter:()=>s,metadata:()=>p,toc:()=>m});var n=r(87462),a=r(63366),o=(r(67294),r(3905)),l=r(35703),i=r(52991),c=["components"],s={id:"learn-polkadotjs",title:"Polkadot-JS",sidebar_label:"Polkadot-JS",description:"Overview of Polkadot-JS.",keywords:["polkadot-js","polkadot js"],slug:"../learn-polkadotjs"},d=void 0,p={unversionedId:"learn/learn-polkadotjs",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadotjs.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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"}},u={},m=[],f={toc:m},y="wrapper";function k(e){var t=e.components,r=(0,a.Z)(e,c);return(0,o.kt)(y,(0,n.Z)({},f,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(l.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)(i.Z,{mdxType:"DocCardList"}))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e495ca4d.1c655a98.js b/assets/js/e495ca4d.1c655a98.js deleted file mode 100644 index eab71d4fc616..000000000000 --- a/assets/js/e495ca4d.1c655a98.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8951],{3905:(e,t,o)=>{o.d(t,{Zo:()=>d,kt:()=>m});var n=o(67294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function r(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):r(r({},t),e)),o},d=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var o=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(o),u=a,m=p["".concat(l,".").concat(u)]||p[u]||h[u]||i;return o?n.createElement(m,r(r({ref:t},d),{},{components:o})):n.createElement(m,r({ref:t},d))}));function m(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=o.length,r=new Array(i);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,r[1]=s;for(var c=2;c{o.r(t),o.d(t,{assets:()=>h,contentTitle:()=>d,default:()=>k,frontMatter:()=>c,metadata:()=>p,toc:()=>u});var n=o(87462),a=o(63366),i=o(67294),r=o(3905);const s=function(e){var t,o=e.message,n=(0,i.useState)(!0),a=n[0],r=n[1];return i.createElement(i.Fragment,null,a&&i.createElement("div",{className:"message-box"},i.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),i.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))};var l=["components"],c={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"},d=void 0,p={unversionedId:"maintain/archive/maintain-guides-democracy",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-democracy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714065375,formattedLastUpdatedAt:"Apr 25, 2024",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"}},h={},u=[{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}],m={toc:u},g="wrapper";function k(e){var t=e.components,i=(0,a.Z)(e,l);return(0,r.kt)(g,(0,n.Z)({},m,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(s,{message:"The content on this page is archived. For up-to-date information about governance, see the\n[Polkadot OpenGov page](/docs/learn-polkadot-opengov).",mdxType:"MessageBox"}),(0,r.kt)("p",null,"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,r.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-how-to-join-council"},"council")," and the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#technical-committee"},"technical committee"),"."),(0,r.kt)("p",null,"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,r.kt)("em",{parentName:"p"},"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,r.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"here"),"."),(0,r.kt)("p",null,"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."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction")," - a place to discuss\ngovernance and the future of Polkadot."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Kusama-Direction:parity.io"},"Kusama Direction")," - a place to discuss\ngovernance and the future of Kusama."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.polkassembly.io"},"Polkadot")," and ",(0,r.kt)("a",{parentName:"li",href:"https://kusama.polkassembly.io"},"Kusama"),"\nPolkassembly - for current referenda, latest proposals, motions, treasury proposals, tips,\nbounties, and more."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://matrix.to/#/#dailydigest:web3.foundation"},"Polkadot Daily Digest")," - News about what is\nhappening in the Polkadot ecosystem, published every weekday except holidays.")),(0,r.kt)("h2",{id:"important-parameters"},"Important Parameters"),(0,r.kt)("p",null,"The important parameters to be aware of when voting using the Democracy module are as follows:"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Launch Period")," - How often new public referenda are launched."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Voting Period")," - How often votes for referenda are tallied."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Emergency Voting Period")," - The minimum voting period for a fast-tracked emergency referendum."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Minimum Deposit")," - The minimum amount to be used as a deposit for a public referendum proposal."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Enactment Period")," - The minimum period for locking funds ",(0,r.kt)("em",{parentName:"p"},"and")," the period between a proposal\nbeing approved and enacted."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Cooloff Period")," - The period in blocks where a proposal may not be re-submitted after being\nvetoed."),(0,r.kt)("h2",{id:"proposing-an-action"},"Proposing an Action"),(0,r.kt)("p",null,'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.'),(0,r.kt)("admonition",{title:"Proposals cannot be revoked by the proposer, even if they never turn into a referendum",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"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,r.kt)("p",null,'order 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,r.kt)("p",null,"The example below demonstrates the creation of a proposal on Kusama (",(0,r.kt)("strong",{parentName:"p"},"the same procedure applies to\nPolkadot"),'). If you wanted to propose that a remark "Expect Chaos!" is added, the preimage hash\nwould be ',(0,r.kt)("inlineCode",{parentName:"p"},"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,r.kt)("p",null,(0,r.kt)("img",{alt:"submit preimage",src:o(71214).Z,width:"1182",height:"526"})),(0,r.kt)("p",null,'Now you will click on the "Submit proposal" button and enter the preimage hash in the input titled\n"preimage hash" and ',(0,r.kt)("em",{parentName:"p"},"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,r.kt)("p",null,(0,r.kt)("img",{alt:"submit proposal",src:o(95545).Z,width:"1184",height:"456"})),(0,r.kt)("p",null,"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,r.kt)("p",null,(0,r.kt)("img",{alt:"proposal hash",src:o(70657).Z,width:"1424",height:"276"})),(0,r.kt)("h2",{id:"submitting-a-preimage"},"Submitting a Preimage"),(0,r.kt)("p",null,"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,r.kt)("p",null,"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,r.kt)("p",null,'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,r.kt)("p",null,(0,r.kt)("img",{alt:"submit preimage",src:o(71214).Z,width:"1182",height:"526"})),(0,r.kt)("p",null,"Once the transaction is included you should see the UI update with the information for your already\nsubmitted proposal."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"proposals",src:o(60580).Z,width:"1424",height:"276"})),(0,r.kt)("h2",{id:"endorsing-a-proposal"},"Endorsing a Proposal"),(0,r.kt)("p",null,"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,r.kt)("p",null,"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,r.kt)("p",null,"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,r.kt)("em",{parentName:"p"},"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,r.kt)("p",null,'To endorse a proposal, navigate to the proposal you want to endorse and click on the "Endorse"\nbutton.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"endorsement button",src:o(16014).Z,width:"1440",height:"128"})),(0,r.kt)("p",null,'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,r.kt)("p",null,(0,r.kt)("img",{alt:"endorsement confirmed",src:o(50937).Z,width:"1184",height:"356"})),(0,r.kt)("p",null,"Once successful, you will see your endorsement appear in the dropdown in the proposal details."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"endorsement result",src:o(33346).Z,width:"1440",height:"336"})),(0,r.kt)("h2",{id:"voting-on-a-proposal"},"Voting on a Proposal"),(0,r.kt)("p",null,"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 locked, you are\nunable to transfer them, however they can still be used for further votes. Locks are layered on top\nof each other, so an eight-week lock does not become a 15-week lock if you vote again a week later,\nrather another eight-week lock is placed to extend the lock just one extra week."),(0,r.kt)("admonition",{title:"Voting and staking locks can overlap",type:"info"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"A user can use staked funds to vote on referenda (and/or to vote for Councillors)."),(0,r.kt)("li",{parentName:"ul"},"A user is only prohibited from transferring these funds to another account."))),(0,r.kt)("p",null,"To vote on a referendum, navigate to the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/democracy/"},'"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,r.kt)("p",null,'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,r.kt)("p",null,"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,r.kt)("p",null,'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,r.kt)("p",null,(0,r.kt)("img",{alt:"voting",src:o(76544).Z,width:"940",height:"712"})),(0,r.kt)("h2",{id:"unlocking-locked-tokens"},"Unlocking Locked Tokens"),(0,r.kt)("p",null,"Like ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-DOT#lazy-vesting"},"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,r.kt)("a",{parentName:"p",href:"/docs/learn-nominator"},"here"),"."),(0,r.kt)("p",null,'You can do this from the "Accounts" page in\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"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,r.kt)("p",null,(0,r.kt)("img",{alt:"democracy balance details",src:o(41451).Z,width:"342",height:"214"})),(0,r.kt)("p",null,'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,r.kt)("p",null,(0,r.kt)("img",{alt:"democracy clear locks",src:o(99381).Z,width:"366",height:"933"})),(0,r.kt)("h4",{id:"with-a-ledger-hardware-wallet-or-unlocking-very-old-locks"},"With a Ledger hardware wallet or Unlocking Very Old Locks"),(0,r.kt)("p",null,"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,r.kt)("p",null,"Instead, you must clear the lock by directly issuing the correct extrinsics."),(0,r.kt)("p",null,"Navigate to the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics page")," and submit the\nfollowing extrinsic: ",(0,r.kt)("inlineCode",{parentName:"p"},"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,r.kt)("p",null,"The number of the referendum for which you voted is visible in an explorer such as Subscan."),(0,r.kt)("p",null,'You need to press the "Submit Transaction" button to submit the extrinsic.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"democracy clear_lock_extrinsic_1",src:o(33022).Z,width:"871",height:"234"})),(0,r.kt)("p",null,"Now submit the following extrinsic: `democracy.unlock(target), where the target is your account\naddress."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"democracy clear_lock_extrinsic_2",src:o(5066).Z,width:"869",height:"237"})),(0,r.kt)("p",null,"If you return to the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Accounts page"),", you should see that\nthe democracy lock has been released."),(0,r.kt)("p",null,"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,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/council"},"Council"),' page, click "Vote", and then click on "Unvote\nAll".'),(0,r.kt)("h2",{id:"delegate-a-vote"},"Delegate a Vote"),(0,r.kt)("p",null,"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,r.kt)("p",null,"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,r.kt)("p",null,'You can delegate your vote to another account and even attach a "Conviction" to the delegation.\nNavigate to the ',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},'"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,r.kt)("p",null,(0,r.kt)("img",{alt:"delegate",src:o(40639).Z,width:"1880",height:"724"})),(0,r.kt)("p",null,"Your delegation will count toward whatever account you delegated for votes on until you explicitly\nundelegate your vote."),(0,r.kt)("admonition",{title:"Query the chain state for an account's delegation preferences",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"It is possible to query the delegation preferences of any actively delegating account on the network\nthrough ",(0,r.kt)("inlineCode",{parentName:"p"},"democracy.votingOf")," extrinsic."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("img",{alt:"query delegation",src:o(83181).Z,width:"2002",height:"992"}))),(0,r.kt)("h2",{id:"undelegate-a-vote"},"Undelegate a Vote"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"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,r.kt)("p",{parentName:"admonition"},"This will only matter to accounts with conviction, as the accounts with no conviction don't have any\nlock period."),(0,r.kt)("p",{parentName:"admonition"},"Examples:"),(0,r.kt)("ol",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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."))),(0,r.kt)("p",{parentName:"admonition"},"To understand this in further detail checkout\n",(0,r.kt)("a",{parentName:"p",href:"https://substrate.stackexchange.com/questions/5067/delegating-and-undelegating-during-the-lock-period-extends-it-for-the-initial-am"},"this stackexchange post."))),(0,r.kt)("p",null,'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,r.kt)("inlineCode",{parentName:"p"},"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."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"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,r.kt)("inlineCode",{parentName:"p"},"undelegate")," transaction to clear her delegation."),(0,r.kt)("p",null,"The easiest way to do this is from the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},'"Accounts" tab on Polkadot-JS UI')," where you can manage the\ndelegation of your account."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"manage delegation",src:o(43339).Z,width:"1990",height:"224"})),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"undelegate",src:o(55002).Z,width:"1884",height:"732"})),(0,r.kt)("h2",{id:"voting-with-a-governance-proxy"},"Voting with a Governance Proxy"),(0,r.kt)("p",null,'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.'),(0,r.kt)("p",null,"For more material on adding and removing Governance proxies, as well as other types, please see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies"},"Proxy page"),"."))}k.isMDXComponent=!0},40639:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/delegate-vote-a8b4d534e0e004f8d0d4a32a45f3a77a.png"},50937:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/endorse-7e22987ceebef0c1ce17f475510eacc9.png"},16014:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/endorse1-6f9ed6c3eb99cad52bd07e250307b397.png"},33346:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/endorsed-list-460b771aedaf6e91f9caaaf728d76dfd.png"},43339:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/manage-delegation-19501197d96e688a08f257a1443f18cd.png"},70657:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/proposal-hash-1ae67063393c7e77001e538b9d4a67af.png"},60580:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/proposals-9b3cc3a8bd2ff1c01c0dbc7c90950d3f.png"},83181:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/query-delegation-fece7720f6282de8928688d61ee38477.png"},71214:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/submit_preimage-b0165c4aa5615a416bc1698ff21cba2e.png"},95545:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/submit_proposal-24cc24bb4fdb502da80a28082f779da8.png"},55002:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/undelegate-save-002a17067954a098e2942aa1a7583698.png"},76544:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/voting-4abb1178436833648da30b63d860aa10.png"},41451:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_balance_details-56b5c71fe66fc4a0d66ba4820a3cc6a9.png"},33022:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_1-c42556da5e59023abb388eac1a12aee2.png"},5066:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_2-f6a313a6755d15eb6ab26d33edb80a72.png"},99381:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_clear_locks-028d6202e19ad4410e07a5da8bb69277.png"}}]); \ No newline at end of file diff --git a/assets/js/e495ca4d.8806413d.js b/assets/js/e495ca4d.8806413d.js new file mode 100644 index 000000000000..ee40f4953727 --- /dev/null +++ b/assets/js/e495ca4d.8806413d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8951],{3905:(e,t,o)=>{o.d(t,{Zo:()=>d,kt:()=>m});var n=o(67294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function r(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):r(r({},t),e)),o},d=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var o=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(o),u=a,m=p["".concat(l,".").concat(u)]||p[u]||h[u]||i;return o?n.createElement(m,r(r({ref:t},d),{},{components:o})):n.createElement(m,r({ref:t},d))}));function m(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=o.length,r=new Array(i);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,r[1]=s;for(var c=2;c{o.d(t,{Z:()=>a});var n=o(67294);const a=function(e){var t,o=e.message,a=(0,n.useState)(!0),i=a[0],r=a[1];return n.createElement(n.Fragment,null,i&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},14943:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>g,frontMatter:()=>l,metadata:()=>d,toc:()=>h});var n=o(87462),a=o(63366),i=(o(67294),o(3905)),r=o(35703),s=["components"],l={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"},c=void 0,d={unversionedId:"maintain/archive/maintain-guides-democracy",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/maintain/archive/maintain-guides-democracy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714065375,formattedLastUpdatedAt:"Apr 25, 2024",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"}},p={},h=[{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}],u={toc:h},m="wrapper";function g(e){var t=e.components,l=(0,a.Z)(e,s);return(0,i.kt)(m,(0,n.Z)({},u,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(r.Z,{message:"The content on this page is archived. For up-to-date information about governance, see the\n[Polkadot OpenGov page](/docs/learn-polkadot-opengov).",mdxType:"MessageBox"}),(0,i.kt)("p",null,"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,i.kt)("a",{parentName:"p",href:"/docs/maintain/maintain-guides-how-to-join-council"},"council")," and the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance#technical-committee"},"technical committee"),"."),(0,i.kt)("p",null,"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,i.kt)("em",{parentName:"p"},"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,i.kt)("a",{parentName:"p",href:"/docs/learn/learn-governance"},"here"),"."),(0,i.kt)("p",null,"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."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction")," - a place to discuss\ngovernance and the future of Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Kusama-Direction:parity.io"},"Kusama Direction")," - a place to discuss\ngovernance and the future of Kusama."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.polkassembly.io"},"Polkadot")," and ",(0,i.kt)("a",{parentName:"li",href:"https://kusama.polkassembly.io"},"Kusama"),"\nPolkassembly - for current referenda, latest proposals, motions, treasury proposals, tips,\nbounties, and more."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#dailydigest:web3.foundation"},"Polkadot Daily Digest")," - News about what is\nhappening in the Polkadot ecosystem, published every weekday except holidays.")),(0,i.kt)("h2",{id:"important-parameters"},"Important Parameters"),(0,i.kt)("p",null,"The important parameters to be aware of when voting using the Democracy module are as follows:"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Launch Period")," - How often new public referenda are launched."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Voting Period")," - How often votes for referenda are tallied."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Emergency Voting Period")," - The minimum voting period for a fast-tracked emergency referendum."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Minimum Deposit")," - The minimum amount to be used as a deposit for a public referendum proposal."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Enactment Period")," - The minimum period for locking funds ",(0,i.kt)("em",{parentName:"p"},"and")," the period between a proposal\nbeing approved and enacted."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Cooloff Period")," - The period in blocks where a proposal may not be re-submitted after being\nvetoed."),(0,i.kt)("h2",{id:"proposing-an-action"},"Proposing an Action"),(0,i.kt)("p",null,'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.'),(0,i.kt)("admonition",{title:"Proposals cannot be revoked by the proposer, even if they never turn into a referendum",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"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,i.kt)("p",null,'order 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,i.kt)("p",null,"The example below demonstrates the creation of a proposal on Kusama (",(0,i.kt)("strong",{parentName:"p"},"the same procedure applies to\nPolkadot"),'). If you wanted to propose that a remark "Expect Chaos!" is added, the preimage hash\nwould be ',(0,i.kt)("inlineCode",{parentName:"p"},"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,i.kt)("p",null,(0,i.kt)("img",{alt:"submit preimage",src:o(71214).Z,width:"1182",height:"526"})),(0,i.kt)("p",null,'Now you will click on the "Submit proposal" button and enter the preimage hash in the input titled\n"preimage hash" and ',(0,i.kt)("em",{parentName:"p"},"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,i.kt)("p",null,(0,i.kt)("img",{alt:"submit proposal",src:o(95545).Z,width:"1184",height:"456"})),(0,i.kt)("p",null,"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,i.kt)("p",null,(0,i.kt)("img",{alt:"proposal hash",src:o(70657).Z,width:"1424",height:"276"})),(0,i.kt)("h2",{id:"submitting-a-preimage"},"Submitting a Preimage"),(0,i.kt)("p",null,"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,i.kt)("p",null,"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,i.kt)("p",null,'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,i.kt)("p",null,(0,i.kt)("img",{alt:"submit preimage",src:o(71214).Z,width:"1182",height:"526"})),(0,i.kt)("p",null,"Once the transaction is included you should see the UI update with the information for your already\nsubmitted proposal."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"proposals",src:o(60580).Z,width:"1424",height:"276"})),(0,i.kt)("h2",{id:"endorsing-a-proposal"},"Endorsing a Proposal"),(0,i.kt)("p",null,"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,i.kt)("p",null,"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,i.kt)("p",null,"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,i.kt)("em",{parentName:"p"},"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,i.kt)("p",null,'To endorse a proposal, navigate to the proposal you want to endorse and click on the "Endorse"\nbutton.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"endorsement button",src:o(16014).Z,width:"1440",height:"128"})),(0,i.kt)("p",null,'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,i.kt)("p",null,(0,i.kt)("img",{alt:"endorsement confirmed",src:o(50937).Z,width:"1184",height:"356"})),(0,i.kt)("p",null,"Once successful, you will see your endorsement appear in the dropdown in the proposal details."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"endorsement result",src:o(33346).Z,width:"1440",height:"336"})),(0,i.kt)("h2",{id:"voting-on-a-proposal"},"Voting on a Proposal"),(0,i.kt)("p",null,"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 locked, you are\nunable to transfer them, however they can still be used for further votes. Locks are layered on top\nof each other, so an eight-week lock does not become a 15-week lock if you vote again a week later,\nrather another eight-week lock is placed to extend the lock just one extra week."),(0,i.kt)("admonition",{title:"Voting and staking locks can overlap",type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"A user can use staked funds to vote on referenda (and/or to vote for Councillors)."),(0,i.kt)("li",{parentName:"ul"},"A user is only prohibited from transferring these funds to another account."))),(0,i.kt)("p",null,"To vote on a referendum, navigate to the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/democracy/"},'"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,i.kt)("p",null,'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,i.kt)("p",null,"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,i.kt)("p",null,'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,i.kt)("p",null,(0,i.kt)("img",{alt:"voting",src:o(76544).Z,width:"940",height:"712"})),(0,i.kt)("h2",{id:"unlocking-locked-tokens"},"Unlocking Locked Tokens"),(0,i.kt)("p",null,"Like ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-DOT#lazy-vesting"},"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,i.kt)("a",{parentName:"p",href:"/docs/learn-nominator"},"here"),"."),(0,i.kt)("p",null,'You can do this from the "Accounts" page in\n',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"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,i.kt)("p",null,(0,i.kt)("img",{alt:"democracy balance details",src:o(41451).Z,width:"342",height:"214"})),(0,i.kt)("p",null,'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,i.kt)("p",null,(0,i.kt)("img",{alt:"democracy clear locks",src:o(99381).Z,width:"366",height:"933"})),(0,i.kt)("h4",{id:"with-a-ledger-hardware-wallet-or-unlocking-very-old-locks"},"With a Ledger hardware wallet or Unlocking Very Old Locks"),(0,i.kt)("p",null,"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,i.kt)("p",null,"Instead, you must clear the lock by directly issuing the correct extrinsics."),(0,i.kt)("p",null,"Navigate to the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsics page")," and submit the\nfollowing extrinsic: ",(0,i.kt)("inlineCode",{parentName:"p"},"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,i.kt)("p",null,"The number of the referendum for which you voted is visible in an explorer such as Subscan."),(0,i.kt)("p",null,'You need to press the "Submit Transaction" button to submit the extrinsic.'),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"democracy clear_lock_extrinsic_1",src:o(33022).Z,width:"871",height:"234"})),(0,i.kt)("p",null,"Now submit the following extrinsic: `democracy.unlock(target), where the target is your account\naddress."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"democracy clear_lock_extrinsic_2",src:o(5066).Z,width:"869",height:"237"})),(0,i.kt)("p",null,"If you return to the ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},"Accounts page"),", you should see that\nthe democracy lock has been released."),(0,i.kt)("p",null,"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,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/council"},"Council"),' page, click "Vote", and then click on "Unvote\nAll".'),(0,i.kt)("h2",{id:"delegate-a-vote"},"Delegate a Vote"),(0,i.kt)("p",null,"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,i.kt)("p",null,"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,i.kt)("p",null,'You can delegate your vote to another account and even attach a "Conviction" to the delegation.\nNavigate to the ',(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},'"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,i.kt)("p",null,(0,i.kt)("img",{alt:"delegate",src:o(40639).Z,width:"1880",height:"724"})),(0,i.kt)("p",null,"Your delegation will count toward whatever account you delegated for votes on until you explicitly\nundelegate your vote."),(0,i.kt)("admonition",{title:"Query the chain state for an account's delegation preferences",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"It is possible to query the delegation preferences of any actively delegating account on the network\nthrough ",(0,i.kt)("inlineCode",{parentName:"p"},"democracy.votingOf")," extrinsic."),(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("img",{alt:"query delegation",src:o(83181).Z,width:"2002",height:"992"}))),(0,i.kt)("h2",{id:"undelegate-a-vote"},"Undelegate a Vote"),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"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,i.kt)("p",{parentName:"admonition"},"This will only matter to accounts with conviction, as the accounts with no conviction don't have any\nlock period."),(0,i.kt)("p",{parentName:"admonition"},"Examples:"),(0,i.kt)("ol",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"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.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"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.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"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."))),(0,i.kt)("p",{parentName:"admonition"},"To understand this in further detail checkout\n",(0,i.kt)("a",{parentName:"p",href:"https://substrate.stackexchange.com/questions/5067/delegating-and-undelegating-during-the-lock-period-extends-it-for-the-initial-am"},"this stackexchange post."))),(0,i.kt)("p",null,'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,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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,i.kt)("inlineCode",{parentName:"p"},"undelegate")," transaction to clear her delegation."),(0,i.kt)("p",null,"The easiest way to do this is from the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts"},'"Accounts" tab on Polkadot-JS UI')," where you can manage the\ndelegation of your account."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"manage delegation",src:o(43339).Z,width:"1990",height:"224"})),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"undelegate",src:o(55002).Z,width:"1884",height:"732"})),(0,i.kt)("h2",{id:"voting-with-a-governance-proxy"},"Voting with a Governance Proxy"),(0,i.kt)("p",null,'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.'),(0,i.kt)("p",null,"For more material on adding and removing Governance proxies, as well as other types, please see the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-proxies"},"Proxy page"),"."))}g.isMDXComponent=!0},40639:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/delegate-vote-a8b4d534e0e004f8d0d4a32a45f3a77a.png"},50937:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/endorse-7e22987ceebef0c1ce17f475510eacc9.png"},16014:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/endorse1-6f9ed6c3eb99cad52bd07e250307b397.png"},33346:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/endorsed-list-460b771aedaf6e91f9caaaf728d76dfd.png"},43339:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/manage-delegation-19501197d96e688a08f257a1443f18cd.png"},70657:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/proposal-hash-1ae67063393c7e77001e538b9d4a67af.png"},60580:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/proposals-9b3cc3a8bd2ff1c01c0dbc7c90950d3f.png"},83181:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/query-delegation-fece7720f6282de8928688d61ee38477.png"},71214:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/submit_preimage-b0165c4aa5615a416bc1698ff21cba2e.png"},95545:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/submit_proposal-24cc24bb4fdb502da80a28082f779da8.png"},55002:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/undelegate-save-002a17067954a098e2942aa1a7583698.png"},76544:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/voting-4abb1178436833648da30b63d860aa10.png"},41451:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_balance_details-56b5c71fe66fc4a0d66ba4820a3cc6a9.png"},33022:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_1-c42556da5e59023abb388eac1a12aee2.png"},5066:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_clear_lock_extrinsic_2-f6a313a6755d15eb6ab26d33edb80a72.png"},99381:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/democracy_clear_locks-028d6202e19ad4410e07a5da8bb69277.png"}}]); \ No newline at end of file diff --git a/assets/js/ed3409b3.15269dd0.js b/assets/js/ed3409b3.15269dd0.js new file mode 100644 index 000000000000..4c93ca5a6719 --- /dev/null +++ b/assets/js/ed3409b3.15269dd0.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[8609],{35703:(e,t,o)=>{"use strict";o.d(t,{Z:()=>n});var a=o(67294);const n=function(e){var t,o=e.message,n=(0,a.useState)(!0),r=n[0],s=n[1];return a.createElement(a.Fragment,null,r&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>c});var a=o(74165),n=o(15861),r=o(67294),s=o(87152),i=o(9712),u=o(67425);function l(e,t,o){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,a.Z)().mark((function e(t,o,n){var r,u,l,d,p;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,u=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return l=new s.U(r),e.next=21,i.G.create({provider:l});case 21:d=e.sent,(p=o.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=p[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return u=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return u=(u=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+o);case 35:return e.abrupt("return",u);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,o,a){switch(t){case"humanReadable":(0,u.HumanReadable)(e,o,a);break;case"precise":(0,u.Precise)(e,o,a);break;case"blocksToDays":(0,u.BlocksToDays)(e,a);break;case"erasToDays":(0,u.ErasToDays)(e,a,o);break;case"percentage":(0,u.Percentage)(e,a);break;case"permillToPercent":(0,u.PermillToPercent)(e,a);break;case"arrayLength":(0,u.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,o=e.path,s=e.defaultValue,i=e.filter,u=void 0===i?void 0:i,d=(0,r.useState)(""),c=d[0],h=d[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==u?p(s.toString(),u,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l(t,o,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==u?p(n,u,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),c}},67425:e=>{var t="polkadot",o="kusama",a="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var u=void 0;if(s===t||s===n)u=3;else{if(s!==o&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");u=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(u)+" "+r[s].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===n)i=1;else{if(s!==o&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},64539:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>k,frontMatter:()=>l,metadata:()=>p,toc:()=>h});var a=o(87462),n=o(63366),r=(o(67294),o(3905)),s=o(47940),i=o(35703),u=["components"],l={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"},d=void 0,p={unversionedId:"learn/learn-guides-bounties",id:"learn/learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",description:"Polkadot-JS Guides for Bounties",source:"@site/../docs/learn/learn-guides-bounties.md",sourceDirName:"learn",slug:"/learn-guides-bounties",permalink:"/docs/learn-guides-bounties",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-bounties.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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"}},c={},h=[{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}],m={toc:h},b="wrapper";function k(e){var t=e.components,l=(0,n.Z)(e,u);return(0,r.kt)(b,(0,a.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury#bounties"},"this page")," to learn about Bounties."),(0,r.kt)("admonition",{title:"Notify the Polkadot Direction Channel",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Remember always to notify the\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction Element Channel")," about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#referenda"},"OpenGov referenda")," so that the community can start reviewing\nthem and voting on them.")),(0,r.kt)("h2",{id:"submit-a-bounty-proposal"},"Submit a Bounty Proposal"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_Submit_a_Bounty_Proposal_on_Polkadotjs_Apps__Ps_zfmNXRbm6PuZaj28JBQ"},"this written tutorial"),"\nto learn more about how to submit a bounty proposal.")),(0,r.kt)("p",null,"See the video tutorial below to learn how you can create a bounty and submit it for approval through\nan OpenGov referendum."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/8Cft1-8RWmk/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk"},"Submit a Bounty")))),(0,r.kt)("p",null,'When you add a bounty, this will show as "proposed" in the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Once the community approves your bounty\nproposal as an OpenGov referendum, the bounty will show as "funded" at the end of the\n',(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period")," on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),". You can then proceed with assigning\ncurators to the bounty."),(0,r.kt)("p",null,"To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will need to find an off-chain\nmedium to explain the proposal, for example a bounty proposal document on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"Polkassembly")," or\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing"},"This template"),"\ncan be used to submit all the information needed by OpenGov voters to make an informed decision."),(0,r.kt)("p",null,"Submitting a bounty proposal will reserve\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.bounties.bountyDepositBase",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"","."),(0,r.kt)("h2",{id:"assign-a-curator-to-a-bounty"},"Assign a Curator to a Bounty"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_Assign_a_Curator_to_a_Bounty_on_Polkadotjs_Apps__JgK3eSfXQdm_PSvtz8TelQ"},"this written tutorial"),"\nto learn more about how to assign a curator to a bounty.")),(0,r.kt)("p",null,'Once your bounty is shown as "funded" on the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),", you can propose a bounty curator. See the\nvideo tutorial below to learn how you can add a curator to a bounty and submit it for approval\nthrough an OpenGov referendum."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/TM7vk3oP9IA/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA"},"Assign Curator to a Bounty")))),(0,r.kt)("p",null,"Once your OpenGov referendum has been approved by the community and served the required\n",(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period"),', the bounty will still show as "funded" on\nthe main ',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page")," and await the curator's\nacceptance. The curator must formally accept the curator role by signing a ",(0,r.kt)("inlineCode",{parentName:"p"},"bounties.acceptCurator"),"\nextrinsic. More information about when to do this can be found on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Only after the curators claim their\ncandidacy the bounty will show as "active" on the main Bounty page.'),(0,r.kt)("admonition",{title:"Curator assignment call must be executed after bounty is funded",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"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,r.kt)("p",{parentName:"admonition"},"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,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#submitting-a-proposal"},"Polkadot-JS")," when you submit the proposal\nduring the current spend period).")),(0,r.kt)("h2",{id:"create-and-award-child-bounties"},"Create and Award Child Bounties"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_Create_and_Award_a_Child_Bounty__Q-YFGkYAR3WxMnvYGHiU3Q"},"this written tutorial"),"\nto learn more about how to create and award child bounties.")),(0,r.kt)("admonition",{title:"Remember to add contextual information about child bounties",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"When you add child bounties, please add contextual information on the governance forums\n",(0,r.kt)("a",{parentName:"p",href:"https://polkassembly.io/"},"Polkassembly")," or ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".")),(0,r.kt)("p",null,"See the video tutorial below to learn how to create a child bounty, assign a curator, and award a\nchild bounty."),(0,r.kt)("p",null,"The video will show how to create and award a child bounty using a batch call. We will also include\nproposing and approving curator candidacy for the child bounty. The calls can be executed\nseparately, depending on the process curators consider appropriate for their bounty."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/mLpvx0OQoyM/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM"},"Create and Award Child Bounties")))),(0,r.kt)("p",null,"Note that once a child bounty is awarded, awardees need to wait for the\n8-day delay to be complete before claiming the\nchild bounty."),(0,r.kt)("h2",{id:"claim-a-child-bounty-reward"},"Claim a Child Bounty Reward"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_claim_a_Child_Bounty_reward_on_Polkadotjs__t3V7NDUjQlus40EUjc-5Kw"},"this written tutorial"),"\nto learn more about how to claim a child bounty reward.")),(0,r.kt)("p",null,"The status of child bounties can be viewed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/bounties"},"Polkassembly Bounty page"),' under the specific parent\nbounty. A child bounty status can be "Added", "Awarded", or "Claimed". For example, the parent\nbounty 17 refers to the Community Events Bounty, which has 183 child bounties.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkassembly-child-bounties",src:o(83001).Z,width:"2408",height:"1053"})),(0,r.kt)("p",null,"After a child bounty has been awarded and the\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.bounties.bountyDepositPayoutDelay",defaultValue:115200,filter:"blocksToDays",mdxType:"RPC"}),"","-day\ndelay elapsed, follow the guidelines in the video tutorial below to learn how to claim a child\nbounty reward. Note that the extrinsic to claim the child bounty reward is permissionless, and\nanyone can initiate the claim on behalf of the beneficiary."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/db82aHgy23c/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c"},"Claim Child Bounty Reward")))))}k.isMDXComponent=!0},83001:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkassembly-child-bounties-fde994e770f3e109a07752068aa417b1.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/ed3409b3.610f70ae.js b/assets/js/ed3409b3.610f70ae.js deleted file mode 100644 index ebb44f3e2732..000000000000 --- a/assets/js/ed3409b3.610f70ae.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[8609],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>c});var o=a(74165),n=a(15861),r=a(67294),s=a(87152),i=a(9712),u=a(67425);function d(e,t,a){return l.apply(this,arguments)}function l(){return(l=(0,n.Z)((0,o.Z)().mark((function e(t,a,n){var r,u,d,l,p;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,u=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return d=new s.U(r),e.next=21,i.G.create({provider:d});case 21:l=e.sent,(p=a.split(".")).forEach((function(e){e in l&&(l=l[e])})),e.t1=p[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return u=l.toString(),e.abrupt("break",35);case 29:return e.next=31,l();case 31:return u=(u=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+a);case 35:return e.abrupt("return",u);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,a,o){switch(t){case"humanReadable":(0,u.HumanReadable)(e,a,o);break;case"precise":(0,u.Precise)(e,a,o);break;case"blocksToDays":(0,u.BlocksToDays)(e,o);break;case"erasToDays":(0,u.ErasToDays)(e,o,a);break;case"percentage":(0,u.Percentage)(e,o);break;case"permillToPercent":(0,u.PermillToPercent)(e,o);break;case"arrayLength":(0,u.ArrayLength)(e,o);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,a=e.path,s=e.defaultValue,i=e.filter,u=void 0===i?void 0:i,l=(0,r.useState)(""),c=l[0],h=l[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==u?p(s.toString(),u,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,n.Z)((0,o.Z)().mark((function e(){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,d(t,a,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==u?p(n,u,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),c}},67425:e=>{var t="polkadot",a="kusama",o="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var u=void 0;if(s===t||s===n)u=3;else{if(s!==a&&s!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");u=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(u)+" "+r[s].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===n)i=1;else{if(s!==a&&s!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},64539:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>d,default:()=>b,frontMatter:()=>u,metadata:()=>l,toc:()=>c});var o=a(87462),n=a(63366),r=(a(67294),a(3905)),s=a(47940),i=["components"],u={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"},d=void 0,l={unversionedId:"learn/learn-guides-bounties",id:"learn/learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",description:"Polkadot-JS Guides for Bounties",source:"@site/../docs/learn/learn-guides-bounties.md",sourceDirName:"learn",slug:"/learn-guides-bounties",permalink:"/docs/learn-guides-bounties",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-bounties.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",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"}},p={},c=[{value:"Submit a Bounty Proposal",id:"submit-a-bounty-proposal",level:2},{value:"Assign a Curator to a Bounty",id:"assign-a-curator-to-a-bounty",level:2},{value:"Create and Award Child Bounties",id:"create-and-award-child-bounties",level:2},{value:"Claim a Child Bounty Reward",id:"claim-a-child-bounty-reward",level:2}],h={toc:c},m="wrapper";function b(e){var t=e.components,u=(0,n.Z)(e,i);return(0,r.kt)(m,(0,o.Z)({},h,u,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,r.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,r.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,r.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury#bounties"},"this page")," to learn about Bounties."),(0,r.kt)("admonition",{title:"Notify the Polkadot Direction Channel",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Remember always to notify the\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction Element Channel")," about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#referenda"},"OpenGov referenda")," so that the community can start reviewing\nthem and voting on them.")),(0,r.kt)("h2",{id:"submit-a-bounty-proposal"},"Submit a Bounty Proposal"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_Submit_a_Bounty_Proposal_on_Polkadotjs_Apps__Ps_zfmNXRbm6PuZaj28JBQ"},"this written tutorial"),"\nto learn more about how to submit a bounty proposal.")),(0,r.kt)("p",null,"See the video tutorial below to learn how you can create a bounty and submit it for approval through\nan OpenGov referendum."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/8Cft1-8RWmk/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk"},"Submit a Bounty")))),(0,r.kt)("p",null,'When you add a bounty, this will show as "proposed" in the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Once the community approves your bounty\nproposal as an OpenGov referendum, the bounty will show as "funded" at the end of the\n',(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period")," on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),". You can then proceed with assigning\ncurators to the bounty."),(0,r.kt)("p",null,"To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will need to find an off-chain\nmedium to explain the proposal, for example a bounty proposal document on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"Polkassembly")," or\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing"},"This template"),"\ncan be used to submit all the information needed by OpenGov voters to make an informed decision."),(0,r.kt)("p",null,"Submitting a bounty proposal will reserve\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.bounties.bountyDepositBase",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"","."),(0,r.kt)("h2",{id:"assign-a-curator-to-a-bounty"},"Assign a Curator to a Bounty"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_Assign_a_Curator_to_a_Bounty_on_Polkadotjs_Apps__JgK3eSfXQdm_PSvtz8TelQ"},"this written tutorial"),"\nto learn more about how to assign a curator to a bounty.")),(0,r.kt)("p",null,'Once your bounty is shown as "funded" on the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),", you can propose a bounty curator. See the\nvideo tutorial below to learn how you can add a curator to a bounty and submit it for approval\nthrough an OpenGov referendum."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/TM7vk3oP9IA/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA"},"Assign Curator to a Bounty")))),(0,r.kt)("p",null,"Once your OpenGov referendum has been approved by the community and served the required\n",(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period"),', the bounty will still show as "funded" on\nthe main ',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page")," and await the curator's\nacceptance. The curator must formally accept the curator role by signing a ",(0,r.kt)("inlineCode",{parentName:"p"},"bounties.acceptCurator"),"\nextrinsic. More information about when to do this can be found on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Only after the curators claim their\ncandidacy the bounty will show as "active" on the main Bounty page.'),(0,r.kt)("admonition",{title:"Curator assignment call must be executed after bounty is funded",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"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,r.kt)("p",{parentName:"admonition"},"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,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#submitting-a-proposal"},"Polkadot-JS")," when you submit the proposal\nduring the current spend period).")),(0,r.kt)("h2",{id:"create-and-award-child-bounties"},"Create and Award Child Bounties"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_Create_and_Award_a_Child_Bounty__Q-YFGkYAR3WxMnvYGHiU3Q"},"this written tutorial"),"\nto learn more about how to create and award child bounties.")),(0,r.kt)("admonition",{title:"Remember to add contextual information about child bounties",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"When you add child bounties, please add contextual information on the governance forums\n",(0,r.kt)("a",{parentName:"p",href:"https://polkassembly.io/"},"Polkassembly")," or ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".")),(0,r.kt)("p",null,"See the video tutorial below to learn how to create a child bounty, assign a curator, and award a\nchild bounty."),(0,r.kt)("p",null,"The video will show how to create and award a child bounty using a batch call. We will also include\nproposing and approving curator candidacy for the child bounty. The calls can be executed\nseparately, depending on the process curators consider appropriate for their bounty."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/mLpvx0OQoyM/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM"},"Create and Award Child Bounties")))),(0,r.kt)("p",null,"Note that once a child bounty is awarded, awardees need to wait for the\n8-day delay to be complete before claiming the\nchild bounty."),(0,r.kt)("h2",{id:"claim-a-child-bounty-reward"},"Claim a Child Bounty Reward"),(0,r.kt)("admonition",{title:"Step-by-step written tutorial",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See\n",(0,r.kt)("a",{parentName:"p",href:"https://scribehow.com/shared/How_to_claim_a_Child_Bounty_reward_on_Polkadotjs__t3V7NDUjQlus40EUjc-5Kw"},"this written tutorial"),"\nto learn more about how to claim a child bounty reward.")),(0,r.kt)("p",null,"The status of child bounties can be viewed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/bounties"},"Polkassembly Bounty page"),' under the specific parent\nbounty. A child bounty status can be "Added", "Awarded", or "Claimed". For example, the parent\nbounty 17 refers to the Community Events Bounty, which has 183 child bounties.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkassembly-child-bounties",src:a(83001).Z,width:"2408",height:"1053"})),(0,r.kt)("p",null,"After a child bounty has been awarded and the\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.bounties.bountyDepositPayoutDelay",defaultValue:115200,filter:"blocksToDays",mdxType:"RPC"}),"","-day\ndelay elapsed, follow the guidelines in the video tutorial below to learn how to claim a child\nbounty reward. Note that the extrinsic to claim the child bounty reward is permissionless, and\nanyone can initiate the claim on behalf of the beneficiary."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/db82aHgy23c/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c"},"Claim Child Bounty Reward")))))}b.isMDXComponent=!0},83001:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/polkassembly-child-bounties-fde994e770f3e109a07752068aa417b1.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/eef3f1dd.d73cb455.js b/assets/js/eef3f1dd.d73cb455.js deleted file mode 100644 index 55b2a73796f3..000000000000 --- a/assets/js/eef3f1dd.d73cb455.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[4097],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>c});var n=a(74165),o=a(15861),i=a(67294),r=a(87152),s=a(9712),l=a(67425);function p(e,t,a){return d.apply(this,arguments)}function d(){return(d=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var i,l,p,d,u;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return p=new r.U(i),e.next=21,s.G.create({provider:p});case 21:d=e.sent,(u=a.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=u[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+u[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function u(e,t,a,n){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,n);break;case"precise":(0,l.Precise)(e,a,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,a);break;case"percentage":(0,l.Percentage)(e,n);break;case"permillToPercent":(0,l.PermillToPercent)(e,n);break;case"arrayLength":(0,l.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,a=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),c=d[0],h=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?u(r.toString(),l,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;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,o.Z)((0,n.Z)().mark((function e(){var o;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,a,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?u(o,l,t,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),c}},67425:e=>{var t="polkadot",a="kusama",n="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===o)l=3;else{if(r!==a&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===o)s=1;else{if(r!==a&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},7522:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>p,default:()=>k,frontMatter:()=>l,metadata:()=>d,toc:()=>c});var n=a(87462),o=a(63366),i=(a(67294),a(3905)),r=a(47940),s=["components"],l={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"},p=void 0,d={unversionedId:"learn/learn-guides-treasury",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-treasury.md",tags:[],version:"current",lastUpdatedBy:"Radha",lastUpdatedAt:1713989426,formattedLastUpdatedAt:"Apr 24, 2024",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"}},u={},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 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:"Summary: Final Call",id:"summary-final-call",level:3},{value:"Creating a Staged Proposal with validFrom",id:"creating-a-staged-proposal-with-validfrom",level:2},{value:"Using batchAll for Multi-Spend Proposals",id:"using-batchall-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:"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}],h={toc:c},m="wrapper";function k(e){var t=e.components,l=(0,o.Z)(e,s);return(0,i.kt)(m,(0,n.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,i.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,i.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,i.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury"},"this page")," to learn about the Polkadot Treasury."),(0,i.kt)("h2",{id:"creating-a-treasury-proposal"},"Creating a Treasury Proposal"),(0,i.kt)("p",null,"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\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1IZykdp2cyQavcRyZd_dgNj5DcgxgZR6kAqGdcNARu1w"},"guidelines for a successful proposal"),"","\nand fill out the\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1O_84mXYFERCavmnJyxbIPKFkG0bVBySRjCVy-d-VKcc"},"Treasury proposal template"),"\nprovided."),(0,i.kt)("h3",{id:"announcing-the-proposal"},"Announcing the Proposal"),(0,i.kt)("p",null,"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:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Many community members participate in discussion in the\n",(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#polkadot-watercooler:web3.foundation"},"Polkadot Watercooler")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction room"),".\n",""),(0,i.kt)("li",{parentName:"ul"},"Use platforms like ",(0,i.kt)("a",{parentName:"li",href:"https://polkassembly.io"},"Polkassembly")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://www.subsquare.io/"},"SubSquare")," to initiate discussion with the community. They also offer\na gauge poll to capture the community sentiment before submitting an on-chain referendum.")),(0,i.kt)("p",null,"Spreading the word about the proposal's explanation to the community is ultimately up to the\nproposer."),(0,i.kt)("admonition",{title:"Use Accounts with Verified On-Chain Identity for Treasury Proposals",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"To ensure legitimacy, it is required that the account linked to the Treasury proposal has an\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181981-how-to-set-and-clear-an-identity"},"identity set"),"\nand is\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181990-how-to-request-and-cancel-identity-judgement"},"verified by an on-chain registrar"),".")),(0,i.kt)("h2",{id:"creating-a-treasury-proposal---spend-local"},"Creating a Treasury Proposal - Spend Local"),(0,i.kt)("admonition",{title:'"Spend" vs. "Spend Local"',type:"info"},(0,i.kt)("p",{parentName:"admonition"},"You may notice that the Treasury pallet contains two extrinsics - ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend")," and\n",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spendLocal"),". ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spendLocal")," (formally called ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend"),") refers to a spend of\nDOT that is locally available, i.e., DOT from the Relay Chain's treasury account. ",(0,i.kt)("inlineCode",{parentName:"p"},"spend")," actually\nallows the caller to specify an asset other than DOT, or even assets in other locations, e.g.\n",(0,i.kt)("a",{parentName:"p",href:"/docs/glossary#asset-hub"},"Asset Hub"),"."),(0,i.kt)("p",{parentName:"admonition"},"Unlike ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spendLocal"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend")," is ",(0,i.kt)("strong",{parentName:"p"},"not")," bound by a spend period, and must be\nclaimed manually via the ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.payout")," extrinsic. ",(0,i.kt)("inlineCode",{parentName:"p"},"treasuy.spendLocal")," behavior remains\nunchanged.")),(0,i.kt)("h3",{id:"submit-treasury-proposal-preimage"},"Submit Treasury Proposal Preimage"),(0,i.kt)("p",null,"The example below shows how to create a ",(0,i.kt)("a",{parentName:"p",href:"/docs/glossary#preimage"},"preimage")," for a\ntransaction that requests 100 DOT from Treasury."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Navigate to ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Governance > Preimages"),"\nand then click on Add Preimage."),(0,i.kt)("li",{parentName:"ul"},"Select the account which will be used to submit the preimage."),(0,i.kt)("li",{parentName:"ul"},"Choose ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury"),' pallet in the "propose" dropdown and the ',(0,i.kt)("inlineCode",{parentName:"li"},"spendLocal(amount, beneficiary)"),"call"),(0,i.kt)("li",{parentName:"ul"},"Enter the DOT amount."),(0,i.kt)("li",{parentName:"ul"},"Enter the AccountID of the beneficiary (which has a verified on-chain identity)."),(0,i.kt)("li",{parentName:"ul"},"Submit preimage"),(0,i.kt)("li",{parentName:"ul"},"Sign and submit the transaction by paying the specified transaction fees.")),(0,i.kt)("admonition",{title:"Preimage Submission Deposit",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"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\n41 DOT. Ensure you have enough account\nbalance to pay for the submission deposit and the transaction fees.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Treasury Preimage",src:a(95773).Z,width:"1188",height:"655"})),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Treasury Preimage Hash",src:a(83601).Z,width:"2879",height:"453"})),(0,i.kt)("h3",{id:"submit-a-treasury-track-referendum"},"Submit a Treasury Track Referendum"),(0,i.kt)("p",null,"The example below shows how to submit a Treasury track referendum."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Navigate to ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/referenda"},"Polkadot-JS UI > Governance > Referenda"),"\nand then click on Submit proposal."),(0,i.kt)("li",{parentName:"ul"},"Select the account which will be used to submit the proposal."),(0,i.kt)("li",{parentName:"ul"},"Choose the appropriate submission track (The example below selected Small Spender track)."),(0,i.kt)("li",{parentName:"ul"},"Enter the preimage hash of the treasury spend transaction.(If the preimage exists on-chain, the\npreimage length box is automatically populated)"),(0,i.kt)("li",{parentName:"ul"},"Click on Submit proposal."),(0,i.kt)("li",{parentName:"ul"},"Sign and submit the transaction.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Submit Treasury Proposal",src:a(67847).Z,width:"2141",height:"1238"})),(0,i.kt)("p",null,"Once your submission is executed, your referendum will appear under your chosen track on the\nPolkadot-JS UI ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"referenda page"),"."),(0,i.kt)("h3",{id:"place-a-decision-deposit-for-the-treasury-track-referendum"},"Place a Decision Deposit for the Treasury Track Referendum"),(0,i.kt)("p",null,"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.kt)("a",{parentName:"p",href:"./learn-polkadot-opengov-treasury#treasury-tracks"},"Treasury Tracks")," are listed in a section above\nin this document."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Submit Treasury Proposal Decision Deposit",src:a(49431).Z,width:"2133",height:"168"})),(0,i.kt)("p",null,"The preimage and decision deposits\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits"},"can be claimed once the referendum ends"),"."),(0,i.kt)("h2",{id:"creating-a-usdt-treasury-proposal---spend-with-assethub"},"Creating a USDT Treasury Proposal - Spend (with AssetHub)"),(0,i.kt)("p",null,"The following tutorial mostly goes over how to utilize the ",(0,i.kt)("inlineCode",{parentName:"p"},"spend")," extrinsic, which, unlike\n",(0,i.kt)("inlineCode",{parentName:"p"},"spendLocal"),", is able to specify assets besides the native asset in other locations, such as\n",(0,i.kt)("a",{parentName:"p",href:"/docs/glossary#asset-hub"},"Asset Hub"),"."),(0,i.kt)("h3",{id:"creating-a-preimage"},"Creating a Preimage"),(0,i.kt)("p",null,"The example below shows how to create a ",(0,i.kt)("a",{parentName:"p",href:"../general/glossary#preimage"},"preimage")," for a transaction\nthat requests 100 USDT from AssetHub."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Navigate to ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Governance > Referenda"),"\nand then click on Add Preimage."),(0,i.kt)("li",{parentName:"ul"},"Select the account to submit the preimage."),(0,i.kt)("li",{parentName:"ul"},"Choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury"),' pallet in the "propose" dropdown and the\n',(0,i.kt)("inlineCode",{parentName:"li"},"spend(assetKind, amount, beneficiary, validFrom)")," call.")),(0,i.kt)("p",null,"Now, let's go through each field one-by-one and fill them in accordingly:"),(0,i.kt)("h3",{id:"specifying-asset-kind"},"Specifying Asset Kind"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"assetKind")," refers to the asset to be used, specified via XCM. In short, we need to be able to find:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"The relative location of the asset, and"),(0,i.kt)("li",{parentName:"ul"},"How it is identified within this location.")),(0,i.kt)("p",null,"For this example, we are using USDT, which from the perspective of the Relay Chain would be:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Parachain 1000 (AssetHub) > AssetId (Concrete) > PalletInstance 50 > General Index 1984")),(0,i.kt)("p",null,"First, we specify the location - in this case, Asset Hub (parachain 1,000). ",(0,i.kt)("inlineCode",{parentName:"p"},"PalletInstance 50"),"\nrefers to the Assets pallet instance on Asset Hub. The general index is ",(0,i.kt)("inlineCode",{parentName:"p"},"1984"),", which is the ID of\nUSDT in this instance of the Assets pallet."),(0,i.kt)("admonition",{title:"Bug on Polkadot-JS UI",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"As the Polkadot-JS UI is interpreting the general index in DOT, it multiplies the entered values\nwith ",(0,i.kt)("inlineCode",{parentName:"p"},"10000000000")," (As DOT token has 10 decimals) and places it in the ",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," argument. As we would\nlike to have ",(0,i.kt)("inlineCode",{parentName:"p"},"1984")," as the input argument, we can offset this UI induced error by entering\n",(0,i.kt)("inlineCode",{parentName:"p"},"0.0000001984"),"."),(0,i.kt)("p",{parentName:"admonition"},"The issue on Polkadot-JS repo can be tracked\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/issues/10430"},"here"),".")),(0,i.kt)("p",null,"Here is how the final ",(0,i.kt)("inlineCode",{parentName:"p"},"assetKind")," field should look:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Asset Kind",src:a(71365).Z,width:"1564",height:"1316"})),(0,i.kt)("h3",{id:"specifying-the-amount"},"Specifying the Amount"),(0,i.kt)("p",null,"The amount should be simply the amount of USDT, where each ",(0,i.kt)("inlineCode",{parentName:"p"},"1")," USDT is ",(0,i.kt)("inlineCode",{parentName:"p"},"1000000"),". Because we are\nasking for 100 USDT, we put ",(0,i.kt)("inlineCode",{parentName:"p"},"100000000")," as the input for the amount."),(0,i.kt)("admonition",{title:"Bug on Polkadot-JS UI",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"As the Polkadot-JS UI is interpreting the asset balance in DOT, it multiplies the entered values\nwith ",(0,i.kt)("inlineCode",{parentName:"p"},"10000000000")," (As DOT token has 10 decimals) and places it in the ",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," argument. As we would\nlike to have ",(0,i.kt)("inlineCode",{parentName:"p"},"100000000")," as the input argument, we can offset this UI induced error by entering\n",(0,i.kt)("inlineCode",{parentName:"p"},"0.01")," for this particular example where we like to input 100 USDT."),(0,i.kt)("p",{parentName:"admonition"},"The issue on Polkadot-JS repo can be tracked\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/issues/10430"},"here"),".")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Asset Value, Beneficiary and ValidFrom",src:a(53314).Z,width:"1591",height:"1279"})),(0,i.kt)("h3",{id:"specifying-the-beneficiary"},"Specifying the Beneficiary"),(0,i.kt)("p",null,"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.kt)("inlineCode",{parentName:"p"},"X1"),") and the beneficiary account (",(0,i.kt)("inlineCode",{parentName:"p"},"AccountId32"),"), which is\nan account address on the chain."),(0,i.kt)("h3",{id:"specifying-validfrom-optional"},"Specifying ",(0,i.kt)("inlineCode",{parentName:"h3"},"validFrom")," (optional)"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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.kt)("inlineCode",{parentName:"p"},"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.kt)("a",{parentName:"p",href:"#creating-a-staged-proposal-with-validfrom"},"guide below"),"."),(0,i.kt)("h3",{id:"summary-final-call"},"Summary: Final Call"),(0,i.kt)("p",null,"The final call should look like the following, where we:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Specify our asset as ",(0,i.kt)("strong",{parentName:"li"},"USDT")," on ",(0,i.kt)("strong",{parentName:"li"},"Asset Hub"),"."),(0,i.kt)("li",{parentName:"ul"},"Specify the ",(0,i.kt)("strong",{parentName:"li"},"amount")," of ",(0,i.kt)("strong",{parentName:"li"},"USDT")," (100)."),(0,i.kt)("li",{parentName:"ul"},"Specify the beneficiary address."),(0,i.kt)("li",{parentName:"ul"},"If applicable, use the ",(0,i.kt)("inlineCode",{parentName:"li"},"validFrom")," field to specify a block number upon which the payout becomes\nvalid.")),(0,i.kt)("p",null,"The next steps are to:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Copy the preimage (and its length)"),(0,i.kt)("li",{parentName:"ul"},"Sign and submit the preimage")),(0,i.kt)("p",null,"Once this is finished, one may submit a proposal\n",(0,i.kt)("a",{parentName:"p",href:"#submit-a-treasury-track-referendum"},"as stated above"),". Keep in mind one will also need to\n",(0,i.kt)("a",{parentName:"p",href:"#place-a-decision-deposit-for-the-treasury-track-referendum"},"provide the decision deposit as well"),"."),(0,i.kt)("h2",{id:"creating-a-staged-proposal-with-validfrom"},"Creating a Staged Proposal with ",(0,i.kt)("inlineCode",{parentName:"h2"},"validFrom")),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,'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:'),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"100 DOT paid out at block height 1000"),(0,i.kt)("li",{parentName:"ul"},"200 DOT paid out at block height 2000"),(0,i.kt)("li",{parentName:"ul"},"500 DOT paid out at block height 4000")),(0,i.kt)("p",null,"Governance can also propose to ",(0,i.kt)("strong",{parentName:"p"},"void")," a staged proposal before it has completed all of its\npayouts."),(0,i.kt)("admonition",{title:"Calculating dates from block heights",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Although not the most accurate form of measurement, block heights can be used to correspond to\ncertain dates in the future.")),(0,i.kt)("h3",{id:"using-batchall-for-multi-spend-proposals"},"Using ",(0,i.kt)("inlineCode",{parentName:"h3"},"batchAll")," for Multi-Spend Proposals"),(0,i.kt)("p",null,"Using the Utility pallet, one can batch multiple ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend")," calls together. Each of these\ncalls can have its own ",(0,i.kt)("inlineCode",{parentName:"p"},"validFrom")," block height, which allows for scenarios such as the above to be\npossible."),(0,i.kt)("h3",{id:"using-validfrom-for-a-milestone-based-proposal"},"Using ",(0,i.kt)("inlineCode",{parentName:"h3"},"validFrom")," for a Milestone-Based Proposal"),(0,i.kt)("p",null,"Once each spend is defined within the batched call, the ",(0,i.kt)("inlineCode",{parentName:"p"},"validFrom"),' field can be utilized to specify\nthe "date", or block height, at which each spend will be executed.'),(0,i.kt)("h3",{id:"manually-claiming-payouts"},"Manually Claiming Payouts"),(0,i.kt)("admonition",{title:"Spends can expire!",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Keep in mind that once the ",(0,i.kt)("inlineCode",{parentName:"p"},"validFrom")," block height has been reached, you will have to claim the\nspend within 30 days.")),(0,i.kt)("p",null,"In order to claim the spend, you must manually call the ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.payout")," extrinsic via a ",(0,i.kt)("inlineCode",{parentName:"p"},"Signed"),"\norigin. The ID used is the one found in\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Treasury"),", where the ID of the proposal\nin question would be available:"),(0,i.kt)("h3",{id:"proposing-a-void-for-a-staged-proposal"},'Proposing a "Void" for a Staged Proposal'),(0,i.kt)("p",null,"If a proposal that hasn't completed all of its spends needs to be voided, the ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.voidSpend"),"\nextrinsic can be utilized via a governance proposal."),(0,i.kt)("h2",{id:"submit-treasury-proposal-via-polkassembly"},"Submit Treasury Proposal via Polkassembly"),(0,i.kt)("p",null,"To submit a treasury track referendum via ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"Polkassembly"),"\nclick on the FAB button in the bottom right corner. Then,"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'Click on "Create Treasury Proposal" and choose an address for the proposer.')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"After choosing an address, you will enter a three-stage guideline:"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"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.")),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"polkassembly-write-proposal",src:a(90348).Z,width:"2130",height:"1596"})),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"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\nDOT amount. The track will be auto-selected\nand the user can proceed with the creation of a preimage.")),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"polkassembly-create-preimage",src:a(76869).Z,width:"2154",height:"1598"})),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Create a proposal: final confirmation about the proposal creation. The description of the\nproposal and the preimage are automatically linked to the proposal.")))),(0,i.kt)("h2",{id:"requesting-tips-from-the-treasury"},"Requesting Tips from the Treasury"),(0,i.kt)("p",null,"To request a tip funded by the treasury, you can follow the above steps for\n",(0,i.kt)("a",{parentName:"p",href:"#creating-a-treasury-proposal"},"creating a treasury proposal")," but instead of submitting the proposal\nto the ",(0,i.kt)("inlineCode",{parentName:"p"},"32 / Small Spender")," track, you will need to submit it to the ",(0,i.kt)("inlineCode",{parentName:"p"},"30 / Small Tipper")," or\n",(0,i.kt)("inlineCode",{parentName:"p"},"31 / Big Tipper")," tracks depending on the number of tokens to be requested."),(0,i.kt)("p",null,"Briefly, you will need to:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Create a preimage using the ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury.spendLocal")," extrinsic and specifying the number of tokens\nand the beneficiary of the tip"),(0,i.kt)("li",{parentName:"ul"},"Submit a proposal to the right track (i.e. ",(0,i.kt)("inlineCode",{parentName:"li"},"30")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"31"),") using the preimage hash"),(0,i.kt)("li",{parentName:"ul"},"Once you started the referendum go to ",(0,i.kt)("a",{parentName:"li",href:"https://polkassembly.io/"},"Polkassembly"),", log in with the\nproposer account and edit the referendum details"),(0,i.kt)("li",{parentName:"ul"},"Notify the\n",(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction Element Channel"),"","\nabout your referendum"),(0,i.kt)("li",{parentName:"ul"},"Place the decision deposit before the\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.referenda.undecidingTimeout",defaultValue:201600,filter:"blocksToDays",mdxType:"RPC"}),"","-day\ntimeout"),(0,i.kt)("li",{parentName:"ul"},"Once the referendum ends you can\n",(0,i.kt)("a",{parentName:"li",href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits"},"claim the preimage and decision deposits back"))))}k.isMDXComponent=!0},53314:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/spend-amount-account-validfrom-temp-51145f395b6786e783600e3665bc7fab.png"},71365:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/spend-usdt-assethub-temp-4182c6d400d00e1c4d8e94efc96dadcf.png"},76869:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/polkassembly-create-preimage-7396a8ce796d0f0dcad30d3edced8618.png"},90348:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/polkassembly-write-proposal-a3ce8ab9303111f6003ac8103ba29507.png"},67847:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/submit-proposal-treasury-3948a231c4f3162a8680ad052af9e903.png"},83601:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/treasury-preimage-hash-05bb427d21d3ecf7d5e38418a0a0f4ed.png"},95773:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/treasury-preimage-24f67df8dba06111635d87a19ee0ce15.png"},49431:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/treasury-proposal-decision-deposit-849d27481ba0134acf743f7474d8f6a4.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/eef3f1dd.dfa9a480.js b/assets/js/eef3f1dd.dfa9a480.js new file mode 100644 index 000000000000..501cab25e2b5 --- /dev/null +++ b/assets/js/eef3f1dd.dfa9a480.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[4097],{35703:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});var n=a(67294);const o=function(e){var t,a=e.message,o=(0,n.useState)(!0),i=o[0],r=o[1];return n.createElement(n.Fragment,null,i&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>c});var n=a(74165),o=a(15861),i=a(67294),r=a(87152),s=a(9712),l=a(67425);function p(e,t,a){return d.apply(this,arguments)}function d(){return(d=(0,o.Z)((0,n.Z)().mark((function e(t,a,o){var i,l,p,d,u;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return p=new r.U(i),e.next=21,s.G.create({provider:p});case 21:d=e.sent,(u=a.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=u[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+u[0]+") in "+a);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function u(e,t,a,n){switch(t){case"humanReadable":(0,l.HumanReadable)(e,a,n);break;case"precise":(0,l.Precise)(e,a,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,a);break;case"percentage":(0,l.Percentage)(e,n);break;case"permillToPercent":(0,l.PermillToPercent)(e,n);break;case"arrayLength":(0,l.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,a=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),c=d[0],m=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?u(r.toString(),l,t,m):m(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,o.Z)((0,n.Z)().mark((function e(){var o;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,a,m);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?u(o,l,t,m):m(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),c}},67425:e=>{var t="polkadot",a="kusama",n="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===o)l=3;else{if(r!==a&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===o)s=1;else{if(r!==a&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},7522:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>g,frontMatter:()=>p,metadata:()=>u,toc:()=>m});var n=a(87462),o=a(63366),i=(a(67294),a(3905)),r=a(47940),s=a(35703),l=["components"],p={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"},d=void 0,u={unversionedId:"learn/learn-guides-treasury",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-treasury.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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"}},c={},m=[{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 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:"Summary: Final Call",id:"summary-final-call",level:3},{value:"Creating a Staged Proposal with validFrom",id:"creating-a-staged-proposal-with-validfrom",level:2},{value:"Using batchAll for Multi-Spend Proposals",id:"using-batchall-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:"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}],h={toc:m},k="wrapper";function g(e){var t=e.components,p=(0,o.Z)(e,l);return(0,i.kt)(k,(0,n.Z)({},h,p,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(s.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,i.kt)("p",null,"See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury"},"this page")," to learn about the Polkadot Treasury."),(0,i.kt)("h2",{id:"creating-a-treasury-proposal"},"Creating a Treasury Proposal"),(0,i.kt)("p",null,"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\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1IZykdp2cyQavcRyZd_dgNj5DcgxgZR6kAqGdcNARu1w"},"guidelines for a successful proposal"),"","\nand fill out the\n",(0,i.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1O_84mXYFERCavmnJyxbIPKFkG0bVBySRjCVy-d-VKcc"},"Treasury proposal template"),"\nprovided."),(0,i.kt)("h3",{id:"announcing-the-proposal"},"Announcing the Proposal"),(0,i.kt)("p",null,"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:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Many community members participate in discussion in the\n",(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#polkadot-watercooler:web3.foundation"},"Polkadot Watercooler")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction room"),".\n",""),(0,i.kt)("li",{parentName:"ul"},"Use platforms like ",(0,i.kt)("a",{parentName:"li",href:"https://polkassembly.io"},"Polkassembly")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://www.subsquare.io/"},"SubSquare")," to initiate discussion with the community. They also offer\na gauge poll to capture the community sentiment before submitting an on-chain referendum.")),(0,i.kt)("p",null,"Spreading the word about the proposal's explanation to the community is ultimately up to the\nproposer."),(0,i.kt)("admonition",{title:"Use Accounts with Verified On-Chain Identity for Treasury Proposals",type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"To ensure legitimacy, it is required that the account linked to the Treasury proposal has an\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181981-how-to-set-and-clear-an-identity"},"identity set"),"\nand is\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181990-how-to-request-and-cancel-identity-judgement"},"verified by an on-chain registrar"),".")),(0,i.kt)("h2",{id:"creating-a-treasury-proposal---spend-local"},"Creating a Treasury Proposal - Spend Local"),(0,i.kt)("admonition",{title:'"Spend" vs. "Spend Local"',type:"info"},(0,i.kt)("p",{parentName:"admonition"},"You may notice that the Treasury pallet contains two extrinsics - ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend")," and\n",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spendLocal"),". ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spendLocal")," (formally called ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend"),") refers to a spend of\nDOT that is locally available, i.e., DOT from the Relay Chain's treasury account. ",(0,i.kt)("inlineCode",{parentName:"p"},"spend")," actually\nallows the caller to specify an asset other than DOT, or even assets in other locations, e.g.\n",(0,i.kt)("a",{parentName:"p",href:"/docs/glossary#asset-hub"},"Asset Hub"),"."),(0,i.kt)("p",{parentName:"admonition"},"Unlike ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spendLocal"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend")," is ",(0,i.kt)("strong",{parentName:"p"},"not")," bound by a spend period, and must be\nclaimed manually via the ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.payout")," extrinsic. ",(0,i.kt)("inlineCode",{parentName:"p"},"treasuy.spendLocal")," behavior remains\nunchanged.")),(0,i.kt)("h3",{id:"submit-treasury-proposal-preimage"},"Submit Treasury Proposal Preimage"),(0,i.kt)("p",null,"The example below shows how to create a ",(0,i.kt)("a",{parentName:"p",href:"/docs/glossary#preimage"},"preimage")," for a\ntransaction that requests 100 DOT from Treasury."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Navigate to ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Governance > Preimages"),"\nand then click on Add Preimage."),(0,i.kt)("li",{parentName:"ul"},"Select the account which will be used to submit the preimage."),(0,i.kt)("li",{parentName:"ul"},"Choose ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury"),' pallet in the "propose" dropdown and the ',(0,i.kt)("inlineCode",{parentName:"li"},"spendLocal(amount, beneficiary)"),"call"),(0,i.kt)("li",{parentName:"ul"},"Enter the DOT amount."),(0,i.kt)("li",{parentName:"ul"},"Enter the AccountID of the beneficiary (which has a verified on-chain identity)."),(0,i.kt)("li",{parentName:"ul"},"Submit preimage"),(0,i.kt)("li",{parentName:"ul"},"Sign and submit the transaction by paying the specified transaction fees.")),(0,i.kt)("admonition",{title:"Preimage Submission Deposit",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"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\n41 DOT. Ensure you have enough account\nbalance to pay for the submission deposit and the transaction fees.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Treasury Preimage",src:a(95773).Z,width:"1188",height:"655"})),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Treasury Preimage Hash",src:a(83601).Z,width:"2879",height:"453"})),(0,i.kt)("h3",{id:"submit-a-treasury-track-referendum"},"Submit a Treasury Track Referendum"),(0,i.kt)("p",null,"The example below shows how to submit a Treasury track referendum."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Navigate to ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/referenda"},"Polkadot-JS UI > Governance > Referenda"),"\nand then click on Submit proposal."),(0,i.kt)("li",{parentName:"ul"},"Select the account which will be used to submit the proposal."),(0,i.kt)("li",{parentName:"ul"},"Choose the appropriate submission track (The example below selected Small Spender track)."),(0,i.kt)("li",{parentName:"ul"},"Enter the preimage hash of the treasury spend transaction.(If the preimage exists on-chain, the\npreimage length box is automatically populated)"),(0,i.kt)("li",{parentName:"ul"},"Click on Submit proposal."),(0,i.kt)("li",{parentName:"ul"},"Sign and submit the transaction.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Submit Treasury Proposal",src:a(67847).Z,width:"2141",height:"1238"})),(0,i.kt)("p",null,"Once your submission is executed, your referendum will appear under your chosen track on the\nPolkadot-JS UI ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/referenda"},"referenda page"),"."),(0,i.kt)("h3",{id:"place-a-decision-deposit-for-the-treasury-track-referendum"},"Place a Decision Deposit for the Treasury Track Referendum"),(0,i.kt)("p",null,"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.kt)("a",{parentName:"p",href:"./learn-polkadot-opengov-treasury#treasury-tracks"},"Treasury Tracks")," are listed in a section above\nin this document."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Submit Treasury Proposal Decision Deposit",src:a(49431).Z,width:"2133",height:"168"})),(0,i.kt)("p",null,"The preimage and decision deposits\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits"},"can be claimed once the referendum ends"),"."),(0,i.kt)("h2",{id:"creating-a-usdt-treasury-proposal---spend-with-assethub"},"Creating a USDT Treasury Proposal - Spend (with AssetHub)"),(0,i.kt)("p",null,"The following tutorial mostly goes over how to utilize the ",(0,i.kt)("inlineCode",{parentName:"p"},"spend")," extrinsic, which, unlike\n",(0,i.kt)("inlineCode",{parentName:"p"},"spendLocal"),", is able to specify assets besides the native asset in other locations, such as\n",(0,i.kt)("a",{parentName:"p",href:"/docs/glossary#asset-hub"},"Asset Hub"),"."),(0,i.kt)("h3",{id:"creating-a-preimage"},"Creating a Preimage"),(0,i.kt)("p",null,"The example below shows how to create a ",(0,i.kt)("a",{parentName:"p",href:"../general/glossary#preimage"},"preimage")," for a transaction\nthat requests 100 USDT from AssetHub."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Navigate to ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Governance > Referenda"),"\nand then click on Add Preimage."),(0,i.kt)("li",{parentName:"ul"},"Select the account to submit the preimage."),(0,i.kt)("li",{parentName:"ul"},"Choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury"),' pallet in the "propose" dropdown and the\n',(0,i.kt)("inlineCode",{parentName:"li"},"spend(assetKind, amount, beneficiary, validFrom)")," call.")),(0,i.kt)("p",null,"Now, let's go through each field one-by-one and fill them in accordingly:"),(0,i.kt)("h3",{id:"specifying-asset-kind"},"Specifying Asset Kind"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"assetKind")," refers to the asset to be used, specified via XCM. In short, we need to be able to find:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"The relative location of the asset, and"),(0,i.kt)("li",{parentName:"ul"},"How it is identified within this location.")),(0,i.kt)("p",null,"For this example, we are using USDT, which from the perspective of the Relay Chain would be:"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Parachain 1000 (AssetHub) > AssetId (Concrete) > PalletInstance 50 > General Index 1984")),(0,i.kt)("p",null,"First, we specify the location - in this case, Asset Hub (parachain 1,000). ",(0,i.kt)("inlineCode",{parentName:"p"},"PalletInstance 50"),"\nrefers to the Assets pallet instance on Asset Hub. The general index is ",(0,i.kt)("inlineCode",{parentName:"p"},"1984"),", which is the ID of\nUSDT in this instance of the Assets pallet."),(0,i.kt)("admonition",{title:"Bug on Polkadot-JS UI",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"As the Polkadot-JS UI is interpreting the general index in DOT, it multiplies the entered values\nwith ",(0,i.kt)("inlineCode",{parentName:"p"},"10000000000")," (As DOT token has 10 decimals) and places it in the ",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," argument. As we would\nlike to have ",(0,i.kt)("inlineCode",{parentName:"p"},"1984")," as the input argument, we can offset this UI induced error by entering\n",(0,i.kt)("inlineCode",{parentName:"p"},"0.0000001984"),"."),(0,i.kt)("p",{parentName:"admonition"},"The issue on Polkadot-JS repo can be tracked\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/issues/10430"},"here"),".")),(0,i.kt)("p",null,"Here is how the final ",(0,i.kt)("inlineCode",{parentName:"p"},"assetKind")," field should look:"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Asset Kind",src:a(71365).Z,width:"1564",height:"1316"})),(0,i.kt)("h3",{id:"specifying-the-amount"},"Specifying the Amount"),(0,i.kt)("p",null,"The amount should be simply the amount of USDT, where each ",(0,i.kt)("inlineCode",{parentName:"p"},"1")," USDT is ",(0,i.kt)("inlineCode",{parentName:"p"},"1000000"),". Because we are\nasking for 100 USDT, we put ",(0,i.kt)("inlineCode",{parentName:"p"},"100000000")," as the input for the amount."),(0,i.kt)("admonition",{title:"Bug on Polkadot-JS UI",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"As the Polkadot-JS UI is interpreting the asset balance in DOT, it multiplies the entered values\nwith ",(0,i.kt)("inlineCode",{parentName:"p"},"10000000000")," (As DOT token has 10 decimals) and places it in the ",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," argument. As we would\nlike to have ",(0,i.kt)("inlineCode",{parentName:"p"},"100000000")," as the input argument, we can offset this UI induced error by entering\n",(0,i.kt)("inlineCode",{parentName:"p"},"0.01")," for this particular example where we like to input 100 USDT."),(0,i.kt)("p",{parentName:"admonition"},"The issue on Polkadot-JS repo can be tracked\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/polkadot-js/apps/issues/10430"},"here"),".")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Asset Value, Beneficiary and ValidFrom",src:a(53314).Z,width:"1591",height:"1279"})),(0,i.kt)("h3",{id:"specifying-the-beneficiary"},"Specifying the Beneficiary"),(0,i.kt)("p",null,"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.kt)("inlineCode",{parentName:"p"},"X1"),") and the beneficiary account (",(0,i.kt)("inlineCode",{parentName:"p"},"AccountId32"),"), which is\nan account address on the chain."),(0,i.kt)("h3",{id:"specifying-validfrom-optional"},"Specifying ",(0,i.kt)("inlineCode",{parentName:"h3"},"validFrom")," (optional)"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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.kt)("inlineCode",{parentName:"p"},"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.kt)("a",{parentName:"p",href:"#creating-a-staged-proposal-with-validfrom"},"guide below"),"."),(0,i.kt)("h3",{id:"summary-final-call"},"Summary: Final Call"),(0,i.kt)("p",null,"The final call should look like the following, where we:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Specify our asset as ",(0,i.kt)("strong",{parentName:"li"},"USDT")," on ",(0,i.kt)("strong",{parentName:"li"},"Asset Hub"),"."),(0,i.kt)("li",{parentName:"ul"},"Specify the ",(0,i.kt)("strong",{parentName:"li"},"amount")," of ",(0,i.kt)("strong",{parentName:"li"},"USDT")," (100)."),(0,i.kt)("li",{parentName:"ul"},"Specify the beneficiary address."),(0,i.kt)("li",{parentName:"ul"},"If applicable, use the ",(0,i.kt)("inlineCode",{parentName:"li"},"validFrom")," field to specify a block number upon which the payout becomes\nvalid.")),(0,i.kt)("p",null,"The next steps are to:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Copy the preimage (and its length)"),(0,i.kt)("li",{parentName:"ul"},"Sign and submit the preimage")),(0,i.kt)("p",null,"Once this is finished, one may submit a proposal\n",(0,i.kt)("a",{parentName:"p",href:"#submit-a-treasury-track-referendum"},"as stated above"),". Keep in mind one will also need to\n",(0,i.kt)("a",{parentName:"p",href:"#place-a-decision-deposit-for-the-treasury-track-referendum"},"provide the decision deposit as well"),"."),(0,i.kt)("h2",{id:"creating-a-staged-proposal-with-validfrom"},"Creating a Staged Proposal with ",(0,i.kt)("inlineCode",{parentName:"h2"},"validFrom")),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,'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:'),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"100 DOT paid out at block height 1000"),(0,i.kt)("li",{parentName:"ul"},"200 DOT paid out at block height 2000"),(0,i.kt)("li",{parentName:"ul"},"500 DOT paid out at block height 4000")),(0,i.kt)("p",null,"Governance can also propose to ",(0,i.kt)("strong",{parentName:"p"},"void")," a staged proposal before it has completed all of its\npayouts."),(0,i.kt)("admonition",{title:"Calculating dates from block heights",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Although not the most accurate form of measurement, block heights can be used to correspond to\ncertain dates in the future.")),(0,i.kt)("h3",{id:"using-batchall-for-multi-spend-proposals"},"Using ",(0,i.kt)("inlineCode",{parentName:"h3"},"batchAll")," for Multi-Spend Proposals"),(0,i.kt)("p",null,"Using the Utility pallet, one can batch multiple ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.spend")," calls together. Each of these\ncalls can have its own ",(0,i.kt)("inlineCode",{parentName:"p"},"validFrom")," block height, which allows for scenarios such as the above to be\npossible."),(0,i.kt)("h3",{id:"using-validfrom-for-a-milestone-based-proposal"},"Using ",(0,i.kt)("inlineCode",{parentName:"h3"},"validFrom")," for a Milestone-Based Proposal"),(0,i.kt)("p",null,"Once each spend is defined within the batched call, the ",(0,i.kt)("inlineCode",{parentName:"p"},"validFrom"),' field can be utilized to specify\nthe "date", or block height, at which each spend will be executed.'),(0,i.kt)("h3",{id:"manually-claiming-payouts"},"Manually Claiming Payouts"),(0,i.kt)("admonition",{title:"Spends can expire!",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Keep in mind that once the ",(0,i.kt)("inlineCode",{parentName:"p"},"validFrom")," block height has been reached, you will have to claim the\nspend within 30 days.")),(0,i.kt)("p",null,"In order to claim the spend, you must manually call the ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.payout")," extrinsic via a ",(0,i.kt)("inlineCode",{parentName:"p"},"Signed"),"\norigin. The ID used is the one found in\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/preimages"},"Polkadot-JS UI > Treasury"),", where the ID of the proposal\nin question would be available:"),(0,i.kt)("h3",{id:"proposing-a-void-for-a-staged-proposal"},'Proposing a "Void" for a Staged Proposal'),(0,i.kt)("p",null,"If a proposal that hasn't completed all of its spends needs to be voided, the ",(0,i.kt)("inlineCode",{parentName:"p"},"treasury.voidSpend"),"\nextrinsic can be utilized via a governance proposal."),(0,i.kt)("h2",{id:"submit-treasury-proposal-via-polkassembly"},"Submit Treasury Proposal via Polkassembly"),(0,i.kt)("p",null,"To submit a treasury track referendum via ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"Polkassembly"),"\nclick on the FAB button in the bottom right corner. Then,"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'Click on "Create Treasury Proposal" and choose an address for the proposer.')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"After choosing an address, you will enter a three-stage guideline:"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"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.")),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"polkassembly-write-proposal",src:a(90348).Z,width:"2130",height:"1596"})),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"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\nDOT amount. The track will be auto-selected\nand the user can proceed with the creation of a preimage.")),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"polkassembly-create-preimage",src:a(76869).Z,width:"2154",height:"1598"})),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Create a proposal: final confirmation about the proposal creation. The description of the\nproposal and the preimage are automatically linked to the proposal.")))),(0,i.kt)("h2",{id:"requesting-tips-from-the-treasury"},"Requesting Tips from the Treasury"),(0,i.kt)("p",null,"To request a tip funded by the treasury, you can follow the above steps for\n",(0,i.kt)("a",{parentName:"p",href:"#creating-a-treasury-proposal"},"creating a treasury proposal")," but instead of submitting the proposal\nto the ",(0,i.kt)("inlineCode",{parentName:"p"},"32 / Small Spender")," track, you will need to submit it to the ",(0,i.kt)("inlineCode",{parentName:"p"},"30 / Small Tipper")," or\n",(0,i.kt)("inlineCode",{parentName:"p"},"31 / Big Tipper")," tracks depending on the number of tokens to be requested."),(0,i.kt)("p",null,"Briefly, you will need to:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Create a preimage using the ",(0,i.kt)("inlineCode",{parentName:"li"},"treasury.spendLocal")," extrinsic and specifying the number of tokens\nand the beneficiary of the tip"),(0,i.kt)("li",{parentName:"ul"},"Submit a proposal to the right track (i.e. ",(0,i.kt)("inlineCode",{parentName:"li"},"30")," or ",(0,i.kt)("inlineCode",{parentName:"li"},"31"),") using the preimage hash"),(0,i.kt)("li",{parentName:"ul"},"Once you started the referendum go to ",(0,i.kt)("a",{parentName:"li",href:"https://polkassembly.io/"},"Polkassembly"),", log in with the\nproposer account and edit the referendum details"),(0,i.kt)("li",{parentName:"ul"},"Notify the\n",(0,i.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction Element Channel"),"","\nabout your referendum"),(0,i.kt)("li",{parentName:"ul"},"Place the decision deposit before the\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.referenda.undecidingTimeout",defaultValue:201600,filter:"blocksToDays",mdxType:"RPC"}),"","-day\ntimeout"),(0,i.kt)("li",{parentName:"ul"},"Once the referendum ends you can\n",(0,i.kt)("a",{parentName:"li",href:"/docs/learn-guides-polkadot-opengov#claiming-the-preimage-and-decision-deposits"},"claim the preimage and decision deposits back"))))}g.isMDXComponent=!0},53314:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/spend-amount-account-validfrom-temp-51145f395b6786e783600e3665bc7fab.png"},71365:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/spend-usdt-assethub-temp-4182c6d400d00e1c4d8e94efc96dadcf.png"},76869:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/polkassembly-create-preimage-7396a8ce796d0f0dcad30d3edced8618.png"},90348:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/polkassembly-write-proposal-a3ce8ab9303111f6003ac8103ba29507.png"},67847:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/submit-proposal-treasury-3948a231c4f3162a8680ad052af9e903.png"},83601:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/treasury-preimage-hash-05bb427d21d3ecf7d5e38418a0a0f4ed.png"},95773:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/treasury-preimage-24f67df8dba06111635d87a19ee0ce15.png"},49431:(e,t,a)=>{"use strict";a.d(t,{Z:()=>n});const n=a.p+"assets/images/treasury-proposal-decision-deposit-849d27481ba0134acf743f7474d8f6a4.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f0ff685a.585178fe.js b/assets/js/f0ff685a.585178fe.js deleted file mode 100644 index 18cf06997933..000000000000 --- a/assets/js/f0ff685a.585178fe.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[8191],{47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>u});var a=o(74165),n=o(15861),r=o(67294),i=o(87152),s=o(9712),l=o(67425);function c(e,t,o){return p.apply(this,arguments)}function p(){return(p=(0,n.Z)((0,a.Z)().mark((function e(t,o,n){var r,l,c,p,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new i.U(r),e.next=21,s.G.create({provider:c});case 21:p=e.sent,(d=o.split(".")).forEach((function(e){e in p&&(p=p[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=p.toString(),e.abrupt("break",35);case 29:return e.next=31,p();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+o);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,o,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,o,a);break;case"precise":(0,l.Precise)(e,o,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,o);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,i=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,p=(0,r.useState)(""),u=p[0],h=p[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(i.toString(),l,t,h):h(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,o,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(n,l,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),u}},67425:e=>{var t="polkadot",o="kusama",a="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,s){var l=void 0;if(i===t||i===n)l=3;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/r[i].precision)?e/r[i].precision+" "+r[i].symbol:(e/r[i].precision).toFixed(l)+" "+r[i].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,i){var s=void 0;if(i===t||i===n)s=1;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},56870:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var a=o(87462),n=o(63366),r=(o(67294),o(3905)),i=(o(47940),["components"]),s={id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy Guides",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},l=void 0,c={unversionedId:"learn/learn-guides-accounts-proxy",id:"learn/learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",description:"Polkadot-JS Guides about Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy",permalink:"/docs/learn-guides-accounts-proxy",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",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"}},p={},d=[{value:"Creating Proxy with Polkadot-JS",id:"creating-proxy-with-polkadot-js",level:2},{value:"Removing Proxy with Polkadot-JS",id:"removing-proxy-with-polkadot-js",level:2},{value:"View your Proxy on Polkadot-JS",id:"view-your-proxy-on-polkadot-js",level:2},{value:"Set-up and Use of Time-delayed Proxies with Polkadot-JS",id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js",level:2},{value:"Proxy calls",id:"proxy-calls",level:2},{value:"Nested Proxy Calls",id:"nested-proxy-calls",level:3}],u={toc:d},h="wrapper";function y(e){var t=e.components,s=(0,n.Z)(e,i);return(0,r.kt)(h,(0,a.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,r.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,r.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,r.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,r.kt)("p",null,"Proxies allow users to use an account (it can be in cold storage or a hot wallet) less frequently\nbut actively participate in the network with the weight of the tokens in that account. Proxies are\nallowed to perform a limited amount of actions related to specific\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/frame-pallets/"},"substrate pallets")," on behalf of another\naccount. The video below contains more information about using proxies."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/1tcygkq52tU/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU"},"Proxy Accounts Tutorial")))),(0,r.kt)("admonition",{title:"Know how to check the calls and pallets accessible by proxies",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"For the latest information on the calls and pallets that can be fully accessed by proxies, check the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/153543b0c8c582e73f520e5c08cbe33bddfb5f69/runtime/polkadot/src/lib.rs#L1158"},"source code in the runtime folder"),"\non the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot repository"))),(0,r.kt)("h2",{id:"creating-proxy-with-polkadot-js"},"Creating Proxy with Polkadot-JS"),(0,r.kt)("p",null,"To create a proxy account with Polkadot-JS read\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support article"),"."),(0,r.kt)("h2",{id:"removing-proxy-with-polkadot-js"},"Removing Proxy with Polkadot-JS"),(0,r.kt)("p",null,'Read the section "Removing Proxies" on\n',(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support page"),"\nto learn how to remove proxies."),(0,r.kt)("h2",{id:"view-your-proxy-on-polkadot-js"},"View your Proxy on Polkadot-JS"),(0,r.kt)("p",null,"To view your proxy, just go on the ",(0,r.kt)("em",{parentName:"p"},"Accounts")," menu in the Polkadot-JS UI, next to the proxied\naccount you will notice a blue icon. Hover on it, and you will see ",(0,r.kt)("em",{parentName:"p"},"Proxy overview"),". Click on it and\nyou will be presented with a list of all proxies for that account."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies",src:o(42273).Z,width:"1842",height:"120"})),(0,r.kt)("p",null,"Additionally, you can head over to the ",(0,r.kt)("em",{parentName:"p"},"Chain State")," tab (underneath the ",(0,r.kt)("em",{parentName:"p"},"Developer")," menu) on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate"},"Polkadot-JS Apps"),". If\nyou've created your proxy on a Polkadot\naccount, it is required to change your network accordingly using the top left navigation button. On\nthis page, the proxy pallet should be selected, returning the announcements and proxies functions.\nThe proxies function will allow you to see your created proxies for either one account or for all\naccounts (using the toggle will enable this). Proxy announcements are what time lock proxies do to\nannounce they are going to conduct an action."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies_dev",src:o(28902).Z,width:"1871",height:"820"})),(0,r.kt)("h2",{id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js"},"Set-up and Use of Time-delayed Proxies with Polkadot-JS"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/3L7Vu2SX0PE"},"this video tutorial")," to learn how you can setup and use\ntime-delayed proxies. The video goes through the example below.")),(0,r.kt)("p",null,"Initially the time time-delayed proxy announces its intended action using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.announce"),"\nextrinsic and will wait for the number of blocks defined in the delay time before executing it. The\nproxy will include the hash of the intended function call in the announcement. Within this time\nwindow, the intended action may be canceled by accounts that control the proxy. This can be done by\nthe proxy itself using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.removeAnnouncement")," extrinsic or by the proxied account using the\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.rejectAnnouncement")," extrinsic. Now we can use proxies knowing that any malicious actions\ncan be noticed and reverted within a delay period. After the time-delay, the proxy can use the\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced")," extrinsic to execute the announced call."),(0,r.kt)("p",null,"Let's take for example the stash account Eleanor setting Bob as a time-delayed staking proxy. In\nthis way, if Bob submits an extrinsic to change the reward destination, such extrinsic can be\nrejected by Eleanor. This implies that Eleanor monitors Bob, and that within the time-delay she can\nspot the announced extrinsic. Eleanor can check all the proxy call announcements made by her\naccount's proxies on-chain. On Polkadot-JS UI, go to Developer > Storage > Proxy > Announcements to\ncheck the hashes for the calls made by the proxy accounts and the block height at which they are\nenabled for execution."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"time-delayed proxies",src:o(54481).Z,width:"1920",height:"800"})),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you try to use ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced"),' to execute the call within the time-delay window you will\nget an error "Proxy unannounced" since the announcement will be done after the time delay. Also note\nthat regular ',(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," calls do not work with time-delayed proxies, you need to announce the\ncall first and then execute the announced call on a separate transaction.")),(0,r.kt)("h2",{id:"proxy-calls"},"Proxy calls"),(0,r.kt)("p",null,"Proxy calls are used by proxies to call proxied accounts. These calls are important for example in\nthe case of ",(0,r.kt)("em",{parentName:"p"},"pure")," proxies, as any attempt to sign transactions with a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy will fail. For\nmore details see the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure"},"dedicated section about pure proxies"),"."),(0,r.kt)("h3",{id:"nested-proxy-calls"},"Nested Proxy Calls"),(0,r.kt)("p",null,"As the term suggests, nested proxy calls are proxy calls within proxy calls. Such calls are needed\nif there are proxied accounts that are proxies themselves. In the example diagram below, Alice has a\nstash account that has a ",(0,r.kt)("em",{parentName:"p"},"staking")," proxy account, P-C. P-C is a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, a proxied account\noriginally spawned by Charly that is now an ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C and signs everything on its behalf."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"nested proxy calls",src:o(51050).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"For example, to bond more funds, Charly needs to submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"prox.proxy")," extrinsic to P-C, which in\nturn submits a ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to Alice including for example a ",(0,r.kt)("inlineCode",{parentName:"p"},"staking.bondExtra"),"\nextrinsic, specifying the number of extra tokens that need to be bounded. If Charly wants to leave,\na new account can take his place as any proxy (before Charly leaves!). There is no need to change\nthe staking proxy account. Also, Alice is the only one who can remove P-C as a staking proxy, and\nP-C can only perform staking-related tasks. For example, P-C cannot send funds out from Alice's\naccount."),(0,r.kt)("p",null,"Proxy calls can be done using the Extrinsic Tab in the Polkadot-JS UI. Nested proxy calls can be\ndone by calling each ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic separately, or in some cases by just calling the last\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic. In the diagram above, submitting the proxy call from P-C to Alice will\nautomatically ask for Charly's signature. Thus one proxy call will trigger the second one because\nCharly's is the only ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's\naccount we will need to submit all three proxy calls."))}y.isMDXComponent=!0},51050:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/nested-proxy-calls-65bdc70624a0b21a087da639743c710d.png"},42273:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkadot_view_proxies-5c65a3f24dc6902f1734de8887dd5696.png"},28902:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkadot_view_proxies_dev-c7f33e592f2c37cade0cc3d37e356aef.png"},54481:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/time-delayed-proxies-8b85523c3caac25b32d1d884af71c048.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f0ff685a.d95b6a98.js b/assets/js/f0ff685a.d95b6a98.js new file mode 100644 index 000000000000..75e249e45158 --- /dev/null +++ b/assets/js/f0ff685a.d95b6a98.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[8191],{35703:(e,t,o)=>{"use strict";o.d(t,{Z:()=>n});var a=o(67294);const n=function(e){var t,o=e.message,n=(0,a.useState)(!0),r=n[0],s=n[1];return a.createElement(a.Fragment,null,r&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=o,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>u});var a=o(74165),n=o(15861),r=o(67294),s=o(87152),i=o(9712),l=o(67425);function c(e,t,o){return p.apply(this,arguments)}function p(){return(p=(0,n.Z)((0,a.Z)().mark((function e(t,o,n){var r,l,c,p,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new s.U(r),e.next=21,i.G.create({provider:c});case 21:p=e.sent,(d=o.split(".")).forEach((function(e){e in p&&(p=p[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=p.toString(),e.abrupt("break",35);case 29:return e.next=31,p();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+o);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,o,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,o,a);break;case"precise":(0,l.Precise)(e,o,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,o);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,s=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,p=(0,r.useState)(""),u=p[0],h=p[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(s.toString(),l,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://kusama-asset-hub-rpc.polkadot.io/";break;case"statemint":e="wss://polkadot-asset-hub-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,o,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(n,l,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),u}},67425:e=>{var t="polkadot",o="kusama",a="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var l=void 0;if(s===t||s===n)l=3;else{if(s!==o&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(l)+" "+r[s].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===n)i=1;else{if(s!==o&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},56870:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>k,frontMatter:()=>l,metadata:()=>p,toc:()=>u});var a=o(87462),n=o(63366),r=(o(67294),o(3905)),s=(o(47940),o(35703)),i=["components"],l={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"},c=void 0,p={unversionedId:"learn/learn-guides-accounts-proxy",id:"learn/learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",description:"Polkadot-JS Guides about Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy",permalink:"/docs/learn-guides-accounts-proxy",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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"}},d={},u=[{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}],h={toc:u},y="wrapper";function k(e){var t=e.components,l=(0,n.Z)(e,i);return(0,r.kt)(y,(0,a.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(s.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)("p",null,"Proxies allow users to use an account (it can be in cold storage or a hot wallet) less frequently\nbut actively participate in the network with the weight of the tokens in that account. Proxies are\nallowed to perform a limited amount of actions related to specific\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/frame-pallets/"},"substrate pallets")," on behalf of another\naccount. The video below contains more information about using proxies."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/1tcygkq52tU/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU"},"Proxy Accounts Tutorial")))),(0,r.kt)("admonition",{title:"Know how to check the calls and pallets accessible by proxies",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"For the latest information on the calls and pallets that can be fully accessed by proxies, check the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/153543b0c8c582e73f520e5c08cbe33bddfb5f69/runtime/polkadot/src/lib.rs#L1158"},"source code in the runtime folder"),"\non the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot repository"))),(0,r.kt)("h2",{id:"creating-proxy-with-polkadot-js"},"Creating Proxy with Polkadot-JS"),(0,r.kt)("p",null,"To create a proxy account with Polkadot-JS read\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support article"),"."),(0,r.kt)("h2",{id:"removing-proxy-with-polkadot-js"},"Removing Proxy with Polkadot-JS"),(0,r.kt)("p",null,'Read the section "Removing Proxies" on\n',(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support page"),"\nto learn how to remove proxies."),(0,r.kt)("h2",{id:"view-your-proxy-on-polkadot-js"},"View your Proxy on Polkadot-JS"),(0,r.kt)("p",null,"To view your proxy, just go on the ",(0,r.kt)("em",{parentName:"p"},"Accounts")," menu in the Polkadot-JS UI, next to the proxied\naccount you will notice a blue icon. Hover on it, and you will see ",(0,r.kt)("em",{parentName:"p"},"Proxy overview"),". Click on it and\nyou will be presented with a list of all proxies for that account."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies",src:o(42273).Z,width:"1842",height:"120"})),(0,r.kt)("p",null,"Additionally, you can head over to the ",(0,r.kt)("em",{parentName:"p"},"Chain State")," tab (underneath the ",(0,r.kt)("em",{parentName:"p"},"Developer")," menu) on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate"},"Polkadot-JS Apps"),". If\nyou've created your proxy on a Polkadot\naccount, it is required to change your network accordingly using the top left navigation button. On\nthis page, the proxy pallet should be selected, returning the announcements and proxies functions.\nThe proxies function will allow you to see your created proxies for either one account or for all\naccounts (using the toggle will enable this). Proxy announcements are what time lock proxies do to\nannounce they are going to conduct an action."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies_dev",src:o(28902).Z,width:"1871",height:"820"})),(0,r.kt)("h2",{id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js"},"Set-up and Use of Time-delayed Proxies with Polkadot-JS"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/3L7Vu2SX0PE"},"this video tutorial")," to learn how you can setup and use\ntime-delayed proxies. The video goes through the example below.")),(0,r.kt)("p",null,"Initially the time time-delayed proxy announces its intended action using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.announce"),"\nextrinsic and will wait for the number of blocks defined in the delay time before executing it. The\nproxy will include the hash of the intended function call in the announcement. Within this time\nwindow, the intended action may be canceled by accounts that control the proxy. This can be done by\nthe proxy itself using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.removeAnnouncement")," extrinsic or by the proxied account using the\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.rejectAnnouncement")," extrinsic. Now we can use proxies knowing that any malicious actions\ncan be noticed and reverted within a delay period. After the time-delay, the proxy can use the\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced")," extrinsic to execute the announced call."),(0,r.kt)("p",null,"Let's take for example the stash account Eleanor setting Bob as a time-delayed staking proxy. In\nthis way, if Bob submits an extrinsic to change the reward destination, such extrinsic can be\nrejected by Eleanor. This implies that Eleanor monitors Bob, and that within the time-delay she can\nspot the announced extrinsic. Eleanor can check all the proxy call announcements made by her\naccount's proxies on-chain. On Polkadot-JS UI, go to Developer > Storage > Proxy > Announcements to\ncheck the hashes for the calls made by the proxy accounts and the block height at which they are\nenabled for execution."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"time-delayed proxies",src:o(54481).Z,width:"1920",height:"800"})),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you try to use ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced"),' to execute the call within the time-delay window you will\nget an error "Proxy unannounced" since the announcement will be done after the time delay. Also note\nthat regular ',(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," calls do not work with time-delayed proxies, you need to announce the\ncall first and then execute the announced call on a separate transaction.")),(0,r.kt)("h2",{id:"proxy-calls"},"Proxy calls"),(0,r.kt)("p",null,"Proxy calls are used by proxies to call proxied accounts. These calls are important for example in\nthe case of ",(0,r.kt)("em",{parentName:"p"},"pure")," proxies, as any attempt to sign transactions with a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy will fail. For\nmore details see the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure"},"dedicated section about pure proxies"),"."),(0,r.kt)("h3",{id:"nested-proxy-calls"},"Nested Proxy Calls"),(0,r.kt)("p",null,"As the term suggests, nested proxy calls are proxy calls within proxy calls. Such calls are needed\nif there are proxied accounts that are proxies themselves. In the example diagram below, Alice has a\nstash account that has a ",(0,r.kt)("em",{parentName:"p"},"staking")," proxy account, P-C. P-C is a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, a proxied account\noriginally spawned by Charly that is now an ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C and signs everything on its behalf."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"nested proxy calls",src:o(51050).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"For example, to bond more funds, Charly needs to submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"prox.proxy")," extrinsic to P-C, which in\nturn submits a ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to Alice including for example a ",(0,r.kt)("inlineCode",{parentName:"p"},"staking.bondExtra"),"\nextrinsic, specifying the number of extra tokens that need to be bounded. If Charly wants to leave,\na new account can take his place as any proxy (before Charly leaves!). There is no need to change\nthe staking proxy account. Also, Alice is the only one who can remove P-C as a staking proxy, and\nP-C can only perform staking-related tasks. For example, P-C cannot send funds out from Alice's\naccount."),(0,r.kt)("p",null,"Proxy calls can be done using the Extrinsic Tab in the Polkadot-JS UI. Nested proxy calls can be\ndone by calling each ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic separately, or in some cases by just calling the last\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic. In the diagram above, submitting the proxy call from P-C to Alice will\nautomatically ask for Charly's signature. Thus one proxy call will trigger the second one because\nCharly's is the only ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's\naccount we will need to submit all three proxy calls."))}k.isMDXComponent=!0},51050:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/nested-proxy-calls-65bdc70624a0b21a087da639743c710d.png"},42273:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkadot_view_proxies-5c65a3f24dc6902f1734de8887dd5696.png"},28902:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkadot_view_proxies_dev-c7f33e592f2c37cade0cc3d37e356aef.png"},54481:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/time-delayed-proxies-8b85523c3caac25b32d1d884af71c048.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f3027c84.13970a78.js b/assets/js/f3027c84.13970a78.js new file mode 100644 index 000000000000..264569388403 --- /dev/null +++ b/assets/js/f3027c84.13970a78.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2242],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(a),k=o,m=d["".concat(l,".").concat(k)]||d[k]||u[k]||r;return a?n.createElement(m,s(s({ref:t},c),{},{components:a})):n.createElement(m,s({ref:t},c))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,s=new Array(r);s[0]=k;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:o,s[1]=i;for(var p=2;p{a.d(t,{Z:()=>o});var n=a(67294);const o=function(e){var t,a=e.message,o=(0,n.useState)(!0),r=o[0],s=o[1];return n.createElement(n.Fragment,null,r&&n.createElement("div",{className:"message-box"},n.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),n.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=a,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},3361:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>p,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),s=a(35703),i=["components"],l={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"},p=void 0,c={unversionedId:"general/polkadotjs-ui",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadotjs-ui.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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={},u=[{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}],k={toc:u},m="wrapper";function h(e){var t=e.components,a=(0,o.Z)(e,i);return(0,r.kt)(m,(0,n.Z)({},k,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(s.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},(0,r.kt)("strong",{parentName:"a"},"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,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs"},(0,r.kt)("strong",{parentName:"a"},"Polkadot-JS tool collection")),", and its functionalities go\nbeyond normal wallet functionalities such as transfers."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Note that the UI may not precisely align with the functionality of individual parachains. For more\ninformation see the ",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-api"},(0,r.kt)("strong",{parentName:"a"},"Polkadot-JS Page")),".")),(0,r.kt)("h2",{id:"main-functionalities"},"Main Functionalities"),(0,r.kt)("p",null,"Here we describe those functionalities that will likely be useful to most users. Those\nfunctionalities include account generation, balance transfers, and staking."),(0,r.kt)("h3",{id:"accounts"},"Accounts"),(0,r.kt)("p",null,"In this section of the UI, you can see accounts injected from a browser extension, such as the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},(0,r.kt)("strong",{parentName:"a"},"Polkadot-JS Extension"))," or\n",(0,r.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions#browser-extensions"},(0,r.kt)("strong",{parentName:"a"},"other in-browser wallets")),". It is also possible\nto expand balance details and see different\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#account-balance-types"},(0,r.kt)("strong",{parentName:"a"},"account balance types")),". You can also:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add an account (this option must be enabled under ",(0,r.kt)("a",{parentName:"li",href:"#settings"},"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."),(0,r.kt)("li",{parentName:"ul"},"Recover and account from JSON file."),(0,r.kt)("li",{parentName:"ul"},"Add an account from QR code."),(0,r.kt)("li",{parentName:"ul"},"Add an account from a ",(0,r.kt)("a",{parentName:"li",href:"/docs/ledger"},(0,r.kt)("strong",{parentName:"a"},"Ledger"))," device (this option must be enabled under\n",(0,r.kt)("a",{parentName:"li",href:"#settings"},"Settings"),")."),(0,r.kt)("li",{parentName:"ul"},"Create a ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-account-multisig"},(0,r.kt)("strong",{parentName:"a"},"multi-signature account")),"."),(0,r.kt)("li",{parentName:"ul"},"Add a proxied account (see\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy"},(0,r.kt)("strong",{parentName:"a"},"Pure Proxies"))," for more\ninformation).")),(0,r.kt)("p",null,"For each account visible in the UI, you can perform different actions, including\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies"},(0,r.kt)("strong",{parentName:"a"},"adding a proxy")),",\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-identity"},(0,r.kt)("strong",{parentName:"a"},"setting an identity")),", and\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-transactions#balance-transfers"},(0,r.kt)("strong",{parentName:"a"},"sending tokens")),"."),(0,r.kt)("p",null,"For more information about adding and recovering accounts, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#account-generation"},(0,r.kt)("strong",{parentName:"a"},"Account Generation"))," page."),(0,r.kt)("h3",{id:"network-staking"},"Network (Staking)"),(0,r.kt)("p",null,"In this section of the UI, you can participate in ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},(0,r.kt)("strong",{parentName:"a"},"staking")),". In the\nStaking menu you can access:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Overview")," tab showing active or waiting validators."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Accounts")," tab (visible only if you added an account) showing accounts that are currently\nused for staking\n(",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-staking#stash-account-and-staking-proxy"},(0,r.kt)("strong",{parentName:"a"},"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,r.kt)("a",{parentName:"li",href:"/docs/learn-staking-advanced#staking-proxies"},(0,r.kt)("strong",{parentName:"a"},"staking proxies"))," here, you can use them\nwhile signing for staking-related transactions."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Payouts")," tab (visible only if you added an account) showing any pending rewards that still\nneed to be paid out to you."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Pool")," tab showing all registered ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-nomination-pools"},(0,r.kt)("strong",{parentName:"a"},"nomination pool")),"\nwith the respective state (open, blocked, or destroying). This tab can also be used to create and\njoin a pool."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Targets")," tab showing detailed information about validators such as commission and return.\nMore information can be found in the ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-nominator"},(0,r.kt)("strong",{parentName:"a"},"Nominator Page")),"."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Bags"),' tab (visible only if you added an account) showing the bag you are in ("My bags") and\nall bags within the ',(0,r.kt)("a",{parentName:"li",href:"/docs/learn-staking-advanced#bags-list"},(0,r.kt)("strong",{parentName:"a"},"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."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Slashes")," tab showing if there are any global slashes."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Validator stats")," tab showing statistics for a chosen validator.")),(0,r.kt)("h3",{id:"settings"},"Settings"),(0,r.kt)("p",null,"In this UI section, you can change general settings such as appearance and language. You can also:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"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)."),(0,r.kt)("li",{parentName:"ul"},"Choose to attach Ledger devices. This adds an account directly in the UI from a Ledger device.")),(0,r.kt)("p",null,"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,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-accounts#metadata-updates-with-the-polkadot-js-browser-extension"},(0,r.kt)("strong",{parentName:"a"},"dedicated section")),"."),(0,r.kt)("h2",{id:"other-functionalities"},"Other Functionalities"),(0,r.kt)("p",null,"In this section, we describe those functionalities that will less likely interest the average user."),(0,r.kt)("h3",{id:"network"},"Network"),(0,r.kt)("p",null,"In addition to staking, in the Network section, you can also:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"See the Explorer with the most recent blocks and events."),(0,r.kt)("li",{parentName:"ul"},"Inspect ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-parachains"},(0,r.kt)("strong",{parentName:"a"},"parachains")),", see parachain\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-auction"},(0,r.kt)("strong",{parentName:"a"},"auctions"))," and participate to parachain\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-crowdloans"},(0,r.kt)("strong",{parentName:"a"},"crowdloans")),".")),(0,r.kt)("h3",{id:"governance"},"Governance"),(0,r.kt)("p",null,"In this section of the UI, you can participate in\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},(0,r.kt)("strong",{parentName:"a"},"governance")),"."),(0,r.kt)("h3",{id:"developer"},"Developer"),(0,r.kt)("p",null,"In this section of the UI, you can access advanced features such as:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/chainstate"},"Query on-chain data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/rpc"},"Query the node using RPC calls")),(0,r.kt)("li",{parentName:"ul"},"Call ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-transactions"},(0,r.kt)("strong",{parentName:"a"},"extrinsics"))," using your account (you are able to see this\noption only if you have an account in the UI)")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsic tab")," provides the use to access more\ngranular functions such as\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy"},(0,r.kt)("strong",{parentName:"a"},"pure proxies"))," and\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies#time-delayed-proxy"},(0,r.kt)("strong",{parentName:"a"},"time-delayed proxies")),", change\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},(0,r.kt)("strong",{parentName:"a"},"nomination pool"))," settings (nomination and roles) and use\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies#non-transfer-proxy"},(0,r.kt)("strong",{parentName:"a"},"non-transfer proxies")),",\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-assets#destroying-an-asset"},(0,r.kt)("strong",{parentName:"a"},"destroy assets")),", and much more."),(0,r.kt)("h2",{id:"beginners-guide-to-polkadot-js"},"Beginner's Guide to Polkadot-JS"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=4EQqwGFV1D8"},"Introduction to Polkadot-JS")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=sy7lvAqyzkY"},"Create an account using Polkadot-JS")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=g4b4IWR6OrE"},"Network Explorer on Polkadot-JS UI"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f3027c84.6df02cfe.js b/assets/js/f3027c84.6df02cfe.js deleted file mode 100644 index ada81ec2b15a..000000000000 --- a/assets/js/f3027c84.6df02cfe.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2242],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(a),k=o,h=d["".concat(l,".").concat(k)]||d[k]||u[k]||r;return a?n.createElement(h,s(s({ref:t},c),{},{components:a})):n.createElement(h,s({ref:t},c))}));function h(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,s=new Array(r);s[0]=k;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:o,s[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>p,toc:()=>d});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),s=["components"],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"},l=void 0,p={unversionedId:"general/polkadotjs-ui",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadotjs-ui.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",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}],u={toc:d},k="wrapper";function h(e){var t=e.components,a=(0,o.Z)(e,s);return(0,r.kt)(k,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"sticky",style:{zIndex:1}},(0,r.kt)("br",null),(0,r.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the Polkadot-JS UI, you\ncan contact the ",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more\nuser-friendly tools see the ",(0,r.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,r.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and\n",(0,r.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/explorer"},(0,r.kt)("strong",{parentName:"a"},"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,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs"},(0,r.kt)("strong",{parentName:"a"},"Polkadot-JS tool collection")),", and its functionalities go\nbeyond normal wallet functionalities such as transfers."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Note that the UI may not precisely align with the functionality of individual parachains. For more\ninformation see the ",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-api"},(0,r.kt)("strong",{parentName:"a"},"Polkadot-JS Page")),".")),(0,r.kt)("h2",{id:"main-functionalities"},"Main Functionalities"),(0,r.kt)("p",null,"Here we describe those functionalities that will likely be useful to most users. Those\nfunctionalities include account generation, balance transfers, and staking."),(0,r.kt)("h3",{id:"accounts"},"Accounts"),(0,r.kt)("p",null,"In this section of the UI, you can see accounts injected from a browser extension, such as the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadotjs#polkadot-js-extension"},(0,r.kt)("strong",{parentName:"a"},"Polkadot-JS Extension"))," or\n",(0,r.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions#browser-extensions"},(0,r.kt)("strong",{parentName:"a"},"other in-browser wallets")),". It is also possible\nto expand balance details and see different\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#account-balance-types"},(0,r.kt)("strong",{parentName:"a"},"account balance types")),". You can also:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Add an account (this option must be enabled under ",(0,r.kt)("a",{parentName:"li",href:"#settings"},"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."),(0,r.kt)("li",{parentName:"ul"},"Recover and account from JSON file."),(0,r.kt)("li",{parentName:"ul"},"Add an account from QR code."),(0,r.kt)("li",{parentName:"ul"},"Add an account from a ",(0,r.kt)("a",{parentName:"li",href:"/docs/ledger"},(0,r.kt)("strong",{parentName:"a"},"Ledger"))," device (this option must be enabled under\n",(0,r.kt)("a",{parentName:"li",href:"#settings"},"Settings"),")."),(0,r.kt)("li",{parentName:"ul"},"Create a ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-account-multisig"},(0,r.kt)("strong",{parentName:"a"},"multi-signature account")),"."),(0,r.kt)("li",{parentName:"ul"},"Add a proxied account (see\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy"},(0,r.kt)("strong",{parentName:"a"},"Pure Proxies"))," for more\ninformation).")),(0,r.kt)("p",null,"For each account visible in the UI, you can perform different actions, including\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies"},(0,r.kt)("strong",{parentName:"a"},"adding a proxy")),",\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-identity"},(0,r.kt)("strong",{parentName:"a"},"setting an identity")),", and\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-transactions#balance-transfers"},(0,r.kt)("strong",{parentName:"a"},"sending tokens")),"."),(0,r.kt)("p",null,"For more information about adding and recovering accounts, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#account-generation"},(0,r.kt)("strong",{parentName:"a"},"Account Generation"))," page."),(0,r.kt)("h3",{id:"network-staking"},"Network (Staking)"),(0,r.kt)("p",null,"In this section of the UI, you can participate in ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},(0,r.kt)("strong",{parentName:"a"},"staking")),". In the\nStaking menu you can access:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Overview")," tab showing active or waiting validators."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Accounts")," tab (visible only if you added an account) showing accounts that are currently\nused for staking\n(",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-staking#stash-account-and-staking-proxy"},(0,r.kt)("strong",{parentName:"a"},"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,r.kt)("a",{parentName:"li",href:"/docs/learn-staking-advanced#staking-proxies"},(0,r.kt)("strong",{parentName:"a"},"staking proxies"))," here, you can use them\nwhile signing for staking-related transactions."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Payouts")," tab (visible only if you added an account) showing any pending rewards that still\nneed to be paid out to you."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Pool")," tab showing all registered ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-nomination-pools"},(0,r.kt)("strong",{parentName:"a"},"nomination pool")),"\nwith the respective state (open, blocked, or destroying). This tab can also be used to create and\njoin a pool."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Targets")," tab showing detailed information about validators such as commission and return.\nMore information can be found in the ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-nominator"},(0,r.kt)("strong",{parentName:"a"},"Nominator Page")),"."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Bags"),' tab (visible only if you added an account) showing the bag you are in ("My bags") and\nall bags within the ',(0,r.kt)("a",{parentName:"li",href:"/docs/learn-staking-advanced#bags-list"},(0,r.kt)("strong",{parentName:"a"},"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."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Slashes")," tab showing if there are any global slashes."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("strong",{parentName:"li"},"Validator stats")," tab showing statistics for a chosen validator.")),(0,r.kt)("h3",{id:"settings"},"Settings"),(0,r.kt)("p",null,"In this UI section, you can change general settings such as appearance and language. You can also:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"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)."),(0,r.kt)("li",{parentName:"ul"},"Choose to attach Ledger devices. This adds an account directly in the UI from a Ledger device.")),(0,r.kt)("p",null,"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,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-accounts#metadata-updates-with-the-polkadot-js-browser-extension"},(0,r.kt)("strong",{parentName:"a"},"dedicated section")),"."),(0,r.kt)("h2",{id:"other-functionalities"},"Other Functionalities"),(0,r.kt)("p",null,"In this section, we describe those functionalities that will less likely interest the average user."),(0,r.kt)("h3",{id:"network"},"Network"),(0,r.kt)("p",null,"In addition to staking, in the Network section, you can also:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"See the Explorer with the most recent blocks and events."),(0,r.kt)("li",{parentName:"ul"},"Inspect ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-parachains"},(0,r.kt)("strong",{parentName:"a"},"parachains")),", see parachain\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-auction"},(0,r.kt)("strong",{parentName:"a"},"auctions"))," and participate to parachain\n",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-crowdloans"},(0,r.kt)("strong",{parentName:"a"},"crowdloans")),".")),(0,r.kt)("h3",{id:"governance"},"Governance"),(0,r.kt)("p",null,"In this section of the UI, you can participate in\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},(0,r.kt)("strong",{parentName:"a"},"governance")),"."),(0,r.kt)("h3",{id:"developer"},"Developer"),(0,r.kt)("p",null,"In this section of the UI, you can access advanced features such as:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/chainstate"},"Query on-chain data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/rpc"},"Query the node using RPC calls")),(0,r.kt)("li",{parentName:"ul"},"Call ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-transactions"},(0,r.kt)("strong",{parentName:"a"},"extrinsics"))," using your account (you are able to see this\noption only if you have an account in the UI)")),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/extrinsics"},"Extrinsic tab")," provides the use to access more\ngranular functions such as\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure#anonymous-proxy-pure-proxy"},(0,r.kt)("strong",{parentName:"a"},"pure proxies"))," and\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies#time-delayed-proxy"},(0,r.kt)("strong",{parentName:"a"},"time-delayed proxies")),", change\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},(0,r.kt)("strong",{parentName:"a"},"nomination pool"))," settings (nomination and roles) and use\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies#non-transfer-proxy"},(0,r.kt)("strong",{parentName:"a"},"non-transfer proxies")),",\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-assets#destroying-an-asset"},(0,r.kt)("strong",{parentName:"a"},"destroy assets")),", and much more."),(0,r.kt)("h2",{id:"beginners-guide-to-polkadot-js"},"Beginner's Guide to Polkadot-JS"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=4EQqwGFV1D8"},"Introduction to Polkadot-JS")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=sy7lvAqyzkY"},"Create an account using Polkadot-JS")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=g4b4IWR6OrE"},"Network Explorer on Polkadot-JS UI"))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f7acb151.6f91be65.js b/assets/js/f7acb151.6f91be65.js new file mode 100644 index 000000000000..d14226e9a854 --- /dev/null +++ b/assets/js/f7acb151.6f91be65.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[5483],{35703:(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var a=s(67294);const n=function(e){var t,s=e.message,n=(0,a.useState)(!0),o=n[0],r=n[1];return a.createElement(a.Fragment,null,o&&a.createElement("div",{className:"message-box"},a.createElement("button",{className:"close-button",onClick:function(){r(!1)}},"\u2716 "),a.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=s,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},47940:(e,t,s)=>{"use strict";s.d(t,{Z:()=>p});var a=s(74165),n=s(15861),o=s(67294),r=s(87152),i=s(9712),l=s(67425);function u(e,t,s){return c.apply(this,arguments)}function c(){return(c=(0,n.Z)((0,a.Z)().mark((function e(t,s,n){var o,l,u,c,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return o="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return o="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return o="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return o="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==o){e.next=18;break}return e.abrupt("return");case 18:return u=new r.U(o),e.next=21,i.G.create({provider:u});case 21:c=e.sent,(d=s.split(".")).forEach((function(e){e in c&&(c=c[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=c.toString(),e.abrupt("break",35);case 29:return e.next=31,c();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+s);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,s,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,s,a);break;case"precise":(0,l.Precise)(e,s,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,s);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,s=e.path,r=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,c=(0,o.useState)(""),p=c[0],h=c[1];return t=t.toLowerCase(),(0,o.useEffect)((function(){void 0!==l?d(r.toString(),l,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;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var o=function(){var e=(0,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t,s,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(n,l,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{o()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",s="kusama",a="statemine",n="statemint",o={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,i){var l=void 0;if(r===t||r===n)l=3;else{if(r!==s&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/o[r].precision)?e/o[r].precision+" "+o[r].symbol:(e/o[r].precision).toFixed(l)+" "+o[r].symbol).toString())},Precise:function(e,t,s){s(e=(e=parseFloat(e))/o[t].precision+" "+o[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,o,r){var i=void 0;if(r===t||r===n)i=1;else{if(r!==s&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}o((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},49736:(e,t,s)=>{"use strict";s.r(t),s.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>b,frontMatter:()=>u,metadata:()=>d,toc:()=>h});var a=s(87462),n=s(63366),o=(s(67294),s(3905)),r=s(47940),i=s(35703),l=["components"],u={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"},c=void 0,d={unversionedId:"learn/learn-guides-assets-create",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets-create.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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 Hub Ledger Guides",permalink:"/docs/learn-guides-assets-ledger"}},p={},h=[{value:"Creating Assets on the Asset Hub with Polkadot-JS",id:"creating-assets-on-the-asset-hub-with-polkadot-js",level:2}],k={toc:h},m="wrapper";function b(e){var t=e.components,u=(0,n.Z)(e,l);return(0,o.kt)(m,(0,a.Z)({},k,u,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(i.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,o.kt)("p",null,"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 DOT. The Existential Deposit (ED),\ntransaction fees, and the deposits for proxy/multisig operations are about 1/10th of the values on\nthe Relay chains. For example, the Existential Deposit of an Asset Hub account is\n",(0,o.kt)(r.Z,{network:"statemint",path:"consts.balances.existentialDeposit",defaultValue:1e8,filter:"humanReadable",mdxType:"RPC"}),",\n","\nwhen compared to\n",(0,o.kt)(r.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"})," on Polkadot\n",".\nApart from the core protocol token DOT, the\nassets held on the Asset Hub can be broadly categorized as"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Assets backed by an on-chain protocol\u2019s utility"),(0,o.kt)("li",{parentName:"ul"},"Assets with off-chain backing"),(0,o.kt)("li",{parentName:"ul"},"Assets without any backing")),(0,o.kt)("p",null,"For additional background on the Asset Hub check out\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181800-what-is-statemint-and-statemine-and-how-do-i-use-them-"},"this support article"),"."),(0,o.kt)("h2",{id:"creating-assets-on-the-asset-hub-with-polkadot-js"},"Creating Assets on the Asset Hub with Polkadot-JS"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Before minting assets on the Asset Hub, we recommend that you try out this tutorial on Westmint,\nwhich is a system parachain on Westend test network. The WND tokens (Westies) can be teleported from\nWestend to Westmint, are available for free through a\n",(0,o.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-DOT#getting-westies"},"faucet"),"."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"The images in the guides below are for Polkadot, but they also apply to Kusama."))),(0,o.kt)("p",null,"To create an asset on the Asset Hub, you would need a deposit of\n",(0,o.kt)(r.Z,{network:"statemint",path:"consts.assets.assetDeposit",defaultValue:1e11,filter:"humanReadable",mdxType:"RPC"}),"\n","\nand around\n",(0,o.kt)(r.Z,{network:"statemint",path:"consts.assets.metadataDepositBase",defaultValue:20068e5,filter:"humanReadable",mdxType:"RPC"}),"\n","\nfor the metadata. Before you create an asset on the Asset Hub, ensure that your Asset Hub account\nbalance is a bit more than the sum of those two deposits, which should seamlessly account for the\nrequired deposits and transaction fees. You can send\nDOT from a\nPolkadot account to a the Asset Hub account\nusing the teleport functionality. For instructions on teleporting\nDOT, check this\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-teleport"},"tutorial on Teleports"),"."),(0,o.kt)("p",null,"Assuming you have the required DOT balance on\nyour Asset Hub account, the following instructions should let you successfully create an asset on\nthe Asset Hub"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Access the Asset Hub through ",(0,o.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),"."),(0,o.kt)("li",{parentName:"ul"},"Navigate to Network > Assets.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Navigate to Assets page",src:s(85353).Z,width:"1710",height:"554"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"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.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Add Asset Metadata",src:s(3910).Z,width:"1510",height:"798"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Choose the admin, issuer and the freezer accounts for your asset and click on the create button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Asset managing accounts",src:s(25965).Z,width:"1518",height:"510"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"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).")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Sign asset creating transaction",src:s(39764).Z,width:"1520",height:"610"})),(0,o.kt)("p",null,"If the transaction is successful, you should see the asset and its details displayed in the\nNetwork > Assets page on the Asset Hub."))}b.isMDXComponent=!0},85353:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-0-71cbceb69c712729d7920b4575ab8f46.png"},3910:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-1-6f406281abdca9f5c2941ebd4d9479fd.png"},25965:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-2-2fd6118841d0c4e037d5f51c6b1010e1.png"},39764:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-3-3952e84a1b7c80239e8fb1f907af2583.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f7acb151.8cf032d9.js b/assets/js/f7acb151.8cf032d9.js deleted file mode 100644 index 4d0ac0615277..000000000000 --- a/assets/js/f7acb151.8cf032d9.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[5483],{47940:(e,t,s)=>{"use strict";s.d(t,{Z:()=>p});var a=s(74165),n=s(15861),o=s(67294),r=s(87152),i=s(9712),l=s(67425);function u(e,t,s){return c.apply(this,arguments)}function c(){return(c=(0,n.Z)((0,a.Z)().mark((function e(t,s,n){var o,l,u,c,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return o="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return o="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return o="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return o="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==o){e.next=18;break}return e.abrupt("return");case 18:return u=new r.U(o),e.next=21,i.G.create({provider:u});case 21:c=e.sent,(d=s.split(".")).forEach((function(e){e in c&&(c=c[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=c.toString(),e.abrupt("break",35);case 29:return e.next=31,c();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+s);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,s,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,s,a);break;case"precise":(0,l.Precise)(e,s,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,s);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,s=e.path,r=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,c=(0,o.useState)(""),p=c[0],h=c[1];return t=t.toLowerCase(),(0,o.useEffect)((function(){void 0!==l?d(r.toString(),l,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;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var o=function(){var e=(0,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t,s,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(n,l,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{o()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",s="kusama",a="statemine",n="statemint",o={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,i){var l=void 0;if(r===t||r===n)l=3;else{if(r!==s&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/o[r].precision)?e/o[r].precision+" "+o[r].symbol:(e/o[r].precision).toFixed(l)+" "+o[r].symbol).toString())},Precise:function(e,t,s){s(e=(e=parseFloat(e))/o[t].precision+" "+o[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,o,r){var i=void 0;if(r===t||r===n)i=1;else{if(r!==s&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}o((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},49736:(e,t,s)=>{"use strict";s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>b,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var a=s(87462),n=s(63366),o=(s(67294),s(3905)),r=s(47940),i=["components"],l={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"},u=void 0,c={unversionedId:"learn/learn-guides-assets-create",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-assets-create.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711551545,formattedLastUpdatedAt:"Mar 27, 2024",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 Hub Ledger Guides",permalink:"/docs/learn-guides-assets-ledger"}},d={},p=[{value:"Creating Assets on the Asset Hub with Polkadot-JS",id:"creating-assets-on-the-asset-hub-with-polkadot-js",level:2}],h={toc:p},k="wrapper";function b(e){var t=e.components,l=(0,n.Z)(e,i);return(0,o.kt)(k,(0,a.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"sticky",style:{zIndex:1}},(0,o.kt)("br",null),(0,o.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,o.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,o.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,o.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,o.kt)("p",null,"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 DOT. The Existential Deposit (ED),\ntransaction fees, and the deposits for proxy/multisig operations are about 1/10th of the values on\nthe Relay chains. For example, the Existential Deposit of an Asset Hub account is\n",(0,o.kt)(r.Z,{network:"statemint",path:"consts.balances.existentialDeposit",defaultValue:1e8,filter:"humanReadable",mdxType:"RPC"}),",\n","\nwhen compared to\n",(0,o.kt)(r.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"})," on Polkadot\n",".\nApart from the core protocol token DOT, the\nassets held on the Asset Hub can be broadly categorized as"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Assets backed by an on-chain protocol\u2019s utility"),(0,o.kt)("li",{parentName:"ul"},"Assets with off-chain backing"),(0,o.kt)("li",{parentName:"ul"},"Assets without any backing")),(0,o.kt)("p",null,"For additional background on the Asset Hub check out\n",(0,o.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181800-what-is-statemint-and-statemine-and-how-do-i-use-them-"},"this support article"),"."),(0,o.kt)("h2",{id:"creating-assets-on-the-asset-hub-with-polkadot-js"},"Creating Assets on the Asset Hub with Polkadot-JS"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Before minting assets on the Asset Hub, we recommend that you try out this tutorial on Westmint,\nwhich is a system parachain on Westend test network. The WND tokens (Westies) can be teleported from\nWestend to Westmint, are available for free through a\n",(0,o.kt)("a",{parentName:"p",href:"https://wiki.polkadot.network/docs/learn-DOT#getting-westies"},"faucet"),"."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"The images in the guides below are for Polkadot, but they also apply to Kusama."))),(0,o.kt)("p",null,"To create an asset on the Asset Hub, you would need a deposit of\n",(0,o.kt)(r.Z,{network:"statemint",path:"consts.assets.assetDeposit",defaultValue:1e11,filter:"humanReadable",mdxType:"RPC"}),"\n","\nand around\n",(0,o.kt)(r.Z,{network:"statemint",path:"consts.assets.metadataDepositBase",defaultValue:20068e5,filter:"humanReadable",mdxType:"RPC"}),"\n","\nfor the metadata. Before you create an asset on the Asset Hub, ensure that your Asset Hub account\nbalance is a bit more than the sum of those two deposits, which should seamlessly account for the\nrequired deposits and transaction fees. You can send\nDOT from a\nPolkadot account to a the Asset Hub account\nusing the teleport functionality. For instructions on teleporting\nDOT, check this\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-teleport"},"tutorial on Teleports"),"."),(0,o.kt)("p",null,"Assuming you have the required DOT balance on\nyour Asset Hub account, the following instructions should let you successfully create an asset on\nthe Asset Hub"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Access the Asset Hub through ",(0,o.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS UI"),"."),(0,o.kt)("li",{parentName:"ul"},"Navigate to Network > Assets.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Navigate to Assets page",src:s(85353).Z,width:"1710",height:"554"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"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.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Add Asset Metadata",src:s(3910).Z,width:"1510",height:"798"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Choose the admin, issuer and the freezer accounts for your asset and click on the create button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Asset managing accounts",src:s(25965).Z,width:"1518",height:"510"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"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).")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Sign asset creating transaction",src:s(39764).Z,width:"1520",height:"610"})),(0,o.kt)("p",null,"If the transaction is successful, you should see the asset and its details displayed in the\nNetwork > Assets page on the Asset Hub."))}b.isMDXComponent=!0},85353:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-0-71cbceb69c712729d7920b4575ab8f46.png"},3910:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-1-6f406281abdca9f5c2941ebd4d9479fd.png"},25965:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-2-2fd6118841d0c4e037d5f51c6b1010e1.png"},39764:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const a=s.p+"assets/images/hub-asset-3-3952e84a1b7c80239e8fb1f907af2583.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/fda65b2b.4b60acbf.js b/assets/js/fda65b2b.4b60acbf.js new file mode 100644 index 000000000000..87b231c98094 --- /dev/null +++ b/assets/js/fda65b2b.4b60acbf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1975],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=r(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,h=u["".concat(l,".").concat(m)]||u[m]||c[m]||i;return n?o.createElement(h,s(s({ref:t},d),{},{components:n})):o.createElement(h,s({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,s=new Array(i);s[0]=m;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[u]="string"==typeof e?e:a,s[1]=r;for(var p=2;p{n.d(t,{Z:()=>a});var o=n(67294);const a=function(e){var t,n=e.message,a=(0,o.useState)(!0),i=a[0],s=a[1];return o.createElement(o.Fragment,null,i&&o.createElement("div",{className:"message-box"},o.createElement("button",{className:"close-button",onClick:function(){s(!1)}},"\u2716 "),o.createElement("div",{className:"message-content",dangerouslySetInnerHTML:{__html:(t=n,t.replace(/\[(.*?)\]\((.*?)\)/g,'$1'))}})))}},30742:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>p,default:()=>f,frontMatter:()=>l,metadata:()=>d,toc:()=>c});var o=n(87462),a=n(63366),i=(n(67294),n(3905)),s=n(35703),r=["components"],l={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"},p=void 0,d={unversionedId:"learn/learn-guides-asset-conversion",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-asset-conversion.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1714545713,formattedLastUpdatedAt:"May 1, 2024",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:"Asset Hub Ledger Guides",permalink:"/docs/learn-guides-assets-ledger"},next:{title:"Bridge Hub Guides",permalink:"/docs/learn-guides-bridges"}},u={},c=[{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}],m={toc:c},h="wrapper";function f(e){var t=e.components,l=(0,a.Z)(e,r);return(0,i.kt)(h,(0,o.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(s.Z,{message:"Polkadot-JS is for developers and power users only. If you need help using the\n[Polkadot-JS UI](/docs/polkadotjs-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.",mdxType:"MessageBox"}),(0,i.kt)("admonition",{title:"Wallet and UI Developers",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"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, Rococo and Kusama ",(0,i.kt)("a",{parentName:"p",href:"https://app.dotacp.mvpworkshop.co/swap"},"here"),".")),(0,i.kt)("p",null,"The tutorial below demonstrates the complete journey from creating a liquidity pool on Rococo test\nnet and exploring all of the key functionalities of Asset Conversion pallet."),(0,i.kt)("h2",{id:"create-a-liquidity-pool"},"Create a Liquidity Pool"),(0,i.kt)("p",null,"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,i.kt)("a",{parentName:"p",href:"/docs/learn-guides-assets-create"},"here.")),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"create_pool")," function is used to create an empty liquidity pool along with a new ",(0,i.kt)("inlineCode",{parentName:"p"},"lp_token"),"\nasset. This asset's ID is announced in the ",(0,i.kt)("inlineCode",{parentName:"p"},"Event::PoolCreated")," event. After creating a pool,\nliquidity can be added to it via the ",(0,i.kt)("inlineCode",{parentName:"p"},"Pallet::add_liquidity")," function."),(0,i.kt)("p",null,"For example, the snapshot below shows how to create liquidity pool with ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens and ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU"),"\ntokens with the asset ID ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo Asset Hub. Creating this extrinsic requires knowledge of\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn/xcm/fundamentals/multilocation-summary"},"XCM Multilocations"),". From the perspective of AssetHub,\nan Asset Hub, the asset with an ",(0,i.kt)("inlineCode",{parentName:"p"},"AssetId")," of ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," has a MultiLocation of"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"{\n parents: 0,\n interior: {\n X2: [{PalletInstance: 50}, {GeneralIndex: 149}]\n }\n}\n")),(0,i.kt)("p",null,"The PalletInstance of ",(0,i.kt)("inlineCode",{parentName:"p"},"50")," represents the Assets pallet on Asset Hub and the ",(0,i.kt)("inlineCode",{parentName:"p"},"GeneralIndex")," is the\n",(0,i.kt)("inlineCode",{parentName:"p"},"AssetId")," of the asset."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create Liquidity Pool",src:n(34851).Z,width:"2870",height:"2186"})),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"lp_token")," ID created for this pool is ",(0,i.kt)("inlineCode",{parentName:"p"},"24"),", and\n",(0,i.kt)("a",{parentName:"p",href:"https://assethub-rococo.subscan.io/extrinsic/4604922-2?event=4604922-8"},"here")," is the event for\nreference."),(0,i.kt)("h2",{id:"liquidity-provision"},"Liquidity Provision"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"For example, the snapshot below shows how to provide liquidity to the pool with ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens and\n",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens with the asset ID ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo Asset Hub. The intention is to provide liquidity of 1\n",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," token (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"1000000000000")," as it has 12 decimals) and 100 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128"),"\nvalue of ",(0,i.kt)("inlineCode",{parentName:"p"},"1000000000000")," as it has 10 decimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Provide Liquidity",src:n(86925).Z,width:"2860",height:"2992"})),(0,i.kt)("p",null,"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,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Liquidity Pool Example",src:n(12414).Z,width:"2595",height:"1296"})),(0,i.kt)("h2",{id:"swap-assets"},"Swap Assets"),(0,i.kt)("h3",{id:"swap-from-an-exact-amount-of-tokens"},"Swap from an exact amount of Tokens"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"For example, the snapshot below shows how to swap ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens to ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens with the asset ID\n",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo Asset Hub. The intention is to swap 0.1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"100000000000"),"\nas it has 12 decimals) to at least 9 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"90000000000")," as it has 10\ndecimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap Exact Amount",src:n(95527).Z,width:"2844",height:"3016"})),(0,i.kt)("p",null,"Below is the snapshot of the liquidity pool on the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")," after successful submission of the\nextrinsic above. It can be observed that the pool now has 1.1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens and around 9.06 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU"),"\ntokens are transferred out of it."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap Exact Amount Example",src:n(96084).Z,width:"2746",height:"1140"})),(0,i.kt)("h3",{id:"swap-to-an-exact-amount-of-tokens"},"Swap to an exact amount of Tokens"),(0,i.kt)("p",null,"On the other hand, the ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"For example, the snapshot below shows how to swap ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens with the asset ID ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo\nAsset Hub to ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," Tokens. The intention is to swap for obtaining 0.1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of\n",(0,i.kt)("inlineCode",{parentName:"p"},"100000000000")," as it has 12 decimals) for a maximum of 10 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of\n",(0,i.kt)("inlineCode",{parentName:"p"},"100000000000")," as it has 10 decimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap Exact Amount",src:n(70847).Z,width:"2860",height:"3006"})),(0,i.kt)("p",null,"Below is the snapshot of the liquidity pool on the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")," after successful submission of the\nextrinsic above."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap to Exact Amount Example",src:n(94618).Z,width:"2627",height:"1294"})),(0,i.kt)("h2",{id:"withdraw-provided-liquidity"},"Withdraw Provided Liquidity"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"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,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of",(0,i.kt)("inlineCode",{parentName:"p"},"400000000000")," as it has 12 decimals) and 40 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens\n(",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"400000000000")," as it has 10 decimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Remove Liquidity",src:n(19136).Z,width:"2832",height:"2870"})),(0,i.kt)("p",null,"Below is the snapshot of the liquidity pool on the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")," after successful submission of the\nextrinsic above."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Remove Liquidity Example",src:n(65383).Z,width:"2585",height:"1309"})))}f.isMDXComponent=!0},86925:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Add-Liquidity-e880d907645db19dc0ee4b8b9fdb9ad3.png"},34851:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Create-Pool-8945e1790f183ac14a4f1185763ea5a0.png"},12414:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Liquidity-Pool-Example-ae441ec1a55827fd488ecef3b8510681.png"},65383:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Remove-Liquidity-Example-bfdc3a0b327bd592c2abcf4cfb9b1755.png"},19136:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Remove-Liquidity-7fc348a12802b40bf643683bd14c5a3b.png"},95527:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-Exact-Token-a56d6a02ba2bf1a2620bc7f3955aa658.png"},96084:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-Exact-Tokens-Example-60790c60e4a0315e59834c0c5421b0f9.png"},94618:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-To-Exact-Example-9be51ed786d418f553b1eeb0ae866cb0.png"},70847:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-To-Exact-Tokens-ae5e1b66b2a80208b329a48af5ab8472.png"}}]); \ No newline at end of file diff --git a/assets/js/fda65b2b.f2e18ab0.js b/assets/js/fda65b2b.f2e18ab0.js deleted file mode 100644 index 9e3fa90f8843..000000000000 --- a/assets/js/fda65b2b.f2e18ab0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1975],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),p=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=r(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,h=u["".concat(l,".").concat(m)]||u[m]||c[m]||i;return n?o.createElement(h,s(s({ref:t},d),{},{components:n})):o.createElement(h,s({ref:t},d))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,s=new Array(i);s[0]=m;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[u]="string"==typeof e?e:a,s[1]=r;for(var p=2;p{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>p,toc:()=>u});var o=n(87462),a=n(63366),i=(n(67294),n(3905)),s=["components"],r={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"},l=void 0,p={unversionedId:"learn/learn-guides-asset-conversion",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,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-asset-conversion.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1714376284,formattedLastUpdatedAt:"Apr 29, 2024",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:"Asset Hub Ledger Guides",permalink:"/docs/learn-guides-assets-ledger"},next:{title:"Bridge Hub Guides",permalink:"/docs/learn-guides-bridges"}},d={},u=[{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}],c={toc:u},m="wrapper";function h(e){var t=e.components,r=(0,a.Z)(e,s);return(0,i.kt)(m,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"Polkadot-JS is for developers and power users only. If you need help using the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/polkadotjs-ui"},"Polkadot-JS UI"),", you can contact the\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/home"},"Polkadot Support Team"),". For more user-friendly tools\nsee the ",(0,i.kt)("a",{parentName:"p",href:"./wallets-index"},"wallets"),", ",(0,i.kt)("a",{parentName:"p",href:"./apps-index"},"apps")," and ",(0,i.kt)("a",{parentName:"p",href:"./dashboards-index"},"dashboard")," pages.")),(0,i.kt)("admonition",{title:"Wallet and UI Developers",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"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, Rococo and Kusama ",(0,i.kt)("a",{parentName:"p",href:"https://app.dotacp.mvpworkshop.co/swap"},"here"),".")),(0,i.kt)("p",null,"The tutorial below demonstrates the complete journey from creating a liquidity pool on Rococo test\nnet and exploring all of the key functionalities of Asset Conversion pallet."),(0,i.kt)("h2",{id:"create-a-liquidity-pool"},"Create a Liquidity Pool"),(0,i.kt)("p",null,"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,i.kt)("a",{parentName:"p",href:"/docs/learn-guides-assets-create"},"here.")),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"create_pool")," function is used to create an empty liquidity pool along with a new ",(0,i.kt)("inlineCode",{parentName:"p"},"lp_token"),"\nasset. This asset's ID is announced in the ",(0,i.kt)("inlineCode",{parentName:"p"},"Event::PoolCreated")," event. After creating a pool,\nliquidity can be added to it via the ",(0,i.kt)("inlineCode",{parentName:"p"},"Pallet::add_liquidity")," function."),(0,i.kt)("p",null,"For example, the snapshot below shows how to create liquidity pool with ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens and ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU"),"\ntokens with the asset ID ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo Asset Hub. Creating this extrinsic requires knowledge of\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn/xcm/fundamentals/multilocation-summary"},"XCM Multilocations"),". From the perspective of AssetHub,\nan Asset Hub, the asset with an ",(0,i.kt)("inlineCode",{parentName:"p"},"AssetId")," of ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," has a MultiLocation of"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"{\n parents: 0,\n interior: {\n X2: [{PalletInstance: 50}, {GeneralIndex: 149}]\n }\n}\n")),(0,i.kt)("p",null,"The PalletInstance of ",(0,i.kt)("inlineCode",{parentName:"p"},"50")," represents the Assets pallet on Asset Hub and the ",(0,i.kt)("inlineCode",{parentName:"p"},"GeneralIndex")," is the\n",(0,i.kt)("inlineCode",{parentName:"p"},"AssetId")," of the asset."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create Liquidity Pool",src:n(34851).Z,width:"2870",height:"2186"})),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"lp_token")," ID created for this pool is ",(0,i.kt)("inlineCode",{parentName:"p"},"24"),", and\n",(0,i.kt)("a",{parentName:"p",href:"https://assethub-rococo.subscan.io/extrinsic/4604922-2?event=4604922-8"},"here")," is the event for\nreference."),(0,i.kt)("h2",{id:"liquidity-provision"},"Liquidity Provision"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"For example, the snapshot below shows how to provide liquidity to the pool with ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens and\n",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens with the asset ID ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo Asset Hub. The intention is to provide liquidity of 1\n",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," token (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"1000000000000")," as it has 12 decimals) and 100 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128"),"\nvalue of ",(0,i.kt)("inlineCode",{parentName:"p"},"1000000000000")," as it has 10 decimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Provide Liquidity",src:n(86925).Z,width:"2860",height:"2992"})),(0,i.kt)("p",null,"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,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Liquidity Pool Example",src:n(12414).Z,width:"2595",height:"1296"})),(0,i.kt)("h2",{id:"swap-assets"},"Swap Assets"),(0,i.kt)("h3",{id:"swap-from-an-exact-amount-of-tokens"},"Swap from an exact amount of Tokens"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"For example, the snapshot below shows how to swap ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens to ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens with the asset ID\n",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo Asset Hub. The intention is to swap 0.1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"100000000000"),"\nas it has 12 decimals) to at least 9 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"90000000000")," as it has 10\ndecimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap Exact Amount",src:n(95527).Z,width:"2844",height:"3016"})),(0,i.kt)("p",null,"Below is the snapshot of the liquidity pool on the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")," after successful submission of the\nextrinsic above. It can be observed that the pool now has 1.1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens and around 9.06 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU"),"\ntokens are transferred out of it."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap Exact Amount Example",src:n(96084).Z,width:"2746",height:"1140"})),(0,i.kt)("h3",{id:"swap-to-an-exact-amount-of-tokens"},"Swap to an exact amount of Tokens"),(0,i.kt)("p",null,"On the other hand, the ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"For example, the snapshot below shows how to swap ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens with the asset ID ",(0,i.kt)("inlineCode",{parentName:"p"},"149")," on Rococo\nAsset Hub to ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," Tokens. The intention is to swap for obtaining 0.1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of\n",(0,i.kt)("inlineCode",{parentName:"p"},"100000000000")," as it has 12 decimals) for a maximum of 10 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of\n",(0,i.kt)("inlineCode",{parentName:"p"},"100000000000")," as it has 10 decimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap Exact Amount",src:n(70847).Z,width:"2860",height:"3006"})),(0,i.kt)("p",null,"Below is the snapshot of the liquidity pool on the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")," after successful submission of the\nextrinsic above."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Swap to Exact Amount Example",src:n(94618).Z,width:"2627",height:"1294"})),(0,i.kt)("h2",{id:"withdraw-provided-liquidity"},"Withdraw Provided Liquidity"),(0,i.kt)("p",null,"The ",(0,i.kt)("inlineCode",{parentName:"p"},"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."),(0,i.kt)("p",null,"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,i.kt)("inlineCode",{parentName:"p"},"ROC")," tokens (",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of",(0,i.kt)("inlineCode",{parentName:"p"},"400000000000")," as it has 12 decimals) and 40 ",(0,i.kt)("inlineCode",{parentName:"p"},"EDU")," tokens\n(",(0,i.kt)("inlineCode",{parentName:"p"},"u128")," value of ",(0,i.kt)("inlineCode",{parentName:"p"},"400000000000")," as it has 10 decimals)."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Remove Liquidity",src:n(19136).Z,width:"2832",height:"2870"})),(0,i.kt)("p",null,"Below is the snapshot of the liquidity pool on the\n",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MVPWorkshop/dot-acp-ui"},"DOT ACP UI.")," after successful submission of the\nextrinsic above."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Remove Liquidity Example",src:n(65383).Z,width:"2585",height:"1309"})))}h.isMDXComponent=!0},86925:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Add-Liquidity-e880d907645db19dc0ee4b8b9fdb9ad3.png"},34851:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Create-Pool-8945e1790f183ac14a4f1185763ea5a0.png"},12414:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Liquidity-Pool-Example-ae441ec1a55827fd488ecef3b8510681.png"},65383:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Remove-Liquidity-Example-bfdc3a0b327bd592c2abcf4cfb9b1755.png"},19136:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Remove-Liquidity-7fc348a12802b40bf643683bd14c5a3b.png"},95527:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-Exact-Token-a56d6a02ba2bf1a2620bc7f3955aa658.png"},96084:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-Exact-Tokens-Example-60790c60e4a0315e59834c0c5421b0f9.png"},94618:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-To-Exact-Example-9be51ed786d418f553b1eeb0ae866cb0.png"},70847:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Asset-Conversion-Swap-To-Exact-Tokens-ae5e1b66b2a80208b329a48af5ab8472.png"}}]); \ No newline at end of file diff --git a/assets/js/main.39d90a08.js b/assets/js/main.39d90a08.js deleted file mode 100644 index 9494a4c4e068..000000000000 --- a/assets/js/main.39d90a08.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.39d90a08.js.LICENSE.txt */ -(self.webpackChunk=self.webpackChunk||[]).push([[179],{20830:(e,n,t)=>{"use strict";t.d(n,{W:()=>a});var r=t(67294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},11205:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,t={},r={util:{encode:function e(n){return n instanceof a?new a(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=d.reach);E+=w.value.length,w=w.next){var _=w.value;if(n.length>e.length)return;if(!(_ instanceof a)){var S,C=1;if(v){if(!(S=o(k,E,e,b))||S.index>=e.length)break;var T=S.index,P=S.index+S[0].length,A=E;for(A+=w.value.length;T>=A;)A+=(w=w.next).value.length;if(E=A-=w.value.length,w.value instanceof a)continue;for(var O=w;O!==n.tail&&(Ad.reach&&(d.reach=R);var j=w.prev;if(N&&(j=c(n,j,N),E+=N.length),l(n,j,C),w=c(n,j,new a(f,g?r.tokenize(L,g):L,y,L)),I&&c(n,w,I),C>1){var M={cause:f+","+m,reach:R};i(e,n,t,w.prev,E,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function c(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function l(e,n,t){for(var r=n.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,n){var t={};t["language-"+n]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[n]},t.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:t}};r["language-"+n]={pattern:/[\s\S]+/,inside:a.languages[n]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,n){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:a.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",t={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:t,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:t}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},t.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var n=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,t=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return n.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return n.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:n,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return t}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var t=e.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(a),function(e){var n,t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:n={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=n,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:t}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var n=/[*&][^\s[\]{},]+/,t=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+t.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+t.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,n){n=(n||"").replace(/m/g,"")+"m";var t=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(t,n)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:t,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var n=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function t(e){return e=e.replace(//g,(function(){return n})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:t(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:t(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(n){["url","bold","italic","strike","code-snippet"].forEach((function(t){n!==t&&(e.languages.markdown[n].inside.content.inside[t]=e.languages.markdown[t])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(n){if(n&&"string"!=typeof n)for(var t=0,r=n.length;t",quot:'"'},c=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var n=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),t=0;t0)){var s=f(/^\{$/,/^\}$/);if(-1===s)continue;for(var c=t;c=0&&p(l,"variable-input")}}}}function u(e){return n[t+e]}function d(e,n){n=n||0;for(var t=0;t?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var n=e.languages.javascript["template-string"],t=n.pattern.source,r=n.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(n,r){if(e.languages[n])return{pattern:RegExp("((?:"+r+")\\s*)"+t),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:n}}}}function s(e,n){return"___"+n.toUpperCase()+"_"+e+"___"}function c(n,t,r){var a={code:n,grammar:t,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function l(n){var t={};t["interpolation-punctuation"]=a;var o=e.tokenize(n,t);if(3===o.length){var i=[1,1];i.push.apply(i,c(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,n)}function u(n,t,r){var a=e.tokenize(n,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=c(a.map((function(e){if("string"==typeof e)return e;for(var t,a=e.content;-1!==n.indexOf(t=s(i++,r)););return u[t]=a,t})).join(""),t,r),f=Object.keys(u);return i=0,function e(n){for(var t=0;t=f.length)return;var r=n[t];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,s=o.indexOf(a);if(-1!==s){++i;var c=o.substring(0,s),d=l(u[a]),p=o.substring(s+a.length),m=[];if(c&&m.push(c),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(n.splice.apply(n,[t,1].concat(m)),t+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,n)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),n].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(n){n.language in d&&function n(t){for(var r=0,a=t.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var n=e.languages.extend("typescript",{});delete n["class-name"],e.languages.typescript["class-name"].inside=n,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:n}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function n(e,n){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),n)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:n(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:n(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:n(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var t=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,n){return e=e.replace(//g,(function(){return t})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,n)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",n),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=n.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},s=function(n){for(var t=[],r=0;r0&&t[t.length-1].tagName===i(a.content[0].content[1])&&t.pop():"/>"===a.content[a.content.length-1].content||t.push({tagName:i(a.content[0].content[1]),openedBraces:0}):t.length>0&&"punctuation"===a.type&&"{"===a.content?t[t.length-1].openedBraces++:t.length>0&&t[t.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?t[t.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&t.length>0&&0===t[t.length-1].openedBraces){var c=i(a);r0&&("string"==typeof n[r-1]||"plain-text"===n[r-1].type)&&(c=i(n[r-1])+c,n.splice(r-1,1),r--),n[r]=new e.Token("plain-text",c,null,c)}a.content&&"string"!=typeof a.content&&s(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var n={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(n).forEach((function(t){var r=n[t],a=[];/^\w+$/.test(t)||a.push(/\w+/.exec(t)[0]),"diff"===t&&a.push("bold"),e.languages.diff[t]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(t)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:n})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function n(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(t,r,a,o){if(t.language===r){var i=t.tokenStack=[];t.code=t.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==t.code.indexOf(a=n(r,s));)++s;return i[s]=e,a})),t.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(t,r){if(t.language===r&&t.tokenStack){t.grammar=e.languages[r];var a=0,o=Object.keys(t.tokenStack);!function i(s){for(var c=0;c=o.length);c++){var l=s[c];if("string"==typeof l||l.content&&"string"==typeof l.content){var u=o[a],d=t.tokenStack[u],f="string"==typeof l?l:l.content,p=n(r,u),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,t.grammar),"language-"+r,d),b=f.substring(m+p.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof l?s.splice.apply(s,[c,1].concat(v)):l.content=v}}else l.content&&i(l.content)}return s}(t.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(n){e.languages["markup-templating"].buildPlaceholders(n,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(n){e.languages["markup-templating"].tokenizePlaceholders(n,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var n=/\$[-\w]+|#\{\$[-\w]+\}/,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:n,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:n,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var n={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},t={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:n,number:t,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:n,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:t,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var t=e.languages.tsx.tag;t.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},98934:(e,n,t)=>{"use strict";t.d(n,{_:()=>a,t:()=>o});var r=t(67294),a=r.createContext(!1);function o(e){var n=e.children,t=(0,r.useState)(!1),o=t[0],i=t[1];return(0,r.useEffect)((function(){i(!0)}),[]),r.createElement(a.Provider,{value:o},n)}},94926:(e,n,t)=>{"use strict";var r=t(67294),a=t(73935),o=t(73727),i=t(70405),s=t(10412);const c=[t(32497),t(3310),t(18320),t(39604),t(32104),t(70378)];var l=t(69204),u=t(16550),d=t(18790);function f(e){var n=e.children;return r.createElement(r.Fragment,null,n)}var p=t(87462),m=t(35742),h=t(52263),g=t(44996),b=t(86668),v=t(10833),y=t(94711),x=t(19727),k=t(43320),w=t(18780),E=t(90197);function _(){var e=(0,h.Z)().i18n,n=e.defaultLocale,t=e.localeConfigs,a=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((function(e){var n=e[0],t=e[1].htmlLang;return r.createElement("link",{key:n,rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:t})})),r.createElement("link",{rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:"x-default"}))}function S(e){var n=e.permalink,t=(0,h.Z)().siteConfig.url,a=function(){var e=(0,h.Z)().siteConfig,n=e.url,t=e.baseUrl,r=e.trailingSlash,a=(0,u.TH)().pathname;return n+(0,w.applyTrailingSlash)((0,g.Z)(a),{trailingSlash:r,baseUrl:t})}(),o=n?""+t+n:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){var e=(0,h.Z)().i18n.currentLocale,n=(0,b.L)(),t=n.metadata,a=n.image;return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:x.h})),a&&r.createElement(v.d,{image:a}),r.createElement(S,null),r.createElement(_,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map((function(e,n){return r.createElement("meta",(0,p.Z)({key:n},e))}))))}var T=new Map;function P(e){if(T.has(e.pathname))return Object.assign({},e,{pathname:T.get(e.pathname)});if((0,d.f)(l.Z,e.pathname).some((function(e){return!0===e.route.exact})))return T.set(e.pathname,e.pathname),e;var n=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,n),Object.assign({},e,{pathname:n})}var A=t(98934),O=t(49633),L=t(94578);function N(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),r=1;r\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/{"use strict";t.d(n,{_:()=>u,M:()=>d});var r=t(67294),a=t(8618);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-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/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/faq","path":"/docs/faq","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"},{"id":"general/kusama/kusama-bug-bounty","path":"/docs/kusama-bug-bounty"},{"id":"general/kusama/kusama-claims","path":"/docs/kusama-claims"},{"id":"general/kusama/kusama-coc","path":"/docs/kusama-coc"},{"id":"general/kusama/kusama-community","path":"/docs/kusama-community"},{"id":"general/kusama/kusama-getting-started","path":"/docs/kusama-getting-started"},{"id":"general/kusama/kusama-index","path":"/docs/kusama-index"},{"id":"general/kusama/kusama-parameters","path":"/docs/kusama-parameters"},{"id":"general/kusama/kusama-social-recovery","path":"/docs/kusama-social-recovery"},{"id":"general/kusama/kusama-timeline","path":"/docs/kusama-timeline"},{"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/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/research","path":"/docs/research","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-controller","path":"/docs/learn/learn-controller","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-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-auction","path":"/docs/learn-auction","sidebar":"docs"},{"id":"learn/learn-bridge-hub","path":"/docs/learn-bridge-hub","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-crowdloans","path":"/docs/learn-crowdloans","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-assets-ledger","path":"/docs/learn-guides-assets-ledger","sidebar":"docs"},{"id":"learn/learn-guides-bounties","path":"/docs/learn-guides-bounties","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-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-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-parathreads","path":"/docs/learn-parathreads","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-sassafras","path":"/docs/learn-sassafras","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-transaction-fees","path":"/docs/learn-transaction-fees","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"},{"id":"maintain/kusama/maintain-guides-society-kusama","path":"/docs/maintain-guides-society-kusama"},{"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-avoid-slashing","path":"/docs/maintain-guides-avoid-slashing","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":"/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-guides-bridges","path":"/docs/learn-guides-bridges","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=t(81465);const c=JSON.parse('{"docusaurusVersion":"2.4.3","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.3"},"undefined":{"type":"package","name":"remark-docusaurus-tabs","version":"0.2.0"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"2.4.3"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.4.3"}}}');var l={siteConfig:a.default,siteMetadata:c,globalData:o,i18n:i,codeTranslations:s},u=r.createContext(l);function d(e){var n=e.children;return r.createElement(u.Provider,{value:l},n)}},44763:(e,n,t)=>{"use strict";t.d(n,{Z:()=>p});var r=t(94578),a=t(67294),o=t(10412),i=t(35742),s=t(18780),c=t(34033);function l(e){var n=e.error,t=e.tryAgain;return a.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},a.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),a.createElement("button",{type:"button",onClick:t,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),a.createElement(u,{error:n}))}function u(e){var n=e.error,t=(0,s.getErrorCausalChain)(n).map((function(e){return e.message})).join("\n\nCause:\n");return a.createElement("p",{style:{whiteSpace:"pre-wrap"}},t)}function d(e){var n=e.error,t=e.tryAgain;return a.createElement(p,{fallback:function(){return a.createElement(l,{error:n,tryAgain:t})}},a.createElement(i.Z,null,a.createElement("title",null,"Page Error")),a.createElement(c.Z,null,a.createElement(l,{error:n,tryAgain:t})))}var f=function(e){return a.createElement(d,e)},p=function(e){function n(n){var t;return(t=e.call(this,n)||this).state={error:null},t}(0,r.Z)(n,e);var t=n.prototype;return t.componentDidCatch=function(e){o.Z.canUseDOM&&this.setState({error:e})},t.render=function(){var e=this,n=this.props.children,t=this.state.error;if(t){var r,a={error:t,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:f)(a)}return null!=n?n:null},n}(a.Component)},10412:(e,n,t)=>{"use strict";t.d(n,{Z:()=>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}},35742:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,n,t)=>{"use strict";t.d(n,{Z:()=>h});var r=t(87462),a=t(63366),o=t(67294),i=t(73727),s=t(18780),c=t(52263),l=t(13919),u=t(10412),d=o.createContext({collectLink:function(){}});var f=t(44996),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,n){var t,m,h=e.isNavLink,g=e.to,b=e.href,v=e.activeClassName,y=e.isActive,x=e["data-noBrokenLinkCheck"],k=e.autoAddBaseUrl,w=void 0===k||k,E=(0,a.Z)(e,p),_=(0,c.Z)().siteConfig,S=_.trailingSlash,C=_.baseUrl,T=(0,f.C)().withBaseUrl,P=(0,o.useContext)(d),A=(0,o.useRef)(null);(0,o.useImperativeHandle)(n,(function(){return A.current}));var O=g||b;var L,N=(0,l.Z)(O),I=null==O?void 0:O.replace("pathname://",""),R=void 0!==I?(L=I,w&&function(e){return e.startsWith("/")}(L)?T(L):L):void 0;R&&N&&(R=(0,s.applyTrailingSlash)(R,{trailingSlash:S,baseUrl:C}));var j=(0,o.useRef)(!1),M=h?i.OL:i.rU,D=u.Z.canUseIntersectionObserver,F=(0,o.useRef)(),B=function(){j.current||null==R||(window.docusaurus.preload(R),j.current=!0)};(0,o.useEffect)((function(){return!D&&N&&null!=R&&window.docusaurus.prefetch(R),function(){D&&F.current&&F.current.disconnect()}}),[F,R,D,N]);var z=null!=(t=null==(m=R)?void 0:m.startsWith("#"))&&t,U=!R||!N||z;return U||x||P.collectLink(R),U?o.createElement("a",(0,r.Z)({ref:A,href:R},O&&!N&&{target:"_blank",rel:"noopener noreferrer"},E)):o.createElement(M,(0,r.Z)({},E,{onMouseEnter:B,onTouchStart:B,innerRef:function(e){A.current=e,D&&e&&N&&(F.current=new window.IntersectionObserver((function(n){n.forEach((function(n){e===n.target&&(n.isIntersecting||n.intersectionRatio>0)&&(F.current.unobserve(e),F.current.disconnect(),null!=R&&window.docusaurus.prefetch(R))}))})),F.current.observe(e))},to:R},h&&{isActive:y,activeClassName:v}))}const h=o.forwardRef(m)},95999:(e,n,t)=>{"use strict";t.d(n,{Z:()=>c,I:()=>s});var r=t(67294);function a(e,n){var t=e.split(/(\{\w+\})/).map((function(e,t){if(t%2==1){var r=null==n?void 0:n[e.slice(1,-1)];if(void 0!==r)return r}return e}));return t.some((function(e){return(0,r.isValidElement)(e)}))?t.map((function(e,n){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:n}):e})).filter((function(e){return""!==e})):t.join("")}var o=t(81465);function i(e){var n,t,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!=(n=null!=(t=o[null!=r?r:a])?t:a)?n:r}function s(e,n){return a(i({message:e.message,id:e.id}),n)}function c(e){var n=e.children,t=e.id,o=e.values;if(n&&"string"!=typeof n)throw console.warn("Illegal children",n),new Error("The Docusaurus component only accept simple string values");var s=i({message:n,id:t});return r.createElement(r.Fragment,null,a(s,o))}},29935:(e,n,t)=>{"use strict";t.d(n,{m:()=>r});var r="default"},13919:(e,n,t)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}t.d(n,{Z:()=>a,b:()=>r})},44996:(e,n,t)=>{"use strict";t.d(n,{C:()=>i,Z:()=>s});var r=t(67294),a=t(52263),o=t(13919);function i(){var e=(0,a.Z)().siteConfig,n=e.baseUrl,t=e.url,i=(0,r.useCallback)((function(e,r){return function(e,n,t,r){var a=void 0===r?{}:r,i=a.forcePrependBaseUrl,s=void 0!==i&&i,c=a.absolute,l=void 0!==c&&c;if(!t||t.startsWith("#")||(0,o.b)(t))return t;if(s)return n+t.replace(/^\//,"");if(t===n.replace(/\/$/,""))return n;var u=t.startsWith(n)?t:n+t.replace(/^\//,"");return l?e+u:u}(t,n,e,r)}),[t,n]);return{withBaseUrl:i}}function s(e,n){return void 0===n&&(n={}),(0,i().withBaseUrl)(e,n)}},52263:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(49633);function o(){return(0,r.useContext)(a._)}},72389:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,n,t)=>{"use strict";t.d(n,{Z:()=>a});var r=function(e){return"object"==typeof e&&!!e&&Object.keys(e).length>0};function a(e){var n={};return function e(t,a){Object.entries(t).forEach((function(t){var o=t[0],i=t[1],s=a?a+"."+o:o;r(i)?e(i,s):n[s]=i}))}(e),n}},30226:(e,n,t)=>{"use strict";t.d(n,{_:()=>a,z:()=>o});var r=t(67294),a=r.createContext(null);function o(e){var n=e.children,t=e.value,o=r.useContext(a),i=(0,r.useMemo)((function(){return function(e){var n=e.parent,t=e.value;if(!n){if(!t)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in t))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return t}var r=Object.assign({},n.data,null==t?void 0:t.data);return{plugin:n.plugin,data:r}}({parent:o,value:t})}),[o,t]);return r.createElement(a.Provider,{value:i},n)}},80143:(e,n,t)=>{"use strict";t.d(n,{Iw:()=>b,gA:()=>p,WS:()=>m,_r:()=>d,Jo:()=>v,zh:()=>f,yW:()=>g,gB:()=>h});var r=t(16550),a=t(52263),o=t(29935);function i(e,n){void 0===n&&(n={});var t=(0,a.Z)().globalData[e];if(!t&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return t}var s=function(e){return e.versions.find((function(e){return e.isLast}))};function c(e,n){var t=s(e);return[].concat(e.versions.filter((function(e){return e!==t})),[t]).find((function(e){return!!(0,r.LX)(n,{path:e.path,exact:!1,strict:!1})}))}function l(e,n){var t,a,o=c(e,n),i=null==o?void 0:o.docs.find((function(e){return!!(0,r.LX)(n,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:o,activeDoc:i,alternateDocVersions:i?(t=i.id,a={},e.versions.forEach((function(e){e.docs.forEach((function(n){n.id===t&&(a[e.name]=n)}))})),a):{}}}var u={},d=function(){var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},f=function(e){return function(e,n,t){void 0===n&&(n=o.m),void 0===t&&(t={});var r=i(e),a=null==r?void 0:r[n];if(!a&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+n+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0})};function p(e){return void 0===e&&(e={}),function(e,n,t){void 0===t&&(t={});var a=Object.entries(e).sort((function(e,n){return n[1].path.localeCompare(e[1].path)})).find((function(e){var t=e[1];return!!(0,r.LX)(n,{path:t.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&t.failfast)throw new Error("Can't find active docs plugin for \""+n+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return o}(d(),(0,r.TH)().pathname,e)}function m(e){void 0===e&&(e={});var n=p(e),t=(0,r.TH)().pathname;if(n)return{activePlugin:n,activeVersion:c(n.pluginData,t)}}function h(e){return f(e).versions}function g(e){var n=f(e);return s(n)}function b(e){return l(f(e),(0,r.TH)().pathname)}function v(e){return function(e,n){var t=s(e);return{latestDocSuggestion:l(e,n).alternateDocVersions[t.name],latestVersionSuggestion:t}}(f(e),(0,r.TH)().pathname)}},18320:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>o});var r=t(74865),a=t.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var n=e.location,t=e.previousLocation;if(t&&n.pathname!==t.pathname){var r=window.setTimeout((function(){a().start()}),200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},3310:(e,n,t)=>{"use strict";t.r(n);var r,a,o=t(11205),i=t(8618);r=o.Z,a=i.default.themeConfig.prism.additionalLanguages,globalThis.Prism=r,a.forEach((function(e){t(54294)("./prism-"+e)})),delete globalThis.Prism},39471:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){var n=e.width,t=void 0===n?13.5:n,o=e.height,i=void 0===o?13.5:o;return r.createElement("svg",{width:t,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},34033:(e,n,t)=>{"use strict";t.d(n,{Z:()=>Qn});var r=t(67294),a=t(86010),o=t(44763),i=t(10833),s=t(87462),c=t(16550),l=t(95999),u=t(85936),d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){var e=(0,r.useRef)(null),n=(0,c.k6)().action,t=(0,r.useCallback)((function(e){e.preventDefault();var n,t=null!=(n=document.querySelector("main:first-of-type"))?n:document.getElementById(d);t&&f(t)}),[]);return(0,u.S)((function(t){var r=t.location;e.current&&!r.hash&&"PUSH"===n&&f(e.current)})),{containerRef:e,onClick:t}}var m=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){var n,t=null!=(n=e.children)?n:m,a=p(),o=a.containerRef,i=a.onClick;return r.createElement("div",{ref:o,role:"region","aria-label":m},r.createElement("a",(0,s.Z)({},e,{href:"#"+d,onClick:i}),t))}var g=t(35281),b=t(19727);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:v.skipToContent})}var x=t(86668),k=t(59689),w=t(63366),E=["width","height","color","strokeWidth","className"];function _(e){var n=e.width,t=void 0===n?21:n,a=e.height,o=void 0===a?21:a,i=e.color,c=void 0===i?"currentColor":i,l=e.strokeWidth,u=void 0===l?1.2:l,d=(e.className,(0,w.Z)(e,E));return r.createElement("svg",(0,s.Z)({viewBox:"0 0 15 15",width:t,height:o},d),r.createElement("g",{stroke:c,strokeWidth:u},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function C(e){return r.createElement("button",(0,s.Z)({type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(_,{width:14,height:14,strokeWidth:3.1}))}const T={content:"content_knG7"};function P(e){var n=(0,x.L)().announcementBar.content;return r.createElement("div",(0,s.Z)({},e,{className:(0,a.Z)(T.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function O(){var e=(0,x.L)().announcementBar,n=(0,k.nT)(),t=n.isActive,a=n.close;if(!t)return null;var o=e.backgroundColor,i=e.textColor,s=e.isCloseable;return r.createElement("div",{className:A.announcementBar,style:{backgroundColor:o,color:i},role:"banner"},s&&r.createElement("div",{className:A.announcementBarPlaceholder}),r.createElement(P,{className:A.announcementBarContent}),s&&r.createElement(C,{onClick:a,className:A.announcementBarClose}))}var L=t(93163),N=t(12466);var I=t(69688),R=t(13102),j=r.createContext(null);function M(e){var n,t,a,o,i,s,c,l=e.children,u=(n=(0,L.e)(),t=(0,R.HY)(),a=(0,r.useState)(!1),o=a[0],i=a[1],s=null!==t.component,c=(0,I.D9)(s),(0,r.useEffect)((function(){s&&!c&&i(!0)}),[s,c]),(0,r.useEffect)((function(){s?n.shown||i(!0):i(!1)}),[n.shown,s]),(0,r.useMemo)((function(){return[o,i]}),[o]));return r.createElement(j.Provider,{value:u},l)}function D(e){if(e.component){var n=e.component;return r.createElement(n,e.props)}}function F(){var e=(0,r.useContext)(j);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");var n=e[0],t=e[1],a=(0,r.useCallback)((function(){return t(!1)}),[t]),o=(0,R.HY)();return(0,r.useMemo)((function(){return{shown:n,hide:a,content:D(o)}}),[a,o,n])}function B(e){var n=e.header,t=e.primaryMenu,o=e.secondaryMenu,i=F().shown;return r.createElement("div",{className:"navbar-sidebar"},n,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},t),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var z=t(92949),U=t(72389);function $(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function Z(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const H={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function G(e){var n=e.className,t=e.buttonClassName,o=e.value,i=e.onChange,s=(0,U.Z)(),c=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(H.toggle,n)},r.createElement("button",{className:(0,a.Z)("clean-btn",H.toggleButton,!s&&H.toggleButtonDisabled,t),type:"button",onClick:function(){return i("dark"===o?"light":"dark")},disabled:!s,title:c,"aria-label":c,"aria-live":"polite"},r.createElement($,{className:(0,a.Z)(H.toggleIcon,H.lightToggleIcon)}),r.createElement(Z,{className:(0,a.Z)(H.toggleIcon,H.darkToggleIcon)})))}const q=r.memo(G),V={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function W(e){var n=e.className,t=(0,x.L)().navbar.style,a=(0,x.L)().colorMode.disableSwitch,o=(0,z.I)(),i=o.colorMode,s=o.setColorMode;return a?null:r.createElement(q,{className:n,buttonClassName:"dark"===t?V.darkNavbarColorModeToggle:void 0,value:i,onChange:s})}var Y=t(87846);function K(){return r.createElement(Y.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){var e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:function(){return e.toggle()}},r.createElement(_,{color:"var(--ifm-color-emphasis-600)"}))}function Q(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(K,null),r.createElement(W,{className:"margin-right--md"}),r.createElement(X,null))}var J=t(39960),ee=t(44996),ne=t(13919),te=t(98022),re=t(39471),ae=["activeBasePath","activeBaseRegex","to","href","label","html","isDropdownLink","prependBaseUrlToHref"];function oe(e){var n=e.activeBasePath,t=e.activeBaseRegex,a=e.to,o=e.href,i=e.label,c=e.html,l=e.isDropdownLink,u=e.prependBaseUrlToHref,d=(0,w.Z)(e,ae),f=(0,ee.Z)(a),p=(0,ee.Z)(n),m=(0,ee.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,ne.Z)(o),g=c?{dangerouslySetInnerHTML:{__html:c}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(re.Z,l&&{width:12,height:12}))};return o?r.createElement(J.Z,(0,s.Z)({href:u?m:o},d,g)):r.createElement(J.Z,(0,s.Z)({to:f,isNavLink:!0},(n||t)&&{isActive:function(e,n){return t?(0,te.F)(t,n.pathname):n.pathname.startsWith(p)}},d,g))}var ie=["className","isDropdownItem"],se=["className","isDropdownItem"],ce=["mobile","position"];function le(e){var n=e.className,t=e.isDropdownItem,o=void 0!==t&&t,i=(0,w.Z)(e,ie),c=r.createElement(oe,(0,s.Z)({className:(0,a.Z)(o?"dropdown__link":"navbar__item navbar__link",n),isDropdownLink:o},i));return o?r.createElement("li",null,c):c}function ue(e){var n=e.className,t=(e.isDropdownItem,(0,w.Z)(e,se));return r.createElement("li",{className:"menu__list-item"},r.createElement(oe,(0,s.Z)({className:(0,a.Z)("menu__link",n)},t)))}function de(e){var n,t=e.mobile,a=void 0!==t&&t,o=(e.position,(0,w.Z)(e,ce)),i=a?ue:le;return r.createElement(i,(0,s.Z)({},o,{activeClassName:null!=(n=o.activeClassName)?n:a?"menu__link--active":"navbar__link--active"}))}var fe=t(86043),pe=t(48596),me=t(52263);var he=["items","position","className","onClick"],ge=["items","className","position","onClick"],be=["mobile"];function ve(e,n){return e.some((function(e){return function(e,n){return!!(0,pe.Mg)(e.to,n)||!!(0,te.F)(e.activeBaseRegex,n)||!(!e.activeBasePath||!n.startsWith(e.activeBasePath))}(e,n)}))}function ye(e){var n,t=e.items,o=e.position,i=e.className,c=(e.onClick,(0,w.Z)(e,he)),l=(0,r.useRef)(null),u=(0,r.useState)(!1),d=u[0],f=u[1];return(0,r.useEffect)((function(){var e=function(e){l.current&&!l.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),r.createElement("div",{ref:l,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d})},r.createElement(oe,(0,s.Z)({"aria-haspopup":"true","aria-expanded":d,role:"button",href:c.to?void 0:"#",className:(0,a.Z)("navbar__link",i)},c,{onClick:c.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),f(!d))}}),null!=(n=c.children)?n:c.label),r.createElement("ul",{className:"dropdown__menu"},t.map((function(e,n){return r.createElement(sn,(0,s.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:n}))}))))}function xe(e){var n,t,o=e.items,i=e.className,l=(e.position,e.onClick),u=(0,w.Z)(e,ge),d=(t=(0,me.Z)().siteConfig.baseUrl,(0,c.TH)().pathname.replace(t,"/")),f=ve(o,d),p=(0,fe.u)({initialState:function(){return!f}}),m=p.collapsed,h=p.toggleCollapsed,g=p.setCollapsed;return(0,r.useEffect)((function(){f&&g(!f)}),[d,f,g]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":m})},r.createElement(oe,(0,s.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",i)},u,{onClick:function(e){e.preventDefault(),h()}}),null!=(n=u.children)?n:u.label),r.createElement(fe.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:m},o.map((function(e,n){return r.createElement(sn,(0,s.Z)({mobile:!0,isDropdownItem:!0,onClick:l,activeClassName:"menu__link--active"},e,{key:n}))}))))}function ke(e){var n=e.mobile,t=void 0!==n&&n,a=(0,w.Z)(e,be),o=t?xe:ye;return r.createElement(o,a)}var we=t(94711),Ee=["width","height"];function _e(e){var n=e.width,t=void 0===n?20:n,a=e.height,o=void 0===a?20:a,i=(0,w.Z)(e,Ee);return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:t,height:o,"aria-hidden":!0},i),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const Se="iconLanguage_nlXk";var Ce=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function Te(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var Pe=t(20830),Ae=["translations"];function Oe(){return Oe=Object.assign||function(e){for(var n=1;ne.length)&&(n=e.length);for(var t=0,r=new Array(n);t=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Re="Ctrl";var je=r.forwardRef((function(e,n){var t=e.translations,a=void 0===t?{}:t,o=Ie(e,Ae),i=a.buttonText,s=void 0===i?"Search":i,c=a.buttonAriaLabel,l=void 0===c?"Search":c,u=Le((0,r.useState)(null),2),d=u[0],f=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(Re))}),[]),r.createElement("button",Oe({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},o,{ref:n}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(Pe.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Re?r.createElement(Te,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Me=t(35742),De=t(66177),Fe=t(239),Be=t(43320);var ze=t(73935);const Ue={button:{buttonText:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};var $e=["contextualSearch","externalUrlRegex"],Ze=null;function He(e){var n=e.hit,t=e.children;return r.createElement(J.Z,{to:n.url},t)}function Ge(e){var n=e.state,t=e.onClose,a=(0,De.M)();return r.createElement(J.Z,{to:a(n.query),onClick:t},r.createElement(l.Z,{id:"theme.SearchBar.seeAll",values:{count:n.context.nbHits}},"See all {count} results"))}function qe(e){var n,a,o,i,l,u=e.contextualSearch,d=e.externalUrlRegex,f=(0,w.Z)(e,$e),p=(0,me.Z)().siteMetadata,m=(0,Fe.l)(),h=["language:"+(o=(0,Be._q)()).locale,o.tags.map((function(e){return"docusaurus_tag:"+e}))],g=null!=(n=null==(a=f.searchParameters)?void 0:a.facetFilters)?n:[],b=u?(i=g,[].concat((l=function(e){return"string"==typeof e?[e]:e})(h),l(i))):g,v=Object.assign({},f.searchParameters,{facetFilters:b}),y=(0,c.k6)(),x=(0,r.useRef)(null),k=(0,r.useRef)(null),E=(0,r.useState)(!1),_=E[0],S=E[1],C=(0,r.useState)(void 0),T=C[0],P=C[1],A=(0,r.useCallback)((function(){return Ze?Promise.resolve():Promise.all([t.e(1426).then(t.bind(t,61426)),Promise.all([t.e(532),t.e(6945)]).then(t.bind(t,46945)),Promise.all([t.e(532),t.e(8894)]).then(t.bind(t,18894))]).then((function(e){var n=e[0].DocSearchModal;Ze=n}))}),[]),O=(0,r.useCallback)((function(){A().then((function(){x.current=document.createElement("div"),document.body.insertBefore(x.current,document.body.firstChild),S(!0)}))}),[A,S]),L=(0,r.useCallback)((function(){var e;S(!1),null==(e=x.current)||e.remove()}),[S]),N=(0,r.useCallback)((function(e){A().then((function(){S(!0),P(e.key)}))}),[A,S,P]),I=(0,r.useRef)({navigate:function(e){var n=e.itemUrl;(0,te.F)(d,n)?window.location.href=n:y.push(n)}}).current,R=(0,r.useRef)((function(e){return f.transformItems?f.transformItems(e):e.map((function(e){return Object.assign({},e,{url:m(e.url)})}))})).current,j=(0,r.useMemo)((function(){return function(e){return r.createElement(Ge,(0,s.Z)({},e,{onClose:L}))}}),[L]),M=(0,r.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",p.docusaurusVersion),e}),[p.docusaurusVersion]);return function(e){var n=e.isOpen,t=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&n||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var n=e.target,t=n.tagName;return n.isContentEditable||"INPUT"===t||"SELECT"===t||"TEXTAREA"===t}(e)&&"/"===e.key&&!n)&&(e.preventDefault(),n?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||t()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[n,t,a,o,i])}({isOpen:_,onOpen:O,onClose:L,onInput:N,searchButtonRef:k}),r.createElement(r.Fragment,null,r.createElement(Me.Z,null,r.createElement("link",{rel:"preconnect",href:"https://"+f.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),r.createElement(je,{onTouchStart:A,onFocus:A,onMouseOver:A,onClick:O,ref:k,translations:Ue.button}),_&&Ze&&x.current&&(0,ze.createPortal)(r.createElement(Ze,(0,s.Z)({onClose:L,initialScrollY:window.scrollY,initialQuery:T,navigator:I,transformItems:R,hitComponent:He,transformSearchClient:M},f.searchPagePath&&{resultsFooterComponent:j},f,{searchParameters:v,placeholder:Ue.placeholder,translations:Ue.modal})),x.current))}function Ve(){var e=(0,me.Z)().siteConfig;return r.createElement(qe,e.themeConfig.algolia)}const We={searchBox:"searchBox_ZlJk"};function Ye(e){var n=e.children,t=e.className;return r.createElement("div",{className:(0,a.Z)(t,We.searchBox)},n)}var Ke=t(80143),Xe=t(53438),Qe=["docId","label","docsPluginId"];var Je=["sidebarId","label","docsPluginId"];var en=["label","to","docsPluginId"];var nn=t(60373),tn=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],rn=function(e){return e.docs.find((function(n){return n.id===e.mainDocId}))};const an={default:de,localeDropdown:function(e){var n=e.mobile,t=e.dropdownItemsBefore,a=e.dropdownItemsAfter,o=(0,w.Z)(e,Ce),i=(0,me.Z)().i18n,u=i.currentLocale,d=i.locales,f=i.localeConfigs,p=(0,we.l)(),m=(0,c.TH)(),h=m.search,g=m.hash,b=d.map((function(e){var t=""+("pathname://"+p.createUrl({locale:e,fullyQualified:!1}))+h+g;return{label:f[e].label,lang:f[e].htmlLang,to:t,target:"_self",autoAddBaseUrl:!1,className:e===u?n?"menu__link--active":"dropdown__link--active":""}})),v=[].concat(t,b,a),y=n?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):f[u].label;return r.createElement(ke,(0,s.Z)({},o,{mobile:n,label:r.createElement(r.Fragment,null,r.createElement(_e,{className:Se}),y),items:v}))},search:function(e){var n=e.mobile,t=e.className;return n?null:r.createElement(Ye,{className:t},r.createElement(Ve,null))},dropdown:ke,html:function(e){var n=e.value,t=e.className,o=e.mobile,i=void 0!==o&&o,s=e.isDropdownItem,c=void 0!==s&&s,l=c?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!i&&!c,"menu__list-item":i},t),dangerouslySetInnerHTML:{__html:n}})},doc:function(e){var n=e.docId,t=e.label,a=e.docsPluginId,o=(0,w.Z)(e,Qe),i=(0,Ke.Iw)(a).activeDoc,c=(0,Xe.vY)(n,a);return null===c?null:r.createElement(de,(0,s.Z)({exact:!0},o,{isActive:function(){return(null==i?void 0:i.path)===c.path||!(null==i||!i.sidebar)&&i.sidebar===c.sidebar},label:null!=t?t:c.id,to:c.path}))},docSidebar:function(e){var n=e.sidebarId,t=e.label,a=e.docsPluginId,o=(0,w.Z)(e,Je),i=(0,Ke.Iw)(a).activeDoc,c=(0,Xe.oz)(n,a).link;if(!c)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+n+"\" doesn't have anything to be linked to.");return r.createElement(de,(0,s.Z)({exact:!0},o,{isActive:function(){return(null==i?void 0:i.sidebar)===n},label:null!=t?t:c.label,to:c.path}))},docsVersion:function(e){var n=e.label,t=e.to,a=e.docsPluginId,o=(0,w.Z)(e,en),i=(0,Xe.lO)(a)[0],c=null!=n?n:i.label,l=null!=t?t:function(e){return e.docs.find((function(n){return n.id===e.mainDocId}))}(i).path;return r.createElement(de,(0,s.Z)({},o,{label:c,to:l}))},docsVersionDropdown:function(e){var n=e.mobile,t=e.docsPluginId,a=e.dropdownActiveClassDisabled,o=e.dropdownItemsBefore,i=e.dropdownItemsAfter,u=(0,w.Z)(e,tn),d=(0,c.TH)(),f=d.search,p=d.hash,m=(0,Ke.Iw)(t),h=(0,Ke.gB)(t),g=(0,nn.J)(t).savePreferredVersionName,b=h.map((function(e){var n,t=null!=(n=m.alternateDocVersions[e.name])?n:rn(e);return{label:e.label,to:""+t.path+f+p,isActive:function(){return e===m.activeVersion},onClick:function(){return g(e.name)}}})),v=[].concat(o,b,i),y=(0,Xe.lO)(t)[0],x=n&&v.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):y.label,k=n&&v.length>1?void 0:rn(y).path;return v.length<=1?r.createElement(de,(0,s.Z)({},u,{mobile:n,label:x,to:k,isActive:a?function(){return!1}:void 0})):r.createElement(ke,(0,s.Z)({},u,{mobile:n,label:x,to:k,items:v,isActive:a?function(){return!1}:void 0}))}};var on=["type"];function sn(e){var n=e.type,t=(0,w.Z)(e,on),a=function(e,n){return e&&"default"!==e?e:"items"in n?"dropdown":"default"}(n,t),o=an[a];if(!o)throw new Error('No NavbarItem component found for type "'+n+'".');return r.createElement(o,t)}function cn(){var e=(0,L.e)(),n=(0,x.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},n.map((function(n,t){return r.createElement(sn,(0,s.Z)({mobile:!0},n,{onClick:function(){return e.toggle()},key:t}))})))}function ln(e){return r.createElement("button",(0,s.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function un(){var e=0===(0,x.L)().navbar.items.length,n=F();return r.createElement(r.Fragment,null,!e&&r.createElement(ln,{onClick:function(){return n.hide()}}),n.content)}function dn(){var e,n=(0,L.e)();return void 0===(e=n.shown)&&(e=!0),(0,r.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e]),n.shouldRender?r.createElement(B,{header:r.createElement(Q,null),primaryMenu:r.createElement(cn,null),secondaryMenu:r.createElement(un,null)}):null}const fn={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function pn(e){return r.createElement("div",(0,s.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function mn(e){var n=e.children,t=(0,x.L)().navbar,o=t.hideOnScroll,i=t.style,s=(0,L.e)(),c=function(e){var n=(0,r.useState)(e),t=n[0],a=n[1],o=(0,r.useRef)(!1),i=(0,r.useRef)(0),s=(0,r.useCallback)((function(e){null!==e&&(i.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)((function(n,t){var r=n.scrollY;if(e)if(r=s?a(!1):r+l=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}const Hn=function(e){var n=e.title,t=e.titleId,a=Zn(e,Un);return r.createElement("svg",$n({id:"Content",xmlns:"http://www.w3.org/2000/svg",x:0,y:0,viewBox:"0 0 6593.8 1410.3",style:{enableBackground:"new 0 0 6593.8 1410.3"},xmlSpace:"preserve","aria-labelledby":t},a),n?r.createElement("title",{id:t},n):null,On||(On=r.createElement("style",null,".st0{fill:#fff}")),Ln||(Ln=r.createElement("path",{className:"st0",d:"M2047.8 210.4c-77.2 0-151.6 9.7-181.9 17.9-44.1 12.4-55.1 31.7-63.4 71.7l-175 807.5c-2.8 16.5-5.5 30.3-5.5 44.1 0 40 26.2 66.1 68.9 66.1 46.9 0 66.2-30.3 75.8-77.2l49.6-230.1c34.4 4.1 79.9 8.3 144.7 8.3 285.3 0 463-154.3 463-387.2 0-204-142-321.1-376.2-321.1zm-93.7 576c-44.1 0-78.6-1.4-110.2-5.5l92.3-428.6c28.9-4.1 71.7-9.7 115.8-9.7 151.6 0 228.8 71.7 228.8 190.2-.1 151.6-110.4 253.6-326.7 253.6zM6537.3 951.7c-23.4 0-38.6 13.8-67.5 45.5-51 52.4-82.7 81.3-122.6 81.3-35.8 0-55.1-28.9-55.1-75.8 0-26.2 5.5-57.9 12.4-92.3l51-239.8h153c48.2 0 77.2-27.6 77.2-77.2 0-27.6-17.9-48.2-59.2-48.2H6383l24.8-111.6c2.8-16.5 5.5-31.7 5.5-45.5 0-38.6-26.2-66.2-68.9-66.2-45.5 0-66.1 30.3-75.8 77.2l-31.7 146.1h-64.8c-49.6 0-78.5 27.6-78.5 77.2 0 27.6 19.3 48.2 60.6 48.2h56.5l-51 237c-5.5 26.2-12.4 68.9-12.4 113 0 111.6 57.9 192.9 181.9 192.9 71.7 0 135-35.8 183.3-78.6 46.9-41.3 81.3-92.3 81.3-125.4 0-31.6-24.8-57.8-56.5-57.8zM3367.9 291.7c0-40-27.6-66.2-70.3-66.2-45.5 0-66.1 30.3-75.8 77.2l-172.2 800.6c-4.1 16.5-6.9 30.3-6.9 44.1 0 40 27.6 66.1 68.9 66.1 46.9 0 67.5-30.3 77.2-77.2L3361 335.8c2.8-16.6 6.9-30.3 6.9-44.1zM5827.6 531.4c-220.5 0-370.7 219.1-370.7 427.2 0 3.9.1 7.8.2 11.6-34.6 52.5-78.8 106.9-109.1 106.9-22 0-30.3-20.7-30.3-52.4 0-38.6 11-103.4 23.4-159.9l114.4-529.2c2.8-16.5 5.5-30.3 5.5-44.1 0-40-26.2-66.2-68.9-66.2-46.9 0-66.1 30.3-75.8 77.2l-62 286.6c-33.1-34.4-81.4-57.9-154.4-57.9-146.4 0-293.7 112.7-351.1 285.6-63.2 163.4-119.7 260.1-164.3 260.1-16.5 0-26.2-13.8-26.2-37.2 0-68.9 38.6-237 55.1-318.3 5.5-30.3 8.3-42.7 8.3-60.6 0-60.6-100.6-132.3-231.5-132.3-151.4 0-288.5 95.9-357.2 238.3-102.1 180.4-195.8 310.1-242.2 310.1-20.7 0-27.6-26.2-33.1-51L3723.4 836l210.8-172.2c19.3-16.5 44.1-40 44.1-70.3 0-37.2-24.8-62-62-62-27.6 0-51 16.5-74.4 35.8L3525 829.1l106.1-493.3c2.8-16.5 6.9-30.3 6.9-44.1 0-40-27.6-66.2-70.3-66.2-45.5 0-66.1 30.3-75.8 77.2l-172.2 800.6c-4.1 16.5-6.9 30.3-6.9 44.1 0 40 27.6 66.1 68.9 66.1 46.9 0 67.5-30.3 77.2-77.2L3481 1033l129.5-104.7 31.7 159.8c12.4 63.4 45.5 125.4 130.9 125.4 85 0 151.9-77.6 218.9-182.5 20.3 109.9 98.5 182.5 207 182.5 108.9 0 183.3-64.8 231.5-151.6v2.8c0 89.6 45.5 148.8 125.4 148.8 72.3 0 132.3-43.6 185.9-136.2 30.4 80.7 98.4 136.2 193 136.2 111.6 0 191.5-67.5 242.5-161.2v8.3c0 99.2 49.6 153 130.9 153 71.8 0 132.8-41.7 184.9-109.5 39.6 67.8 110.6 109.5 206.5 109.5 220.5 0 370.7-219.1 370.7-428.6-.1-147.5-89.7-253.6-242.7-253.6zM4453.8 811.2c-40 172.2-125.4 270.1-221.9 270.1-64.8 0-100.6-49.6-100.6-124 0-146.1 106.1-303.2 248-303.2 42.7 0 75.8 12.4 104.7 30.3l-30.2 126.8zm767.5-73c-44.1 202.6-144.7 343.1-254.9 343.1-60.6 0-96.5-46.9-96.5-124 0-147.4 102-300.4 238.4-300.4 52.4 0 92.3 17.9 121.3 41.3l-8.3 40zm494.7 343.1c-79.9 0-113-57.9-113-130.9 0-133.7 92.3-286.6 208.1-286.6 79.9 0 113 57.9 113 130.9 0 135-92.3 286.6-208.1 286.6zM2767.1 531.4c-220.5 0-370.7 219.1-370.7 427.2 0 148.8 89.6 254.9 242.5 254.9 220.5 0 370.7-219.1 370.7-428.6 0-147.4-89.6-253.5-242.5-253.5zm-111.6 549.9c-79.9 0-113-57.9-113-130.9 0-133.7 92.3-286.6 208.1-286.6 79.9 0 113 57.9 113 130.9-.1 135-92.4 286.6-208.1 286.6z"})),Nn||(Nn=r.createElement("ellipse",{className:"st0",cx:663,cy:147.9,rx:254.3,ry:147.9})),In||(In=r.createElement("ellipse",{className:"st0",cx:663,cy:1262.3,rx:254.3,ry:147.9})),Rn||(Rn=r.createElement("ellipse",{transform:"rotate(-60 180.499 426.56)",className:"st0",cx:180.5,cy:426.5,rx:254.3,ry:148})),jn||(jn=r.createElement("ellipse",{transform:"rotate(-60 1145.575 983.768)",className:"st0",cx:1145.6,cy:983.7,rx:254.3,ry:147.9})),Mn||(Mn=r.createElement("ellipse",{transform:"rotate(-30 180.45 983.72)",className:"st0",cx:180.5,cy:983.7,rx:148,ry:254.3})),Dn||(Dn=r.createElement("ellipse",{transform:"rotate(-30 1145.522 426.601)",className:"st0",cx:1145.6,cy:426.6,rx:147.9,ry:254.3})))};function Gn(){var e=function(e){var n=e.href,t=e.className;return r.createElement("li",{className:"text-white mr-2 mr-lg-0 mr-xl-2"},r.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer"},r.createElement("i",{className:t})))},n=function(){return r.createElement("ul",{className:"list-social-links mt-5 mt-lg-0 justify-content-lg-end"},r.createElement(e,{href:"https://twitter.com/Polkadot",className:"socicon-twitter"}),r.createElement(e,{href:"https://www.reddit.com/r/polkadot",className:"socicon-reddit"}),r.createElement(e,{href:"https://github.com/paritytech/polkadot-sdk",className:"socicon-github"}),r.createElement(e,{href:"https://www.youtube.com/channel/UCB7PbjuZLEba_znc7mEGNgw",className:"socicon-youtube"}),r.createElement(e,{href:"https://dot.li/discord",className:"socicon-discord"}))};return r.createElement(zn.Z,{className:"px-lg-0"},r.createElement(n,null))}function qn(e){var n=e.href,t=e.content;return r.createElement("li",null,r.createElement("a",{href:n,className:"text-white text-small",target:"_blank",rel:"noopener noreferrer"},t))}function Vn(){var e=(0,me.Z)().siteConfig.themeConfig.footer;return r.createElement("footer",{className:"nav-footer spacer-y-4",id:"footer"},r.createElement(Fn.Z,{className:"container-custom"},r.createElement(Bn.Z,{className:"footer-legal align-items-end"},e&&r.createElement(zn.Z,{lg:2,className:"mb-2 mb-lg-0"},r.createElement("a",{className:"navbar-brand",href:"https://polkadot.network/",target:"_blank",rel:"noopener noreferrer"},r.createElement(Hn,{height:31,alt:"Polkadot Network"}))),r.createElement(zn.Z,{lg:6},r.createElement("ul",{className:"list-unstyled d-flex flex-wrap list-pipe-separator mt-2"},r.createElement(qn,{content:e.copyright,href:"https://web3.foundation"}),r.createElement(qn,{content:(0,l.I)({message:"Legal Disclosures",id:"footer.footerLegal.legal-diclosures",description:"Legal Disclosures Button Label in Footer Legal"}),href:"https://polkadot.network/legal-disclosures"}),r.createElement(qn,{content:(0,l.I)({message:"Disclaimer",id:"footer.footerLegal.disclaimer",description:"Disclaimer Button Label in Footer Legal"}),href:"https://polkadot.network/disclaimer"}),r.createElement(qn,{content:(0,l.I)({message:"Privacy",id:"footer.footerLegal.privacy",description:"Privacy Button Label in Footer Legal"}),href:"https://polkadot.network/privacy"}))),r.createElement(Gn,null))))}var Wn=(0,I.Qc)([z.S,k.pl,N.OC,nn.L5,i.VC,function(e){var n=e.children;return r.createElement(R.n2,null,r.createElement(L.M,null,r.createElement(M,null,n)))}]);function Yn(e){var n=e.children;return r.createElement(Wn,null,n)}function Kn(e){var n=e.error,t=e.tryAgain;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(vn,{onClick:t,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(yn,{error:n})))))}const Xn={mainWrapper:"mainWrapper_z2l0"};function Qn(e){var n=e.children,t=e.noFooter,s=e.wrapperClassName,c=e.title,l=e.description;return(0,b.t)(),r.createElement(Yn,null,r.createElement(i.d,{title:c,description:l}),r.createElement(y,null),r.createElement(O,null),r.createElement(An,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,Xn.mainWrapper,s)},r.createElement(o.Z,{fallback:function(e){return r.createElement(Kn,e)}},n)),!t&&r.createElement(Vn,null))}},87846:(e,n,t)=>{"use strict";t.d(n,{Z:()=>v});var r=t(87462),a=t(63366),o=t(67294),i=t(39960),s=t(44996),c=t(52263),l=t(86668),u=t(86010),d=t(72389),f=t(92949);const p={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};var m=["sources","className","alt"];function h(e){var n=(0,d.Z)(),t=(0,f.I)().colorMode,i=e.sources,s=e.className,c=e.alt,l=(0,a.Z)(e,m),h=n?"dark"===t?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,h.map((function(e){return o.createElement("img",(0,r.Z)({key:e,src:i[e],alt:c,className:(0,u.Z)(p.themedImage,p["themedImage--"+e],s)},l))})))}var g=["imageClassName","titleClassName"];function b(e){var n=e.logo,t=e.alt,r=e.imageClassName,a={light:(0,s.Z)(n.src),dark:(0,s.Z)(n.srcDark||n.src)},i=o.createElement(h,{className:n.className,sources:a,height:n.height,width:n.width,alt:t,style:n.style});return r?o.createElement("div",{className:r},i):i}function v(e){var n,t=(0,c.Z)().siteConfig.title,u=(0,l.L)().navbar,d=u.title,f=u.logo,p=e.imageClassName,m=e.titleClassName,h=(0,a.Z)(e,g),v=(0,s.Z)((null==f?void 0:f.href)||"/"),y=d?"":t,x=null!=(n=null==f?void 0:f.alt)?n:y;return o.createElement(i.Z,(0,r.Z)({to:v},h,(null==f?void 0:f.target)&&{target:f.target}),f&&o.createElement(b,{logo:f,alt:x,imageClassName:p}),null!=d&&o.createElement("b",{className:m},d))}},90197:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(35742);function o(e){var n=e.locale,t=e.version,o=e.tag,i=n;return r.createElement(a.Z,null,n&&r.createElement("meta",{name:"docusaurus_locale",content:n}),t&&r.createElement("meta",{name:"docusaurus_version",content:t}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),t&&r.createElement("meta",{name:"docsearch:version",content:t}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},86043:(e,n,t)=>{"use strict";t.d(n,{u:()=>d,z:()=>y});var r=t(87462),a=t(63366),o=t(67294),i=t(10412),s=t(91442),c=["collapsed"],l=["lazy"],u="ease-in-out";function d(e){var n=e.initialState,t=(0,o.useState)(null!=n&&n),r=t[0],a=t[1],i=(0,o.useCallback)((function(){a((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:a,toggleCollapsed:i}}var f={display:"none",overflow:"hidden",height:"0px"},p={display:"block",overflow:"visible",height:"auto"};function m(e,n){var t=n?f:p;e.style.display=t.display,e.style.overflow=t.overflow,e.style.height=t.height}function h(e){var n=e.collapsibleRef,t=e.collapsed,r=e.animation,a=(0,o.useRef)(!1);(0,o.useEffect)((function(){var e,o=n.current;function i(){var e,n,t=o.scrollHeight,a=null!=(e=null==r?void 0:r.duration)?e:function(e){if((0,s.n)())return 1;var n=e/36;return Math.round(10*(4+15*Math.pow(n,.25)+n/5))}(t);return{transition:"height "+a+"ms "+(null!=(n=null==r?void 0:r.easing)?n:u),height:t+"px"}}function c(){var e=i();o.style.transition=e.transition,o.style.height=e.height}if(!a.current)return m(o,t),void(a.current=!0);return o.style.willChange="height",e=requestAnimationFrame((function(){t?(c(),requestAnimationFrame((function(){o.style.height=f.height,o.style.overflow=f.overflow}))):(o.style.display="block",requestAnimationFrame((function(){c()})))})),function(){return cancelAnimationFrame(e)}}),[n,t,r])}function g(e){if(!i.Z.canUseDOM)return e?f:p}function b(e){var n=e.as,t=void 0===n?"div":n,r=e.collapsed,a=e.children,i=e.animation,s=e.onCollapseTransitionEnd,c=e.className,l=e.disableSSRStyle,u=(0,o.useRef)(null);return h({collapsibleRef:u,collapsed:r,animation:i}),o.createElement(t,{ref:u,style:l?void 0:g(r),onTransitionEnd:function(e){"height"===e.propertyName&&(m(u.current,r),null==s||s(r))},className:c},a)}function v(e){var n=e.collapsed,t=(0,a.Z)(e,c),i=(0,o.useState)(!n),s=i[0],l=i[1],u=(0,o.useState)(n),d=u[0],f=u[1];return(0,o.useLayoutEffect)((function(){n||l(!0)}),[n]),(0,o.useLayoutEffect)((function(){s&&f(n)}),[s,n]),s?o.createElement(b,(0,r.Z)({},t,{collapsed:d})):null}function y(e){var n=e.lazy,t=(0,a.Z)(e,l),r=n?v:b;return o.createElement(r,t)}},59689:(e,n,t)=>{"use strict";t.d(n,{nT:()=>m,pl:()=>p});var r=t(67294),a=t(72389),o=t(50012),i=t(69688),s=t(86668),c=(0,o.WA)("docusaurus.announcement.dismiss"),l=(0,o.WA)("docusaurus.announcement.id"),u=function(){return"true"===c.get()},d=function(e){return c.set(String(e))},f=r.createContext(null);function p(e){var n=e.children,t=function(){var e=(0,s.L)().announcementBar,n=(0,a.Z)(),t=(0,r.useState)((function(){return!!n&&u()})),o=t[0],i=t[1];(0,r.useEffect)((function(){i(u())}),[]);var c=(0,r.useCallback)((function(){d(!0),i(!0)}),[]);return(0,r.useEffect)((function(){if(e){var n=e.id,t=l.get();"annoucement-bar"===t&&(t="announcement-bar");var r=n!==t;l.set(n),r&&d(!1),!r&&u()||i(!1)}}),[e]),(0,r.useMemo)((function(){return{isActive:!!e&&!o,close:c}}),[e,o,c])}();return r.createElement(f.Provider,{value:t},n)}function m(){var e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,n,t)=>{"use strict";t.d(n,{I:()=>g,S:()=>h});var r=t(67294),a=t(10412),o=t(69688),i=t(50012),s=t(86668),c=r.createContext(void 0),l="theme",u=(0,i.WA)(l),d={light:"light",dark:"dark"},f=function(e){return e===d.dark?d.dark:d.light},p=function(e){return a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e)},m=function(e){u.set(f(e))};function h(e){var n=e.children,t=function(){var e=(0,s.L)().colorMode,n=e.defaultMode,t=e.disableSwitch,a=e.respectPrefersColorScheme,o=(0,r.useState)(p(n)),i=o[0],c=o[1];(0,r.useEffect)((function(){t&&u.del()}),[t]);var h=(0,r.useCallback)((function(e,t){void 0===t&&(t={});var r=t.persist,o=void 0===r||r;e?(c(e),o&&m(e)):(c(a?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:n),u.del())}),[a,n]);(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",f(i))}),[i]),(0,r.useEffect)((function(){if(!t){var e=function(e){if(e.key===l){var n=u.get();null!==n&&h(f(n))}};return window.addEventListener("storage",e),function(){return window.removeEventListener("storage",e)}}}),[t,h]);var g=(0,r.useRef)(!1);return(0,r.useEffect)((function(){if(!t||a){var e=window.matchMedia("(prefers-color-scheme: dark)"),n=function(){window.matchMedia("print").matches||g.current?g.current=window.matchMedia("print").matches:h(null)};return e.addListener(n),function(){return e.removeListener(n)}}}),[h,t,a]),(0,r.useMemo)((function(){return{colorMode:i,setColorMode:h,get isDarkTheme(){return i===d.dark},setLightTheme:function(){h(d.light)},setDarkTheme:function(){h(d.dark)}}}),[i,h])}();return r.createElement(c.Provider,{value:t},n)}function g(){var e=(0,r.useContext)(c);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,n,t)=>{"use strict";t.d(n,{J:()=>v,L5:()=>g,Oh:()=>y});var r=t(67294),a=t(80143),o=t(29935),i=t(86668),s=t(53438),c=t(69688),l=t(50012),u=function(e){return"docs-preferred-version-"+e},d={save:function(e,n,t){(0,l.WA)(u(e),{persistence:n}).set(t)},read:function(e,n){return(0,l.WA)(u(e),{persistence:n}).get()},clear:function(e,n){(0,l.WA)(u(e),{persistence:n}).del()}},f=function(e){return Object.fromEntries(e.map((function(e){return[e,{preferredVersionName:null}]})))};var p=r.createContext(null);function m(){var e=(0,a._r)(),n=(0,i.L)().docs.versionPersistence,t=(0,r.useMemo)((function(){return Object.keys(e)}),[e]),o=(0,r.useState)((function(){return f(t)})),s=o[0],c=o[1];return(0,r.useEffect)((function(){c(function(e){var n=e.pluginIds,t=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(n.map((function(e){return[e,(n=e,a=d.read(n,t),r[n].versions.some((function(e){return e.name===a}))?{preferredVersionName:a}:(d.clear(n,t),{preferredVersionName:null}))];var n,a})))}({allDocsData:e,versionPersistence:n,pluginIds:t}))}),[e,n,t]),[s,(0,r.useMemo)((function(){return{savePreferredVersion:function(e,t){d.save(e,n,t),c((function(n){var r;return Object.assign({},n,((r={})[e]={preferredVersionName:t},r))}))}}}),[n])]}function h(e){var n=e.children,t=m();return r.createElement(p.Provider,{value:t},n)}function g(e){var n=e.children;return s.cE?r.createElement(h,null,n):r.createElement(r.Fragment,null,n)}function b(){var e=(0,r.useContext)(p);if(!e)throw new c.i6("DocsPreferredVersionContextProvider");return e}function v(e){var n;void 0===e&&(e=o.m);var t=(0,a.zh)(e),i=b(),s=i[0],c=i[1],l=s[e].preferredVersionName;return{preferredVersion:null!=(n=t.versions.find((function(e){return e.name===l})))?n:null,savePreferredVersionName:(0,r.useCallback)((function(n){c.savePreferredVersion(e,n)}),[c,e])}}function y(){var e=(0,a._r)(),n=b()[0];var t=Object.keys(e);return Object.fromEntries(t.map((function(t){return[t,(r=t,o=e[r],i=n[r].preferredVersionName,null!=(a=o.versions.find((function(e){return e.name===i})))?a:null)];var r,a,o,i})))}},1116:(e,n,t)=>{"use strict";t.d(n,{V:()=>c,b:()=>s});var r=t(67294),a=t(69688),o=Symbol("EmptyContext"),i=r.createContext(o);function s(e){var n=e.children,t=e.name,a=e.items,o=(0,r.useMemo)((function(){return t&&a?{name:t,items:a}:null}),[t,a]);return r.createElement(i.Provider,{value:o},n)}function c(){var e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,n,t)=>{"use strict";t.d(n,{E:()=>s,q:()=>i});var r=t(67294),a=t(69688),o=r.createContext(null);function i(e){var n=e.children,t=e.version;return r.createElement(o.Provider,{value:t},n)}function s(){var e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,n,t)=>{"use strict";t.d(n,{M:()=>d,e:()=>f});var r=t(67294),a=t(13102),o=t(87524),i=t(91980),s=t(86668),c=t(69688),l=r.createContext(void 0);function u(){var e,n=(e=(0,a.HY)(),0===(0,s.L)().navbar.items.length&&!e.component),t=(0,o.i)(),c=!n&&"mobile"===t,l=(0,r.useState)(!1),u=l[0],d=l[1];(0,i.Rb)((function(){if(u)return d(!1),!1}));var f=(0,r.useCallback)((function(){d((function(e){return!e}))}),[]);return(0,r.useEffect)((function(){"desktop"===t&&d(!1)}),[t]),(0,r.useMemo)((function(){return{disabled:n,shouldRender:c,toggle:f,shown:u}}),[n,c,f,u])}function d(e){var n=e.children,t=u();return r.createElement(l.Provider,{value:t},n)}function f(){var e=r.useContext(l);if(void 0===e)throw new c.i6("NavbarMobileSidebarProvider");return e}},13102:(e,n,t)=>{"use strict";t.d(n,{HY:()=>s,Zo:()=>c,n2:()=>i});var r=t(67294),a=t(69688),o=r.createContext(null);function i(e){var n=e.children,t=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:t},n)}function s(){var e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){var n=e.component,t=e.props,i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");var s=i[1],c=(0,a.Ql)(t);return(0,r.useEffect)((function(){s({component:n,props:c})}),[s,n,c]),(0,r.useEffect)((function(){return function(){return s({component:null,props:null})}}),[s]),null}},19727:(e,n,t)=>{"use strict";t.d(n,{h:()=>a,t:()=>o});var r=t(67294),a="navigation-with-keyboard";function o(){(0,r.useEffect)((function(){function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),function(){document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},66177:(e,n,t)=>{"use strict";t.d(n,{K:()=>s,M:()=>c});var r=t(67294),a=t(52263),o=t(91980),i="q";function s(){return(0,o.Nc)(i)}function c(){var e=(0,a.Z)().siteConfig,n=e.baseUrl,t=e.themeConfig.algolia.searchPagePath;return(0,r.useCallback)((function(e){return""+n+t+"?"+i+"="+encodeURIComponent(e)}),[n,t])}},87524:(e,n,t)=>{"use strict";t.d(n,{i:()=>l});var r=t(67294),a=t(10412),o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}var c=!1;function l(){var e=(0,r.useState)((function(){return c?"ssr":s()})),n=e[0],t=e[1];return(0,r.useEffect)((function(){function e(){t(s())}var n=c?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(n)}}),[]),n}},35281:(e,n,t)=>{"use strict";t.d(n,{k:()=>r});var r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:function(e){return"theme-admonition-"+e}},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{}}},91442:(e,n,t)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}t.d(n,{n:()=>r})},53438:(e,n,t)=>{"use strict";t.d(n,{MN:()=>C,Wl:()=>h,_F:()=>y,cE:()=>p,hI:()=>S,jA:()=>g,lO:()=>w,oz:()=>E,s1:()=>k,vY:()=>_,xz:()=>m});var r=t(67855),a=t(67294),o=t(16550),i=t(18790),s=t(80143),c=t(60373),l=t(74477),u=t(1116),d=t(67392),f=t(48596),p=!!s._r;function m(e){var n=(0,l.E)();if(e){var t=n.docs[e];if(!t)throw new Error("no version doc found by id="+e);return t}}function h(e){if(e.href)return e.href;for(var n,t=(0,r.Z)(e.items);!(n=t()).done;){var a=n.value;if("link"===a.type)return a.href;if("category"===a.type){var o=h(a);if(o)return o}}}function g(){var e=(0,o.TH)().pathname,n=(0,u.V)();if(!n)throw new Error("Unexpected: cant find current sidebar in context");var t=x({sidebarItems:n.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!t)throw new Error(e+" is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.");return t}var b=function(e,n){return void 0!==e&&(0,f.Mg)(e,n)},v=function(e,n){return e.some((function(e){return y(e,n)}))};function y(e,n){return"link"===e.type?b(e.href,n):"category"===e.type&&(b(e.href,n)||v(e.items,n))}function x(e){var n=e.sidebarItems,t=e.pathname,a=e.onlyCategories,o=void 0!==a&&a,i=[];return function e(n){for(var a,s=(0,r.Z)(n);!(a=s()).done;){var c=a.value;if("category"===c.type&&((0,f.Mg)(c.href,t)||e(c.items))||"link"===c.type&&(0,f.Mg)(c.href,t))return o&&"category"!==c.type||i.unshift(c),!0}return!1}(n),i}function k(){var e,n=(0,u.V)(),t=(0,o.TH)().pathname;return!1!==(null==(e=(0,s.gA)())?void 0:e.pluginData.breadcrumbs)&&n?x({sidebarItems:n.items,pathname:t}):null}function w(e){var n=(0,s.Iw)(e).activeVersion,t=(0,c.J)(e).preferredVersion,r=(0,s.yW)(e);return(0,a.useMemo)((function(){return(0,d.j)([n,t,r].filter(Boolean))}),[n,t,r])}function E(e,n){var t=w(n);return(0,a.useMemo)((function(){var n=t.flatMap((function(e){return e.sidebars?Object.entries(e.sidebars):[]})),r=n.find((function(n){return n[0]===e}));if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(t.length>1?"s":"")+" "+t.map((function(e){return e.name})).join(", ")+'".\nAvailable sidebar ids are:\n- '+n.map((function(e){return e[0]})).join("\n- "));return r[1]}),[e,t])}function _(e,n){var t=w(n);return(0,a.useMemo)((function(){var n=t.flatMap((function(e){return e.docs})),r=n.find((function(n){return n.id===e}));if(!r){if(t.flatMap((function(e){return e.draftIds})).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(t.length>1?"s":"")+' "'+t.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+(0,d.j)(n.map((function(e){return e.id}))).join("\n- "))}return r}),[e,t])}function S(e){var n=e.route,t=e.versionMetadata,r=(0,o.TH)(),a=n.routes,s=a.find((function(e){return(0,o.LX)(r.pathname,e)}));if(!s)return null;var c=s.sidebar,l=c?t.docsSidebars[c]:void 0;return{docElement:(0,i.H)(a),sidebarName:c,sidebarItems:l}}function C(e){return e.filter((function(e){return"category"!==e.type||!!h(e)}))}},82128:(e,n,t)=>{"use strict";t.d(n,{p:()=>a});var r=t(52263);function a(e){var n=(0,r.Z)().siteConfig,t=n.title,a=n.titleDelimiter;return null!=e&&e.trim().length?e.trim()+" "+a+" "+t:t}},91980:(e,n,t)=>{"use strict";t.d(n,{Nc:()=>l,Rb:()=>s,_X:()=>c});var r=t(67294),a=t(16550),o=t(61688),i=t(69688);function s(e){!function(e){var n=(0,a.k6)(),t=(0,i.zX)(e);(0,r.useEffect)((function(){return n.block((function(e,n){return t(e,n)}))}),[n,t])}((function(n,t){if("POP"===t)return e(n,t)}))}function c(e){return n=function(n){return null===e?null:new URLSearchParams(n.location.search).get(e)},t=(0,a.k6)(),(0,o.useSyncExternalStore)(t.listen,(function(){return n(t)}),(function(){return n(t)}));var n,t}function l(e){var n,t,o=null!=(n=c(e))?n:"",i=(t=(0,a.k6)(),(0,r.useCallback)((function(e,n,r){var a=new URLSearchParams(t.location.search);n?a.set(e,n):a.delete(e),(null!=r&&r.push?t.push:t.replace)({search:a.toString()})}),[t]));return[o,(0,r.useCallback)((function(n,t){i(e,n,t)}),[i,e])]}},67392:(e,n,t)=>{"use strict";function r(e,n){return void 0===n&&(n=function(e,n){return e===n}),e.filter((function(t,r){return e.findIndex((function(e){return n(e,t)}))!==r}))}function a(e){return Array.from(new Set(e))}t.d(n,{j:()=>a,l:()=>r})},10833:(e,n,t)=>{"use strict";t.d(n,{FG:()=>f,d:()=>u,VC:()=>p});var r=t(67294),a=t(86010),o=t(35742),i=t(30226);function s(){var e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var c=t(44996),l=t(82128);function u(e){var n=e.title,t=e.description,a=e.keywords,i=e.image,s=e.children,u=(0,l.p)(n),d=(0,c.C)().withBaseUrl,f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,n&&r.createElement("title",null,u),n&&r.createElement("meta",{property:"og:title",content:u}),t&&r.createElement("meta",{name:"description",content:t}),t&&r.createElement("meta",{property:"og:description",content:t}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),s)}var d=r.createContext(void 0);function f(e){var n=e.className,t=e.children,i=r.useContext(d),s=(0,a.Z)(i,n);return r.createElement(d.Provider,{value:s},r.createElement(o.Z,null,r.createElement("html",{className:s})),t)}function p(e){var n=e.children,t=s(),o="plugin-"+t.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),i="plugin-id-"+t.plugin.id;return r.createElement(f,{className:(0,a.Z)(o,i)},n)}},69688:(e,n,t)=>{"use strict";t.d(n,{i6:()=>p,Qc:()=>h,zX:()=>d,D9:()=>f,Ql:()=>m});var r=t(87099),a=t(94578);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var i=t(89611);function s(e,n,t){return s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct.bind():function(e,n,t){var r=[null];r.push.apply(r,n);var a=new(Function.bind.apply(e,r));return t&&(0,i.Z)(a,t.prototype),a},s.apply(null,arguments)}function c(e){var n="function"==typeof Map?new Map:void 0;return c=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(n){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return s(e,arguments,o(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),(0,i.Z)(t,e)},c(e)}var l=t(67294),u=t(10412).Z.canUseDOM?l.useLayoutEffect:l.useEffect;function d(e){var n=(0,l.useRef)(e);return u((function(){n.current=e}),[e]),(0,l.useCallback)((function(){return n.current.apply(n,arguments)}),[])}function f(e){var n=(0,l.useRef)();return u((function(){n.current=e})),n.current}var p=function(e){function n(n,t){var a,o,i;return(i=e.call(this)||this).name="ReactContextError",i.message="Hook "+(null!=(a=null==(o=i.stack)||null==(o=o.split("\n")[1])||null==(o=o.match((0,r.Z)(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:o.groups.name)?a:"")+" is called outside the <"+n+">. "+(null!=t?t:""),i}return(0,a.Z)(n,e),n}(c(Error));function m(e){var n=Object.entries(e);return n.sort((function(e,n){return e[0].localeCompare(n[0])})),(0,l.useMemo)((function(){return e}),n.flat())}function h(e){return function(n){var t=n.children;return l.createElement(l.Fragment,null,e.reduceRight((function(e,n){return l.createElement(n,null,e)}),t))}}},98022:(e,n,t)=>{"use strict";function r(e,n){return void 0!==e&&void 0!==n&&new RegExp(e,"gi").test(n)}t.d(n,{F:()=>r})},48596:(e,n,t)=>{"use strict";t.d(n,{Mg:()=>i,Ns:()=>s});var r=t(67294),a=t(69204),o=t(52263);function i(e,n){var t=function(e){var n;return null==(n=!e||e.endsWith("/")?e:e+"/")?void 0:n.toLowerCase()};return t(e)===t(n)}function s(){var e=(0,o.Z)().siteConfig.baseUrl;return(0,r.useMemo)((function(){return function(e){var n=e.baseUrl;function t(e){return e.path===n&&!0===e.exact}function r(e){return e.path===n&&!e.exact}return function e(n){if(0!==n.length)return n.find(t)||e(n.filter(r).flatMap((function(e){var n;return null!=(n=e.routes)?n:[]})))}(e.routes)}({routes:a.Z,baseUrl:e})}),[e])}},12466:(e,n,t)=>{"use strict";t.d(n,{Ct:()=>p,OC:()=>c,RF:()=>d,o5:()=>f});var r=t(67294),a=t(10412),o=t(72389),i=t(69688);var s=r.createContext(void 0);function c(e){var n,t=e.children,a=(n=(0,r.useRef)(!0),(0,r.useMemo)((function(){return{scrollEventsEnabledRef:n,enableScrollEvents:function(){n.current=!0},disableScrollEvents:function(){n.current=!1}}}),[]));return r.createElement(s.Provider,{value:a},t)}function l(){var e=(0,r.useContext)(s);if(null==e)throw new i.i6("ScrollControllerProvider");return e}var u=function(){return a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function d(e,n){void 0===n&&(n=[]);var t=l().scrollEventsEnabledRef,a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((function(){var e=function(){if(t.current){var e=u();o(e,a.current),a.current=e}},n={passive:!0};return e(),window.addEventListener("scroll",e,n),function(){return window.removeEventListener("scroll",e,n)}}),[o,t].concat(n))}function f(){var e,n,t,a=l(),o=(e=(0,r.useRef)({elem:null,top:0}),n=(0,r.useCallback)((function(n){e.current={elem:n,top:n.getBoundingClientRect().top}}),[]),t=(0,r.useCallback)((function(){var n=e.current,t=n.elem,r=n.top;if(!t)return{restored:!1};var a=t.getBoundingClientRect().top-r;return a&&window.scrollBy({left:0,top:a}),e.current={elem:null,top:0},{restored:0!==a}}),[]),(0,r.useMemo)((function(){return{save:n,restore:t}}),[t,n])),i=(0,r.useRef)(void 0),s=(0,r.useCallback)((function(e){o.save(e),a.disableScrollEvents(),i.current=function(){var e=o.restore().restored;if(i.current=void 0,e){window.addEventListener("scroll",(function e(){a.enableScrollEvents(),window.removeEventListener("scroll",e)}))}else a.enableScrollEvents()}}),[a,o]);return(0,r.useLayoutEffect)((function(){queueMicrotask((function(){return null==i.current?void 0:i.current()}))})),{blockElementScrollPositionUntilNextRender:s}}function p(){var e=(0,r.useRef)(null),n=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:function(t){e.current=n?function(e){return window.scrollTo({top:e,behavior:"smooth"}),function(){}}(t):function(e){var n=null,t=document.documentElement.scrollTop>e;return function r(){var a=document.documentElement.scrollTop;(t&&a>e||!t&&a{"use strict";t.d(n,{HX:()=>i,_q:()=>c,os:()=>s});var r=t(80143),a=t(52263),o=t(60373),i="default";function s(e,n){return"docs-"+e+"-"+n}function c(){var e=(0,a.Z)().i18n,n=(0,r._r)(),t=(0,r.WS)(),c=(0,o.Oh)();var l=[i].concat(Object.keys(n).map((function(e){var r,a=(null==t?void 0:t.activePlugin.pluginId)===e?t.activeVersion:void 0,o=c[e],i=n[e].versions.find((function(e){return e.isLast}));return s(e,(null!=(r=null!=a?a:o)?r:i).name)})));return{locale:e.currentLocale,tags:l}}},50012:(e,n,t)=>{"use strict";t.d(n,{Nk:()=>d,WA:()=>u});var r=t(67294),a=t(61688),o="localStorage";function i(e){var n=e.key,t=e.oldValue,r=e.newValue,a=e.storage;if(t!==r){var o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,n,t,r,window.location.href,a),window.dispatchEvent(o)}}function s(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(t){return n=t,c||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",n),c=!0),null}var n}var c=!1;var l={get:function(){return null},set:function(){},del:function(){},listen:function(){return function(){}}};function u(e,n){if("undefined"==typeof window)return function(e){function n(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:n,set:n,del:n,listen:n}}(e);var t=s(null==n?void 0:n.persistence);return null===t?l:{get:function(){try{return t.getItem(e)}catch(n){return console.error("Docusaurus storage error, can't get key="+e,n),null}},set:function(n){try{var r=t.getItem(e);t.setItem(e,n),i({key:e,oldValue:r,newValue:n,storage:t})}catch(a){console.error("Docusaurus storage error, can't set "+e+"="+n,a)}},del:function(){try{var n=t.getItem(e);t.removeItem(e),i({key:e,oldValue:n,newValue:null,storage:t})}catch(r){console.error("Docusaurus storage error, can't delete key="+e,r)}},listen:function(n){try{var r=function(r){r.storageArea===t&&r.key===e&&n(r)};return window.addEventListener("storage",r),function(){return window.removeEventListener("storage",r)}}catch(a){return console.error("Docusaurus storage error, can't listen for changes of key="+e,a),function(){}}}}}function d(e,n){var t=(0,r.useRef)((function(){return null===e?l:u(e,n)})).current(),o=(0,r.useCallback)((function(e){return"undefined"==typeof window?function(){}:t.listen(e)}),[t]);return[(0,a.useSyncExternalStore)(o,(function(){return"undefined"==typeof window?null:t.get()}),(function(){return null})),t]}},94711:(e,n,t)=>{"use strict";t.d(n,{l:()=>i});var r=t(52263),a=t(16550),o=t(18780);function i(){var e=(0,r.Z)(),n=e.siteConfig,t=n.baseUrl,i=n.url,s=n.trailingSlash,c=e.i18n,l=c.defaultLocale,u=c.currentLocale,d=(0,a.TH)().pathname,f=(0,o.applyTrailingSlash)(d,{trailingSlash:s,baseUrl:t}),p=u===l?t:t.replace("/"+u+"/","/"),m=f.replace(t,"");return{createUrl:function(e){var n=e.locale;return""+(e.fullyQualified?i:"")+function(e){return e===l?""+p:""+p+e+"/"}(n)+m}}}},85936:(e,n,t)=>{"use strict";t.d(n,{S:()=>i});var r=t(67294),a=t(16550),o=t(69688);function i(e){var n=(0,a.TH)(),t=(0,o.D9)(n),i=(0,o.zX)(e);(0,r.useEffect)((function(){t&&n!==t&&i({location:n,previousLocation:t})}),[i,n,t])}},86668:(e,n,t)=>{"use strict";t.d(n,{L:()=>a});var r=t(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,n,t)=>{"use strict";t.d(n,{L:()=>a});var r=t(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},239:(e,n,t)=>{"use strict";t.d(n,{l:()=>s});var r=t(67294),a=t(98022),o=t(44996),i=t(6278);function s(){var e=(0,o.C)().withBaseUrl,n=(0,i.L)().algolia,t=n.externalUrlRegex,s=n.replaceSearchResultPathname;return(0,r.useCallback)((function(n){var r=new URL(n);if((0,a.F)(t,r.href))return n;var o=""+(r.pathname+r.hash);return e(function(e,n){return n?e.replaceAll(new RegExp(n.from,"g"),n.to):e}(o,s))}),[e,t,s])}},8802:(e,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){var t=n.trailingSlash,r=n.baseUrl;if(e.startsWith("#"))return e;if(void 0===t)return e;var a,o=e.split(/[#?]/)[0],i="/"===o||o===r?o:(a=o,t?function(e){return e.endsWith("/")?e:e+"/"}(a):function(e){return e.endsWith("/")?e.slice(0,-1):e}(a));return e.replace(o,i)}},54143:(e,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getErrorCausalChain=void 0,n.getErrorCausalChain=function e(n){return n.cause?[n].concat(e(n.cause)):[n]}},18780:function(e,n,t){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.getErrorCausalChain=n.applyTrailingSlash=n.blogPostContainerID=void 0,n.blogPostContainerID="__blog-post-container";var a=t(8802);Object.defineProperty(n,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=t(54143);Object.defineProperty(n,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},69204:(e,n,t)=>{"use strict";t.d(n,{Z:()=>p});var r=t(67294),a=t(87462),o=t(68356),i=t.n(o),s=t(85345);const c={"06597bc8":[function(){return t.e(9856).then(t.bind(t,45401))},"@site/../docs/learn/archive/learn-treasury.md",45401],"06ea9e61":[function(){return t.e(4825).then(t.t.bind(t,82948,19))},"~docs/default/category-docs-docs-category-protocol-parachain-development-a87.json",82948],"078895e8":[function(){return t.e(740).then(t.bind(t,82681))},"@site/../docs/learn/archive/learn-controller.md",82681],"0a3f0c9b":[function(){return t.e(7837).then(t.bind(t,83388))},"@site/../docs/general/ledger.md",83388],"0b632434":[function(){return t.e(2635).then(t.bind(t,68173))},"@site/../docs/general/parachains-apps.md",68173],"0c68fb82":[function(){return t.e(5526).then(t.bind(t,81424))},"@site/../docs/general/kusama/kusama-claims.md",81424],"0cb62240":[function(){return t.e(1979).then(t.t.bind(t,74518,19))},"~docs/default/category-docs-docs-category-fundamentals-60b.json",74518],"0df78d26":[function(){return t.e(1723).then(t.bind(t,13449))},"@site/../docs/maintain/maintain-guides-secure-validator.md",13449],"0eeb7a68":[function(){return t.e(1713).then(t.bind(t,51846))},"@site/../docs/learn/learn-guides-DOT-KSM-bridge.md",51846],"113faa87":[function(){return Promise.all([t.e(532),t.e(7738)]).then(t.bind(t,30998))},"@site/../docs/learn/learn-guides-assets.md",30998],"12331e8b":[function(){return t.e(8270).then(t.bind(t,67881))},"@site/../docs/general/polkadotjs.md",67881],"131c7f55":[function(){return Promise.all([t.e(532),t.e(9323)]).then(t.bind(t,93928))},"@site/../docs/learn/learn-architecture.md",93928],"13b7bafa":[function(){return Promise.all([t.e(5424),t.e(6585)]).then(t.bind(t,89501))},"@site/../docs/learn/learn-auction.md",89501],"145746f5":[function(){return Promise.all([t.e(5424),t.e(691)]).then(t.bind(t,30536))},"@site/../docs/maintain/maintain-polkadot-parameters.md",30536],"14eb3368":[function(){return Promise.all([t.e(532),t.e(9817)]).then(t.bind(t,55541))},"@theme/DocCategoryGeneratedIndexPage",55541],15985664:[function(){return t.e(7830).then(t.bind(t,43394))},"@site/../docs/learn/xcm/journey/summary.md",43394],"1646726c":[function(){return Promise.all([t.e(5424),t.e(2169)]).then(t.bind(t,78381))},"@site/../docs/learn/learn-staking.md",78381],17896441:[function(){return Promise.all([t.e(532),t.e(7918)]).then(t.bind(t,91575))},"@theme/DocItem",91575],"1882e65d":[function(){return t.e(5492).then(t.t.bind(t,77274,19))},"/home/runner/work/polkadot-wiki/polkadot-wiki/polkadot-wiki/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",77274],"19ed4d4c":[function(){return t.e(4355).then(t.bind(t,51191))},"@site/../docs/learn/learn-comparisons-cosmos.md",51191],"1a4e3797":[function(){return Promise.all([t.e(532),t.e(7920)]).then(t.bind(t,56675))},"@theme/SearchPage",56675],"1ae2b102":[function(){return Promise.all([t.e(5424),t.e(4537)]).then(t.bind(t,1799))},"@site/../docs/build/build-protocol-info.md",1799],"1be78505":[function(){return Promise.all([t.e(532),t.e(9514)]).then(t.bind(t,19963))},"@theme/DocPage",19963],"1d6d4797":[function(){return t.e(12).then(t.bind(t,35290))},"@site/../docs/learn/xcm/journey/transact.md",35290],"1e15616a":[function(){return t.e(9802).then(t.bind(t,39420))},"@site/../docs/learn/learn-wasm.md",39420],"1ed3671a":[function(){return t.e(1953).then(t.bind(t,63092))},"@site/../docs/learn/xcm/journey/trap-and-claim.md",63092],"21877fa5":[function(){return Promise.all([t.e(5424),t.e(2117)]).then(t.bind(t,4381))},"@site/../docs/learn/learn-system-chains.md",4381],"21899dd2":[function(){return t.e(3599).then(t.bind(t,2741))},"@site/../docs/learn/learn-parachains.md",2741],"23498fd5":[function(){return t.e(810).then(t.bind(t,7551))},"@site/../docs/build/build-integrate-assets.md",7551],"2462cc91":[function(){return t.e(4885).then(t.bind(t,90351))},"@site/../docs/general/multisig-apps.md",90351],"25f2bd2a":[function(){return t.e(1213).then(t.bind(t,16769))},"@site/../docs/maintain/maintain-guides-how-to-stop-validating.md",16769],"279fb1d6":[function(){return Promise.all([t.e(5424),t.e(6827)]).then(t.bind(t,81807))},"@site/../docs/general/kusama/kusama-getting-started.md",81807],"28b84bbb":[function(){return t.e(8444).then(t.bind(t,50310))},"@site/../docs/build/build-network-overview.md",50310],"29a046f3":[function(){return t.e(6918).then(t.t.bind(t,59904,19))},"~docs/default/category-docs-docs-category-polkadot-comparisons-3b4.json",59904],"2be0d940":[function(){return Promise.all([t.e(5424),t.e(2914)]).then(t.bind(t,77078))},"@site/../docs/learn/learn-guides-identity.md",77078],"2d34559d":[function(){return t.e(5645).then(t.bind(t,60943))},"@site/../docs/learn/learn-jam-chain.md",60943],"2d429218":[function(){return t.e(502).then(t.bind(t,20925))},"@site/../docs/learn/learn-consensus.md",20925],"2ea50c63":[function(){return t.e(2949).then(t.bind(t,84941))},"@site/../docs/learn/learn-xcm-usecases.md",84941],"2f3b630e":[function(){return Promise.all([t.e(5424),t.e(9226)]).then(t.bind(t,42569))},"@site/../docs/learn/learn-polkadot-opengov.md",42569],"3002ebf4":[function(){return Promise.all([t.e(532),t.e(6325)]).then(t.bind(t,64280))},"@site/../docs/build/build-dapp.md",64280],"30d868e8":[function(){return t.e(8215).then(t.t.bind(t,8578,19))},"~docs/default/category-docs-docs-category-multilocation-8c6.json",8578],"3104d5d8":[function(){return t.e(9977).then(t.t.bind(t,45050,19))},"~docs/default/category-docs-docs-category-programs-fa8.json",45050],"3184af97":[function(){return t.e(1125).then(t.bind(t,43335))},"@site/../docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",43335],"31bd35e0":[function(){return t.e(5281).then(t.bind(t,35660))},"@site/../docs/learn/xcm/overview/summary.md",35660],"31c99aa1":[function(){return t.e(8876).then(t.t.bind(t,45497,19))},"~docs/default/category-docs-docs-category-references-a4f.json",45497],"320c8a05":[function(){return t.e(5005).then(t.bind(t,76184))},"@site/../docs/maintain/maintain-networks.md",76184],"32c9742a":[function(){return t.e(9626).then(t.bind(t,84639))},"@site/../docs/learn/xcm/fundamentals/summary.md",84639],"32e8da05":[function(){return Promise.all([t.e(5424),t.e(6140)]).then(t.bind(t,65779))},"@site/../docs/learn/learn-crowdloans.md",65779],"333929a0":[function(){return t.e(2261).then(t.t.bind(t,61697,19))},"~docs/default/category-docs-docs-category-staking-on-polkadot-2c0.json",61697],"33b0bcab":[function(){return t.e(1585).then(t.bind(t,27281))},"@site/../docs/learn/xcm/reference/xcvm-registers.md",27281],"33bbe353":[function(){return t.e(7908).then(t.bind(t,46437))},"@site/../docs/maintain/kusama/maintain-guides-society-kusama.md",46437],"3497b7c6":[function(){return t.e(3332).then(t.t.bind(t,73834,19))},"~docs/default/category-docs-docs-category-quickstart-1e9.json",73834],"3829cf1d":[function(){return t.e(537).then(t.bind(t,77778))},"@site/../docs/maintain/maintain-guides-validator-community.md",77778],"386099fc":[function(){return Promise.all([t.e(5424),t.e(8139)]).then(t.bind(t,60283))},"@site/../docs/learn/learn-polkadot-opengov-treasury.md",60283],"386bfe51":[function(){return t.e(657).then(t.bind(t,35810))},"@site/../docs/general/contributing.md",35810],"387813b8":[function(){return Promise.all([t.e(5424),t.e(660)]).then(t.bind(t,93487))},"@site/../docs/learn/learn-guides-coretime-parachains.md",93487],"390ca211":[function(){return t.e(9596).then(t.bind(t,5355))},"@site/../docs/learn/archive/learn-launch.md",5355],"3bd77df4":[function(){return Promise.all([t.e(532),t.e(8831)]).then(t.bind(t,94752))},"@site/../docs/learn/learn-bridges.md",94752],"3d1bf5db":[function(){return t.e(3452).then(t.bind(t,85453))},"@site/../docs/maintain/maintain-guides-async-backing.md",85453],"3e56470e":[function(){return t.e(4541).then(t.bind(t,80432))},"@site/../docs/maintain/maintain-wss.md",80432],"408829bd":[function(){return t.e(6).then(t.bind(t,11982))},"@site/../docs/learn/learn-transaction-fees.md",11982],"41871d53":[function(){return t.e(7778).then(t.t.bind(t,69713,19))},"/home/runner/work/polkadot-wiki/polkadot-wiki/polkadot-wiki/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",69713],"41b7b3e8":[function(){return Promise.all([t.e(5424),t.e(3513)]).then(t.bind(t,84358))},"@site/../docs/learn/learn-staking-advanced.md",84358],"41f7224c":[function(){return Promise.all([t.e(532),t.e(3274)]).then(t.bind(t,48659))},"@site/../docs/learn/learn-archive.md",48659],"43cda9e8":[function(){return t.e(6357).then(t.bind(t,96736))},"@site/../docs/learn/learn-guides-assets-ledger.md",96736],"43ee4f22":[function(){return Promise.all([t.e(532),t.e(8047),t.e(4672)]).then(t.bind(t,24567))},"@site/../docs/build/build-guide.md",24567],"452ad91d":[function(){return t.e(6255).then(t.bind(t,94100))},"@site/../docs/learn/xcm/overview/intro.md",94100],"4642ab5c":[function(){return t.e(6946).then(t.bind(t,75925))},"@site/../docs/learn/learn-cryptography.md",75925],"48074a08":[function(){return t.e(1825).then(t.t.bind(t,64515,19))},"~docs/default/category-docs-docs-category-advanced-concepts-637.json",64515],"482bfb5c":[function(){return t.e(9993).then(t.t.bind(t,59085,19))},"~docs/default/category-docs-docs-category-dashboards-ddd.json",59085],"48d75399":[function(){return Promise.all([t.e(5424),t.e(4620)]).then(t.bind(t,17384))},"@site/../docs/general/faq.md",17384],"493c7fdf":[function(){return Promise.all([t.e(5424),t.e(2354)]).then(t.bind(t,22703))},"@site/../docs/general/glossary.md",22703],49816380:[function(){return t.e(6482).then(t.t.bind(t,13302,19))},"~docs/default/category-docs-docs-category-polkadot-vision-2bc.json",13302],"4a8eb552":[function(){return Promise.all([t.e(5424),t.e(7202)]).then(t.bind(t,87149))},"@site/../docs/learn/learn-comparisons-kusama.md",87149],"4d76887f":[function(){return t.e(1415).then(t.bind(t,77799))},"@site/../docs/build/build-hackathon.md",77799],"4d9b9869":[function(){return t.e(4445).then(t.bind(t,56136))},"@site/../docs/learn/learn-parachains-protocol.md",56136],"4f031749":[function(){return Promise.all([t.e(5424),t.e(2008)]).then(t.bind(t,44002))},"@site/../docs/learn/learn-guides-staking-pools.md",44002],"5136ee31":[function(){return t.e(1446).then(t.bind(t,57904))},"@site/../docs/learn/xcm/journey/expects.md",57904],"51fbc2c9":[function(){return t.e(9806).then(t.bind(t,68114))},"@site/../docs/learn/learn-comparisons.md",68114],"5355b952":[function(){return Promise.all([t.e(5424),t.e(6495),t.e(4126)]).then(t.bind(t,40799))},"@site/../docs/learn/learn-polkadot-opengov-origins.md",40799],"54338ffb":[function(){return t.e(4634).then(t.bind(t,97765))},"@site/../docs/learn/learn-account-multisig.md",97765],"543610b9":[function(){return t.e(7022).then(t.t.bind(t,50491,19))},"~docs/default/category-docs-docs-category-community-contributors-548.json",50491],"591eca19":[function(){return t.e(7714).then(t.bind(t,32876))},"@site/../docs/general/polkadot-direction.md",32876],"59acd71c":[function(){return t.e(3518).then(t.t.bind(t,22903,19))},"~docs/default/category-docs-docs-category-archived-build-resources-463.json",22903],"5c90fc9b":[function(){return t.e(3484).then(t.bind(t,11213))},"@site/../docs/learn/xcm/executor_config/config.md",11213],"5d69d9d4":[function(){return t.e(2884).then(t.bind(t,48470))},"@site/../docs/maintain/maintain-guides-how-to-upgrade.md",48470],"5db34cd0":[function(){return t.e(1635).then(t.bind(t,61390))},"@site/../docs/general/decentralized-voices.md",61390],"5e9f5e1a":[function(){return Promise.resolve().then(t.bind(t,8618))},"@generated/docusaurus.config",8618],"5fee77ad":[function(){return t.e(2880).then(t.t.bind(t,27328,19))},"~docs/default/category-docs-docs-category-bridge-hub-guides-299.json",27328],"60738e36":[function(){return Promise.all([t.e(5424),t.e(9071)]).then(t.bind(t,71345))},"@site/../docs/general/metadata.md",71345],"6116139f":[function(){return t.e(5052).then(t.bind(t,1421))},"@site/../docs/learn/learn-elastic-scaling.md",1421],"6151e7ce":[function(){return Promise.all([t.e(5424),t.e(2194)]).then(t.bind(t,8417))},"@site/../docs/general/kusama/kusama-parameters.md",8417],"64c7e1cc":[function(){return t.e(9217).then(t.bind(t,45725))},"@site/../docs/build/build-integration.md",45725],"6544ec02":[function(){return t.e(3029).then(t.bind(t,58619))},"@site/../docs/general/alpha-program.md",58619],"694672cd":[function(){return Promise.all([t.e(532),t.e(8138)]).then(t.bind(t,29576))},"@site/../docs/learn/learn-guides-staking.md",29576],"694e7470":[function(){return t.e(4566).then(t.t.bind(t,6269,19))},"~docs/default/category-docs-docs-category-future-implementations-236.json",6269],"69b97ecd":[function(){return t.e(8067).then(t.bind(t,75217))},"@site/../docs/learn/learn-implementations.md",75217],"6a04f266":[function(){return t.e(4187).then(t.t.bind(t,60641,19))},"~docs/default/category-docs-docs-category-nodes-and-dapps-4fe.json",60641],"6d2ffbf3":[function(){return t.e(9315).then(t.bind(t,91599))},"@site/../docs/learn/xcm/quickstart/first-look.md",91599],"6d5c9a28":[function(){return t.e(2119).then(t.bind(t,94927))},"@site/../docs/general/staking-apps.md",94927],"6f1a81b8":[function(){return Promise.all([t.e(5424),t.e(7288)]).then(t.bind(t,15418))},"@site/../docs/maintain/maintain-guides-how-to-chill.md",15418],"702d5d94":[function(){return t.e(4105).then(t.t.bind(t,54229,19))},"~docs/default/category-docs-docs-category-wallets-bf2.json",54229],"71ed82b9":[function(){return t.e(8648).then(t.bind(t,4401))},"@site/../docs/general/start-building.md",4401],"7266120e":[function(){return t.e(7518).then(t.t.bind(t,14776,19))},"~docs/default/category-docs-docs-category-jam-bfc.json",14776],73617284:[function(){return t.e(6730).then(t.bind(t,71298))},"@site/../docs/learn/learn-hyperbridge.md",71298],"73a7060c":[function(){return Promise.all([t.e(5424),t.e(5752)]).then(t.bind(t,72523))},"@site/../docs/learn/learn-polkadot-technical-fellowship.md",72523],"73c3bebc":[function(){return t.e(1211).then(t.t.bind(t,47084,19))},"~docs/default/category-docs-docs-category-stay-safe-1ef.json",47084],"73d1b372":[function(){return t.e(3576).then(t.bind(t,93891))},"@site/../docs/learn/learn-agile-coretime.md",93891],74985360:[function(){return t.e(43).then(t.t.bind(t,62402,19))},"~docs/default/category-docs-docs-category-explore-8dc.json",62402],"74df6a22":[function(){return t.e(1299).then(t.bind(t,50223))},"@site/../docs/maintain/maintain-rpc.md",50223],"766a10e1":[function(){return t.e(8860).then(t.bind(t,83611))},"@site/../docs/learn/learn-comparisons-avalanche.md",83611],"77c23c97":[function(){return Promise.all([t.e(532),t.e(5424),t.e(150)]).then(t.bind(t,32465))},"@site/../docs/learn/learn-transactions.md",32465],"78868b16":[function(){return t.e(2754).then(t.bind(t,17134))},"@site/../docs/general/kusama/kusama-social-recovery.md",17134],"78e1e977":[function(){return t.e(1872).then(t.bind(t,3830))},"@site/../docs/learn/xcm/journey/holding-modifiers.md",3830],"797239df":[function(){return t.e(356).then(t.t.bind(t,13198,19))},"~docs/default/category-docs-docs-category-polkadot-opengov-2e8.json",13198],"7c78c461":[function(){return t.e(2507).then(t.bind(t,41962))},"@site/../docs/general/kusama/kusama-community.md",41962],"7ccc428f":[function(){return t.e(3348).then(t.t.bind(t,56705,19))},"~docs/default/category-docs-docs-category-learn-about-polkadot-534.json",56705],"7dcec981":[function(){return Promise.all([t.e(532),t.e(5969)]).then(t.bind(t,69185))},"@site/../docs/build/build-client-side.md",69185],"7e9389ad":[function(){return t.e(5011).then(t.t.bind(t,69074,19))},"~docs/default/category-docs-docs-category-participants-in-the-polkadot-ecosystem-e03.json",69074],"7fbac68a":[function(){return t.e(1598).then(t.bind(t,81475))},"@site/../docs/general/ambassadors.md",81475],"804b1e9f":[function(){return Promise.all([t.e(5424),t.e(230)]).then(t.bind(t,46494))},"@site/../docs/learn/learn-guides-nominator.md",46494],"824749c6":[function(){return t.e(8361).then(t.bind(t,94521))},"@site/../docs/build/build-node-interaction.md",94521],"8247eba8":[function(){return t.e(8115).then(t.bind(t,76785))},"@site/../docs/learn/xcm/journey/transfers/teleports.md",76785],"83d4859f":[function(){return t.e(8757).then(t.bind(t,25310))},"@site/../docs/learn/xcm/journey/transfers/summary.md",25310],"84ede15a":[function(){return Promise.all([t.e(532),t.e(5424),t.e(4338)]).then(t.bind(t,6555))},"@site/../docs/learn/learn-guides-transfers.md",6555],"84f79495":[function(){return t.e(2078).then(t.bind(t,96709))},"@site/../docs/learn/learn-parathreads.md",96709],"85afe03a":[function(){return t.e(3132).then(t.bind(t,31714))},"@site/../docs/maintain/maintain-errors.md",31714],"863c4753":[function(){return t.e(2552).then(t.bind(t,15719))},"@site/../docs/learn/xcm/journey/register-modifiers.md",15719],"899aadcc":[function(){return t.e(1083).then(t.bind(t,11422))},"@site/../docs/learn/xcm/overview/architecture.md",11422],"89a76fd2":[function(){return t.e(9771).then(t.bind(t,31703))},"@site/../docs/learn/archive/learn-redenomination.md",31703],"8a8a7d05":[function(){return t.e(3262).then(t.bind(t,34204))},"@site/../docs/build/build-parachains.md",34204],"8b670b2b":[function(){return t.e(7799).then(t.bind(t,12897))},"@site/../docs/build/build-index.md",12897],"8d3a1bf8":[function(){return Promise.all([t.e(5424),t.e(2399)]).then(t.bind(t,10209))},"@site/../docs/learn/learn-inflation.md",10209],"8dd7cee0":[function(){return t.e(1486).then(t.bind(t,63349))},"@site/../docs/general/thousand-validators.md",63349],"918b38b6":[function(){return Promise.all([t.e(5424),t.e(2508)]).then(t.bind(t,90594))},"@site/../docs/learn/learn-async-backing.md",90594],"935f2afb":[function(){return t.e(53).then(t.t.bind(t,22624,19))},"~docs/default/version-current-metadata-prop-751.json",22624],"9528ac88":[function(){return t.e(315).then(t.bind(t,85517))},"@site/../docs/learn/learn-xcm-transport.md",85517],"9662c81e":[function(){return t.e(2664).then(t.bind(t,52269))},"@site/../docs/maintain/archive/maintain-guides-how-to-join-council.md",52269],"967fa6d4":[function(){return Promise.all([t.e(5424),t.e(2581)]).then(t.bind(t,91430))},"@site/../docs/learn/learn-guides-accounts-multisig.md",91430],"987d08ef":[function(){return t.e(1748).then(t.bind(t,11732))},"@site/../docs/build/build-smart-contracts.md",11732],"98a30fd8":[function(){return t.e(8866).then(t.bind(t,94062))},"@site/../docs/learn/xcm/fundamentals/multiasset.md",94062],"98a431f4":[function(){return t.e(7584).then(t.bind(t,51240))},"@site/../docs/general/transaction-attacks.md",51240],"9913464d":[function(){return t.e(5341).then(t.bind(t,63009))},"@site/../docs/learn/archive/learn-governance.md",63009],"9a679a70":[function(){return t.e(8178).then(t.t.bind(t,92189,19))},"~docs/default/category-docs-docs-category-overview-c3c.json",92189],"9e2042f5":[function(){return t.e(5651).then(t.bind(t,99476))},"@site/../docs/learn/learn-collator.md",99476],"9e3f6a8a":[function(){return t.e(2758).then(t.bind(t,14865))},"@site/../docs/learn/learn-comparison-ethereum-2.md",14865],"9e6341e5":[function(){return t.e(1774).then(t.bind(t,61601))},"@site/../docs/learn/xcm/journey/transfers/reserve.md",61601],"9e76b49d":[function(){return t.e(7823).then(t.bind(t,85268))},"@site/../docs/learn/xcm/testing.md",85268],"9f319605":[function(){return t.e(63).then(t.bind(t,48442))},"@site/../docs/learn/xcm/journey/fees.md",48442],"9f804621":[function(){return Promise.all([t.e(532),t.e(5424),t.e(4143)]).then(t.bind(t,35426))},"@site/../docs/learn/learn-guides-accounts.md",35426],a2800a5b:[function(){return t.e(7961).then(t.bind(t,69595))},"@site/../docs/build/build-transaction-construction.md",69595],a29dc56e:[function(){return t.e(6253).then(t.bind(t,16898))},"@site/../docs/maintain/maintain-guides-how-to-monitor-your-node.md",16898],a4b71220:[function(){return t.e(9112).then(t.t.bind(t,68388,19))},"/home/runner/work/polkadot-wiki/polkadot-wiki/polkadot-wiki/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",68388],a4c751bb:[function(){return t.e(5132).then(t.bind(t,39051))},"@site/../docs/learn/learn-bridge-hub.md",39051],a5002e4a:[function(){return t.e(1703).then(t.bind(t,53714))},"@site/../docs/build/build-oracle.md",53714],a5b3561d:[function(){return t.e(7466).then(t.bind(t,75007))},"@site/../docs/general/kusama/kusama-coc.md",75007],a74a59a0:[function(){return Promise.all([t.e(5424),t.e(8702)]).then(t.bind(t,11300))},"@site/../docs/maintain/maintain-guides-how-to-validate-polkadot.md",11300],a7b37b86:[function(){return t.e(4507).then(t.bind(t,588))},"@site/../docs/general/scams.md",588],a7c27f4d:[function(){return t.e(4174).then(t.t.bind(t,39220,19))},"~docs/default/category-docs-docs-category-basic-concepts-about-polkadot-793.json",39220],a8f54fb1:[function(){return t.e(5806).then(t.bind(t,3446))},"@site/../docs/learn/learn-DOT-KSM-bridge.md",3446],ab138bf8:[function(){return Promise.all([t.e(5424),t.e(8791)]).then(t.bind(t,83433))},"@site/../docs/learn/learn-proxies.md",83433],ad762f86:[function(){return Promise.all([t.e(5424),t.e(7940)]).then(t.bind(t,79569))},"@site/../docs/learn/learn-account-advanced.md",79569],af3013e9:[function(){return t.e(6673).then(t.t.bind(t,70918,19))},"~docs/default/category-docs-docs-category-apps-8f2.json",70918],af40287e:[function(){return t.e(3066).then(t.t.bind(t,48292,19))},"~docs/default/category-docs-docs-category-transfers-b84.json",48292],afddde9d:[function(){return t.e(9009).then(t.bind(t,55228))},"@site/../docs/learn/learn-asset-conversion-assethub.md",55228],b0a48d97:[function(){return t.e(3091).then(t.bind(t,74789))},"@site/../docs/learn/learn-guides-ledger.md",74789],b0cb055f:[function(){return t.e(9905).then(t.bind(t,65959))},"@site/../docs/learn/xcm/fundamentals/xcvm.md",65959],b0cbc1d4:[function(){return Promise.all([t.e(5424),t.e(3667)]).then(t.bind(t,14374))},"@site/../docs/general/staking-dashboard.md",14374],b133b626:[function(){return t.e(8086).then(t.t.bind(t,45153,19))},"~docs/default/category-docs-docs-category-collator-guides-d67.json",45153],b21dd8a7:[function(){return t.e(1494).then(t.bind(t,7788))},"@site/../docs/learn/learn-comparison-rollups.md",7788],b225a2ce:[function(){return t.e(3668).then(t.bind(t,63021))},"@site/../docs/learn/xcm/fundamentals/multilocation/summary.md",63021],b3719d54:[function(){return t.e(5422).then(t.bind(t,64633))},"@site/../docs/general/polkadot-v1.md",64633],b38833d4:[function(){return Promise.all([t.e(5424),t.e(9062)]).then(t.bind(t,2774))},"@site/../docs/learn/learn-phragmen.md",2774],b48c599b:[function(){return t.e(8901).then(t.bind(t,99098))},"@site/../docs/general/kusama/kusama-bug-bounty.md",99098],b61f6dc7:[function(){return t.e(1372).then(t.bind(t,7678))},"@site/../docs/general/research.md",7678],b906f375:[function(){return t.e(2749).then(t.bind(t,61104))},"@site/../docs/build/build-light-clients.md",61104],b940de31:[function(){return Promise.all([t.e(5424),t.e(7633)]).then(t.bind(t,11427))},"@site/../docs/learn/learn-assets.md",11427],b9b4ec9e:[function(){return t.e(5704).then(t.bind(t,15137))},"@site/../docs/learn/xcm/reference/glossary.md",15137],bb8b1738:[function(){return Promise.all([t.e(5424),t.e(7368)]).then(t.bind(t,49175))},"@site/../docs/learn/learn-validator.md",49175],bbba852d:[function(){return t.e(6294).then(t.bind(t,33736))},"@site/../docs/general/kusama/kusama-adverserial-cheatsheet.md",33736],bd701914:[function(){return t.e(7388).then(t.bind(t,55965))},"@site/../docs/learn/learn-parachains-faq.md",55965],bea375d6:[function(){return t.e(3757).then(t.bind(t,86676))},"@site/../docs/general/grants.md",86676],c07c2447:[function(){return Promise.all([t.e(5424),t.e(7654)]).then(t.bind(t,40569))},"@site/../docs/learn/learn-guides-polkadot-opengov.md",40569],c1bbdb2a:[function(){return t.e(4916).then(t.bind(t,27122))},"@site/../docs/learn/learn-polkadot-host.md",27122],c2c6a3a6:[function(){return t.e(2712).then(t.bind(t,5812))},"@site/../docs/learn/learn-nft-projects.md",5812],c41801b5:[function(){return Promise.all([t.e(5424),t.e(5013)]).then(t.bind(t,63801))},"@site/../docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md",63801],c4f5d8e4:[function(){return t.e(4195).then(t.bind(t,75844))},"@site/src/pages/index.js",75844],c5d9e474:[function(){return t.e(6779).then(t.t.bind(t,40076,19))},"~docs/default/category-docs-docs-category-client-side-development-690.json",40076],c662f00a:[function(){return t.e(4379).then(t.bind(t,56021))},"@site/../docs/learn/xcm/journey/queries.md",56021],c7a044bb:[function(){return t.e(217).then(t.bind(t,47223))},"@site/../docs/learn/xcm/journey/channels-and-bridges.md",47223],c7a2145e:[function(){return t.e(9478).then(t.bind(t,25690))},"@site/../docs/general/how-to-dyor.md",25690],c7c5ba1a:[function(){return Promise.all([t.e(532),t.e(5424),t.e(6104)]).then(t.bind(t,63706))},"@site/../docs/learn/learn-accounts.md",63706],c8dd560b:[function(){return Promise.all([t.e(5424),t.e(3978)]).then(t.bind(t,82651))},"@site/../docs/learn/learn-guides-accounts-proxy-pure.md",82651],c91a9c06:[function(){return Promise.all([t.e(5424),t.e(8355)]).then(t.bind(t,48693))},"@site/../docs/learn/learn-identity.md",48693],c977dfe8:[function(){return Promise.all([t.e(5424),t.e(1506)]).then(t.bind(t,38948))},"@site/../docs/learn/learn-teleport.md",38948],ca9fe671:[function(){return t.e(6598).then(t.bind(t,37579))},"@site/../docs/learn/xcm/overview/xcvm.md",37579],cb9afd28:[function(){return Promise.all([t.e(532),t.e(5424),t.e(3643)]).then(t.bind(t,46301))},"@site/../docs/learn/learn-polkadot-js-guides.md",46301],cc44e8fd:[function(){return t.e(7683).then(t.bind(t,6005))},"@site/../docs/build/build-node-management.md",6005],ccc1222e:[function(){return t.e(6920).then(t.bind(t,60147))},"@site/../docs/build/build-open-source.md",60147],cd144357:[function(){return t.e(9779).then(t.t.bind(t,14423,19))},"~docs/default/category-docs-docs-category-polkadots-parachains-4b5.json",14423],cda87995:[function(){return t.e(3933).then(t.bind(t,27023))},"@site/../docs/build/build-tools-index.md",27023],ceaa29cb:[function(){return t.e(6373).then(t.bind(t,41230))},"@site/../docs/learn/xcm/journey/locks/locks.md",41230],cfd53ea4:[function(){return t.e(1090).then(t.bind(t,7007))},"@site/../docs/general/kusama/kusama-timeline.md",7007],d01f45b7:[function(){return t.e(6220).then(t.t.bind(t,73443,19))},"~docs/default/category-docs-docs-category-polkadots-xcm-416.json",73443],d27ae88d:[function(){return t.e(5157).then(t.bind(t,19994))},"@site/../docs/learn/learn-video-tutorials.md",19994],d3a753cf:[function(){return t.e(8855).then(t.bind(t,8032))},"@site/../docs/learn/xcm/fundamentals/multilocation/example.md",8032],d569989b:[function(){return t.e(609).then(t.bind(t,17340))},"@site/../docs/general/bug-bounty.md",17340],d5909206:[function(){return t.e(3554).then(t.bind(t,43543))},"@site/../docs/learn/xcm/fundamentals/multilocation/junction.md",43543],d6a97e7e:[function(){return t.e(7858).then(t.bind(t,55984))},"@site/../docs/learn/xcm/quickstart/xcm-simulator.md",55984],d6b0148d:[function(){return t.e(5548).then(t.bind(t,7926))},"@site/../docs/learn/xcm/journey/origins.md",7926],d9ef69a7:[function(){return t.e(1786).then(t.bind(t,4245))},"@site/../docs/general/contributors.md",4245],da9f79cb:[function(){return Promise.all([t.e(5424),t.e(2248)]).then(t.bind(t,92916))},"@site/../docs/learn/learn-nomination-pools.md",92916],db039c7f:[function(){return t.e(5103).then(t.bind(t,50740))},"@site/../docs/learn/xcm/overview/format.md",50740],db0b42b0:[function(){return t.e(2609).then(t.bind(t,64271))},"@site/../docs/learn/learn-sassafras.md",64271],db3d6c4d:[function(){return t.e(7313).then(t.bind(t,1171))},"@site/../docs/learn/learn-account-abstraction.md",1171],dbbd9e76:[function(){return t.e(3669).then(t.bind(t,69156))},"@site/../docs/learn/learn-guides-vault.md",69156],dbc4065c:[function(){return t.e(6312).then(t.t.bind(t,8654,19))},"~docs/default/category-docs-docs-category-tokens-and-assets-d90.json",8654],dc36d550:[function(){return Promise.all([t.e(532),t.e(4359)]).then(t.bind(t,62252))},"@site/../docs/maintain/maintain-archive.md",62252],dc776cbc:[function(){return t.e(9764).then(t.bind(t,8117))},"@site/../docs/general/thousand-contributors.md",8117],dd2fa029:[function(){return Promise.all([t.e(532),t.e(9962)]).then(t.bind(t,78209))},"@site/../docs/learn/learn-polkadotjs.md",78209],dd32e389:[function(){return t.e(2042).then(t.bind(t,63689))},"@site/../docs/general/polkadot-vault.md",63689],df154d69:[function(){return t.e(1957).then(t.bind(t,15474))},"@site/../docs/learn/learn-xcm.md",15474],e00ac272:[function(){return t.e(4385).then(t.bind(t,47526))},"@site/../docs/learn/learn-guides-coretime-marketplaces.md",47526],e2e89062:[function(){return t.e(2633).then(t.bind(t,81843))},"@site/../docs/learn/learn-proxies-pure.md",81843],e31fc461:[function(){return t.e(3330).then(t.bind(t,60682))},"@site/../docs/learn/xcm/learn-xcm-docs-intro.md",60682],e3d2722f:[function(){return t.e(5049).then(t.t.bind(t,7864,19))},"~docs/default/category-docs-docs-category-agile-coretime-69e.json",7864],e495ca4d:[function(){return Promise.all([t.e(532),t.e(8951)]).then(t.bind(t,94392))},"@site/../docs/maintain/archive/maintain-guides-democracy.md",94392],e5615b18:[function(){return t.e(3828).then(t.t.bind(t,97723,19))},"~docs/default/category-docs-docs-category-validator-guides-2eb.json",97723],e77078a1:[function(){return t.e(5933).then(t.bind(t,72881))},"@site/../docs/learn/learn-jam-faq.md",72881],ec3b6a32:[function(){return t.e(4004).then(t.bind(t,56794))},"@site/../docs/learn/learn-nft.md",56794],ecb495b7:[function(){return t.e(2136).then(t.bind(t,82956))},"@site/../docs/maintain/maintain-guides-how-to-systemd.md",82956],ece9fdae:[function(){return t.e(2677).then(t.bind(t,81862))},"@site/../docs/general/community.md",81862],ed3409b3:[function(){return Promise.all([t.e(5424),t.e(8609)]).then(t.bind(t,64539))},"@site/../docs/learn/learn-guides-bounties.md",64539],eef3f1dd:[function(){return Promise.all([t.e(5424),t.e(4097)]).then(t.bind(t,7522))},"@site/../docs/learn/learn-guides-treasury.md",7522],f0855ff9:[function(){return t.e(4909).then(t.bind(t,9012))},"@site/../docs/general/kusama/kusama-index.md",9012],f0ff685a:[function(){return Promise.all([t.e(5424),t.e(8191)]).then(t.bind(t,56870))},"@site/../docs/learn/learn-guides-accounts-proxy.md",56870],f137ce68:[function(){return Promise.all([t.e(532),t.e(3620)]).then(t.bind(t,2137))},"@site/../docs/learn/learn-xcm-instructions.md",2137],f14351c1:[function(){return t.e(3356).then(t.t.bind(t,2551,19))},"~docs/default/category-docs-docs-category-components-a98.json",2551],f1585bfb:[function(){return t.e(3665).then(t.bind(t,43507))},"@site/../docs/learn/xcm/quickstart/summary.md",43507],f189ca9f:[function(){return t.e(192).then(t.bind(t,20458))},"@site/../docs/learn/learn-spree.md",20458],f2521980:[function(){return Promise.all([t.e(5424),t.e(6689)]).then(t.bind(t,24595))},"@site/../docs/general/getting-started.md",24595],f2c21b54:[function(){return t.e(4363).then(t.bind(t,3011))},"@site/../docs/build/build-storage.md",3011],f3027c84:[function(){return t.e(2242).then(t.bind(t,3361))},"@site/../docs/general/polkadotjs-ui.md",3361],f359a251:[function(){return t.e(1239).then(t.bind(t,15759))},"@site/../docs/maintain/maintain-endpoints.md",15759],f3bde756:[function(){return t.e(2704).then(t.bind(t,84741))},"@site/../docs/maintain/maintain-bootnode.md",84741],f4130007:[function(){return t.e(2665).then(t.bind(t,86975))},"@site/../docs/general/wallets-and-extensions.md",86975],f41c4e9d:[function(){return t.e(4666).then(t.bind(t,32036))},"@site/../docs/learn/learn-xcm-pallet.md",32036],f4200fe5:[function(){return Promise.all([t.e(532),t.e(2909)]).then(t.bind(t,31101))},"@site/../docs/maintain/maintain-sync.md",31101],f44679e7:[function(){return t.e(1451).then(t.bind(t,70602))},"@site/../docs/general/governance-apps.md",70602],f44ed8f8:[function(){return t.e(7211).then(t.bind(t,71294))},"@site/../docs/build/build-hrmp-channels.md",71294],f47489cd:[function(){return t.e(1966).then(t.bind(t,11611))},"@site/../docs/learn/learn-runtime-upgrades.md",11611],f4fb6e9c:[function(){return t.e(1).then(t.t.bind(t,40132,19))},"~docs/default/category-docs-docs-category-a-journey-through-xcm-9f8.json",40132],f52abf29:[function(){return t.e(576).then(t.bind(t,20969))},"@site/../docs/general/decentralized-futures.md",20969],f7191335:[function(){return t.e(1686).then(t.t.bind(t,1691,19))},"~docs/default/category-docs-docs-category-general-cbc.json",1691],f750c690:[function(){return t.e(1419).then(t.bind(t,91251))},"@site/../docs/learn/learn-nft-pallets.md",91251],f7acb151:[function(){return Promise.all([t.e(5424),t.e(5483)]).then(t.bind(t,49736))},"@site/../docs/learn/learn-guides-assets-create.md",49736],f8518919:[function(){return t.e(3945).then(t.bind(t,51094))},"@site/../docs/general/web3-and-polkadot.md",51094],f90fa732:[function(){return t.e(1062).then(t.bind(t,71358))},"@site/../docs/build/build-data.md",71358],f95cee6f:[function(){return t.e(9548).then(t.bind(t,24195))},"@site/../docs/maintain/maintain-guides-best-practices-to-avoid-slashes.md",24195],fa343ad1:[function(){return t.e(1678).then(t.bind(t,42352))},"@site/../docs/learn/xcm/fundamentals/weight_and_fees.md",42352],fabebe44:[function(){return t.e(1288).then(t.bind(t,38993))},"@site/../docs/general/dev-heroes.md",38993],fbf58567:[function(){return t.e(5989).then(t.t.bind(t,46599,19))},"~docs/default/category-docs-docs-category-xcm-documentation-30c.json",46599],fda65b2b:[function(){return t.e(1975).then(t.bind(t,30742))},"@site/../docs/learn/learn-guides-asset-conversion.md",30742],fea93377:[function(){return Promise.all([t.e(5424),t.e(4674)]).then(t.bind(t,26029))},"@site/../docs/maintain/maintain-guides-validator-payout.md",26029],fecdcc34:[function(){return t.e(8034).then(t.bind(t,26269))},"@site/../docs/learn/xcm/journey/version.md",26269],feea648c:[function(){return t.e(7061).then(t.bind(t,39966))},"@site/../docs/learn/learn-xcvm.md",39966],ff6596ea:[function(){return Promise.all([t.e(5424),t.e(3842)]).then(t.bind(t,25398))},"@site/../docs/learn/learn-nominator.md",25398],ffd76171:[function(){return Promise.all([t.e(532),t.e(8236)]).then(t.bind(t,88559))},"@site/../docs/maintain/maintain-index.md",88559],ffe9c3c9:[function(){return Promise.all([t.e(5424),t.e(1529)]).then(t.bind(t,64204))},"@site/../docs/learn/learn-DOT.md",64204]};function l(e){var n=e.error,t=e.retry,a=e.pastDelay;return n?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(n)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:t},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=t(99670),d=t(30226);function f(e,n){if("*"===e)return i()({loading:l,loader:function(){return t.e(4972).then(t.bind(t,4972))},modules:["@theme/NotFound"],webpack:function(){return[4972]},render:function(e,n){var t=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(t,n))}});var o=s[e+"-"+n],f={},p=[],m=[],h=(0,u.Z)(o);return Object.entries(h).forEach((function(e){var n=e[0],t=e[1],r=c[t];r&&(f[n]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:l,loader:f,modules:p,webpack:function(){return m},render:function(n,t){var i=JSON.parse(JSON.stringify(o));Object.entries(n).forEach((function(n){var t=n[0],r=n[1],a=r.default;if(!a)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((function(e){return"default"!==e})).forEach((function(e){a[e]=r[e]}));var o=i,s=t.split(".");s.slice(0,-1).forEach((function(e){o=o[e]})),o[s[s.length-1]]=a}));var s=i.__comp;delete i.__comp;var c=i.__context;return delete i.__context,r.createElement(d.z,{value:c},r.createElement(s,(0,a.Z)({},i,t)))}})}const p=[{path:"/search",component:f("/search","740"),exact:!0},{path:"/docs",component:f("/docs","158"),routes:[{path:"/docs/alpha-program",component:f("/docs/alpha-program","34d"),exact:!0,sidebar:"docs"},{path:"/docs/ambassadors",component:f("/docs/ambassadors","afd"),exact:!0,sidebar:"docs"},{path:"/docs/apps-index",component:f("/docs/apps-index","f93"),exact:!0,sidebar:"docs"},{path:"/docs/bug-bounty",component:f("/docs/bug-bounty","bab"),exact:!0,sidebar:"docs"},{path:"/docs/build-archive-index",component:f("/docs/build-archive-index","747"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-index",component:f("/docs/build-client-index","150"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-side",component:f("/docs/build-client-side","6ca"),exact:!0,sidebar:"docs"},{path:"/docs/build-dapp",component:f("/docs/build-dapp","dcc"),exact:!0},{path:"/docs/build-data",component:f("/docs/build-data","c63"),exact:!0,sidebar:"docs"},{path:"/docs/build-guide",component:f("/docs/build-guide","4c0"),exact:!0,sidebar:"docs"},{path:"/docs/build-hackathon",component:f("/docs/build-hackathon","170"),exact:!0,sidebar:"docs"},{path:"/docs/build-hrmp-channels",component:f("/docs/build-hrmp-channels","9d7"),exact:!0,sidebar:"docs"},{path:"/docs/build-index",component:f("/docs/build-index","fd5"),exact:!0},{path:"/docs/build-integrate-assets",component:f("/docs/build-integrate-assets","521"),exact:!0,sidebar:"docs"},{path:"/docs/build-integration",component:f("/docs/build-integration","0e9"),exact:!0,sidebar:"docs"},{path:"/docs/build-light-clients",component:f("/docs/build-light-clients","522"),exact:!0,sidebar:"docs"},{path:"/docs/build-network-overview",component:f("/docs/build-network-overview","92c"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-interaction",component:f("/docs/build-node-interaction","26d"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-management",component:f("/docs/build-node-management","033"),exact:!0,sidebar:"docs"},{path:"/docs/build-open-source",component:f("/docs/build-open-source","d93"),exact:!0,sidebar:"docs"},{path:"/docs/build-oracle",component:f("/docs/build-oracle","b28"),exact:!0},{path:"/docs/build-pdk",component:f("/docs/build-pdk","841"),exact:!0,sidebar:"docs"},{path:"/docs/build-protocol-index",component:f("/docs/build-protocol-index","267"),exact:!0,sidebar:"docs"},{path:"/docs/build-protocol-info",component:f("/docs/build-protocol-info","d4a"),exact:!0,sidebar:"docs"},{path:"/docs/build-smart-contracts",component:f("/docs/build-smart-contracts","4b8"),exact:!0,sidebar:"docs"},{path:"/docs/build-storage",component:f("/docs/build-storage","244"),exact:!0},{path:"/docs/build-tools-index",component:f("/docs/build-tools-index","410"),exact:!0,sidebar:"docs"},{path:"/docs/build-transaction-construction",component:f("/docs/build-transaction-construction","d68"),exact:!0,sidebar:"docs"},{path:"/docs/community",component:f("/docs/community","b89"),exact:!0,sidebar:"docs"},{path:"/docs/community-index",component:f("/docs/community-index","c5c"),exact:!0,sidebar:"docs"},{path:"/docs/contributing",component:f("/docs/contributing","677"),exact:!0,sidebar:"docs"},{path:"/docs/contributors",component:f("/docs/contributors","1e6"),exact:!0,sidebar:"docs"},{path:"/docs/dashboards-index",component:f("/docs/dashboards-index","d3f"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-futures",component:f("/docs/decentralized-futures","db1"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-voices",component:f("/docs/decentralized-voices","07a"),exact:!0,sidebar:"docs"},{path:"/docs/dev-heroes",component:f("/docs/dev-heroes","4e8"),exact:!0,sidebar:"docs"},{path:"/docs/explore-index",component:f("/docs/explore-index","37d"),exact:!0,sidebar:"docs"},{path:"/docs/faq",component:f("/docs/faq","e21"),exact:!0,sidebar:"docs"},{path:"/docs/general-index",component:f("/docs/general-index","84d"),exact:!0,sidebar:"docs"},{path:"/docs/getting-started",component:f("/docs/getting-started","6f8"),exact:!0,sidebar:"docs"},{path:"/docs/glossary",component:f("/docs/glossary","5f2"),exact:!0,sidebar:"docs"},{path:"/docs/governance-apps",component:f("/docs/governance-apps","cc0"),exact:!0,sidebar:"docs"},{path:"/docs/grants",component:f("/docs/grants","240"),exact:!0,sidebar:"docs"},{path:"/docs/how-to-dyor",component:f("/docs/how-to-dyor","3d9"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-adversarial-cheatsheet",component:f("/docs/kusama-adversarial-cheatsheet","ff3"),exact:!0},{path:"/docs/kusama-bug-bounty",component:f("/docs/kusama-bug-bounty","c07"),exact:!0},{path:"/docs/kusama-claims",component:f("/docs/kusama-claims","b28"),exact:!0},{path:"/docs/kusama-coc",component:f("/docs/kusama-coc","302"),exact:!0},{path:"/docs/kusama-community",component:f("/docs/kusama-community","c98"),exact:!0},{path:"/docs/kusama-getting-started",component:f("/docs/kusama-getting-started","bd7"),exact:!0},{path:"/docs/kusama-index",component:f("/docs/kusama-index","eeb"),exact:!0},{path:"/docs/kusama-parameters",component:f("/docs/kusama-parameters","a62"),exact:!0},{path:"/docs/kusama-social-recovery",component:f("/docs/kusama-social-recovery","62f"),exact:!0},{path:"/docs/kusama-timeline",component:f("/docs/kusama-timeline","288"),exact:!0},{path:"/docs/learn-account-abstraction",component:f("/docs/learn-account-abstraction","962"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-advanced",component:f("/docs/learn-account-advanced","c5d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-multisig",component:f("/docs/learn-account-multisig","f7c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-accounts",component:f("/docs/learn-accounts","9c2"),exact:!0,sidebar:"docs"},{path:"/docs/learn-advanced-index",component:f("/docs/learn-advanced-index","66f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime",component:f("/docs/learn-agile-coretime","c36"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime-index",component:f("/docs/learn-agile-coretime-index","de8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-architecture",component:f("/docs/learn-architecture","fa2"),exact:!0,sidebar:"docs"},{path:"/docs/learn-archive",component:f("/docs/learn-archive","668"),exact:!0,sidebar:"docs"},{path:"/docs/learn-asset-conversion-assethub",component:f("/docs/learn-asset-conversion-assethub","396"),exact:!0,sidebar:"docs"},{path:"/docs/learn-assets",component:f("/docs/learn-assets","71c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-assets-index",component:f("/docs/learn-assets-index","980"),exact:!0,sidebar:"docs"},{path:"/docs/learn-async-backing",component:f("/docs/learn-async-backing","8d8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-auction",component:f("/docs/learn-auction","5f7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-basics-index",component:f("/docs/learn-basics-index","90b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-bridge-hub",component:f("/docs/learn-bridge-hub","2aa"),exact:!0,sidebar:"docs"},{path:"/docs/learn-bridges",component:f("/docs/learn-bridges","fc1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-collator",component:f("/docs/learn-collator","8d9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons",component:f("/docs/learn-comparisons","ef1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-avalanche",component:f("/docs/learn-comparisons-avalanche","6f0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-cosmos",component:f("/docs/learn-comparisons-cosmos","72c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-ethereum-2",component:f("/docs/learn-comparisons-ethereum-2","af0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-index",component:f("/docs/learn-comparisons-index","3a8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-kusama",component:f("/docs/learn-comparisons-kusama","de0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-rollups",component:f("/docs/learn-comparisons-rollups","656"),exact:!0,sidebar:"docs"},{path:"/docs/learn-components-index",component:f("/docs/learn-components-index","565"),exact:!0,sidebar:"docs"},{path:"/docs/learn-consensus",component:f("/docs/learn-consensus","c72"),exact:!0,sidebar:"docs"},{path:"/docs/learn-crowdloans",component:f("/docs/learn-crowdloans","98f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-cryptography",component:f("/docs/learn-cryptography","3de"),exact:!0,sidebar:"docs"},{path:"/docs/learn-DOT",component:f("/docs/learn-DOT","913"),exact:!0,sidebar:"docs"},{path:"/docs/learn-dot-ksm-bridge",component:f("/docs/learn-dot-ksm-bridge","d07"),exact:!0,sidebar:"docs"},{path:"/docs/learn-elastic-scaling",component:f("/docs/learn-elastic-scaling","9e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-future-implementations-index",component:f("/docs/learn-future-implementations-index","d18"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts",component:f("/docs/learn-guides-accounts","e6d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-multisig",component:f("/docs/learn-guides-accounts-multisig","701"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy",component:f("/docs/learn-guides-accounts-proxy","49c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy-pure",component:f("/docs/learn-guides-accounts-proxy-pure","295"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-asset-conversion",component:f("/docs/learn-guides-asset-conversion","fc7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets",component:f("/docs/learn-guides-assets","193"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets-create",component:f("/docs/learn-guides-assets-create","dd9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets-ledger",component:f("/docs/learn-guides-assets-ledger","1f0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bounties",component:f("/docs/learn-guides-bounties","2dc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bridges",component:f("/docs/learn-guides-bridges","b66"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-marketplaces",component:f("/docs/learn-guides-coretime-marketplaces","295"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-parachains",component:f("/docs/learn-guides-coretime-parachains","1f1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-dot-ksm-bridge",component:f("/docs/learn-guides-dot-ksm-bridge","318"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-identity",component:f("/docs/learn-guides-identity","9f1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-ledger",component:f("/docs/learn-guides-ledger","a52"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-nominator",component:f("/docs/learn-guides-nominator","292"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-polkadot-opengov",component:f("/docs/learn-guides-polkadot-opengov","097"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking",component:f("/docs/learn-guides-staking","e1a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking-pools",component:f("/docs/learn-guides-staking-pools","8e8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-transfers",component:f("/docs/learn-guides-transfers","d83"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-treasury",component:f("/docs/learn-guides-treasury","45a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-vault",component:f("/docs/learn-guides-vault","407"),exact:!0,sidebar:"docs"},{path:"/docs/learn-hyperbridge",component:f("/docs/learn-hyperbridge","315"),exact:!0,sidebar:"docs"},{path:"/docs/learn-identity",component:f("/docs/learn-identity","414"),exact:!0,sidebar:"docs"},{path:"/docs/learn-implementations",component:f("/docs/learn-implementations","a5b"),exact:!0},{path:"/docs/learn-index",component:f("/docs/learn-index","706"),exact:!0,sidebar:"docs"},{path:"/docs/learn-inflation",component:f("/docs/learn-inflation","5ea"),exact:!0,sidebar:"docs"},{path:"/docs/learn-jam",component:f("/docs/learn-jam","f0f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-jam-chain",component:f("/docs/learn-jam-chain","96d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-jam-faq",component:f("/docs/learn-jam-faq","237"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft",component:f("/docs/learn-nft","4b1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-pallets",component:f("/docs/learn-nft-pallets","8ea"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-projects",component:f("/docs/learn-nft-projects","18f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nomination-pools",component:f("/docs/learn-nomination-pools","964"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nominator",component:f("/docs/learn-nominator","5fc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains",component:f("/docs/learn-parachains","0d1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-faq",component:f("/docs/learn-parachains-faq","eed"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-index",component:f("/docs/learn-parachains-index","4e5"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-protocol",component:f("/docs/learn-parachains-protocol","f2b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parathreads",component:f("/docs/learn-parathreads","03d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-participants-index",component:f("/docs/learn-participants-index","b1a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-phragmen",component:f("/docs/learn-phragmen","c5c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-host",component:f("/docs/learn-polkadot-host","48e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-js-guides",component:f("/docs/learn-polkadot-js-guides","69c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov",component:f("/docs/learn-polkadot-opengov","ecc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-index",component:f("/docs/learn-polkadot-opengov-index","2be"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-origins",component:f("/docs/learn-polkadot-opengov-origins","3dc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-treasury",component:f("/docs/learn-polkadot-opengov-treasury","582"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-technical-fellowship",component:f("/docs/learn-polkadot-technical-fellowship","7b7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadotjs",component:f("/docs/learn-polkadotjs","1e5"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies",component:f("/docs/learn-proxies","92e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies-pure",component:f("/docs/learn-proxies-pure","b02"),exact:!0,sidebar:"docs"},{path:"/docs/learn-runtime-upgrades",component:f("/docs/learn-runtime-upgrades","8e7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-sassafras",component:f("/docs/learn-sassafras","11d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-scams",component:f("/docs/learn-scams","f1c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-spree",component:f("/docs/learn-spree","14e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking",component:f("/docs/learn-staking","183"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-advanced",component:f("/docs/learn-staking-advanced","089"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-index",component:f("/docs/learn-staking-index","5df"),exact:!0,sidebar:"docs"},{path:"/docs/learn-system-chains",component:f("/docs/learn-system-chains","29d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-teleport",component:f("/docs/learn-teleport","814"),exact:!0,sidebar:"docs"},{path:"/docs/learn-transaction-fees",component:f("/docs/learn-transaction-fees","42e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-transactions",component:f("/docs/learn-transactions","1f1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-validator",component:f("/docs/learn-validator","cae"),exact:!0,sidebar:"docs"},{path:"/docs/learn-video-tutorials",component:f("/docs/learn-video-tutorials","a9e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-wasm",component:f("/docs/learn-wasm","16e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm",component:f("/docs/learn-xcm","f30"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-index",component:f("/docs/learn-xcm-index","90a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-instructions",component:f("/docs/learn-xcm-instructions","82b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-pallet",component:f("/docs/learn-xcm-pallet","c28"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-transport",component:f("/docs/learn-xcm-transport","b2a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-usecases",component:f("/docs/learn-xcm-usecases","4fd"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcvm",component:f("/docs/learn-xcvm","db4"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-controller",component:f("/docs/learn/learn-controller","67e"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-governance",component:f("/docs/learn/learn-governance","1cb"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-launch",component:f("/docs/learn/learn-launch","6ec"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-redenomination",component:f("/docs/learn/learn-redenomination","136"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-treasury",component:f("/docs/learn/learn-treasury","3dc"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm",component:f("/docs/learn/xcm","b7a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/config-deep-dive",component:f("/docs/learn/xcm/config-deep-dive","e68"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals",component:f("/docs/learn/xcm/fundamentals","e35"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-fees",component:f("/docs/learn/xcm/fundamentals-fees","80a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-multiasset",component:f("/docs/learn/xcm/fundamentals-multiasset","ead"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-summary",component:f("/docs/learn/xcm/fundamentals-summary","1e3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-xcvm",component:f("/docs/learn/xcm/fundamentals-xcvm","752"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation",component:f("/docs/learn/xcm/fundamentals/multilocation","f7c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-example",component:f("/docs/learn/xcm/fundamentals/multilocation-example","9c5"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-junctions",component:f("/docs/learn/xcm/fundamentals/multilocation-junctions","776"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-summary",component:f("/docs/learn/xcm/fundamentals/multilocation-summary","6f7"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/introduction",component:f("/docs/learn/xcm/introduction","e34"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey",component:f("/docs/learn/xcm/journey","ac5"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-assets",component:f("/docs/learn/xcm/journey-assets","f26"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-channels",component:f("/docs/learn/xcm/journey-channels","ae8"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-expectations",component:f("/docs/learn/xcm/journey-expectations","a11"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-fees",component:f("/docs/learn/xcm/journey-fees","1e0"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-holding",component:f("/docs/learn/xcm/journey-holding","914"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-locks",component:f("/docs/learn/xcm/journey-locks","f94"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-origin",component:f("/docs/learn/xcm/journey-origin","4f3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-queries",component:f("/docs/learn/xcm/journey-queries","3fb"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-register",component:f("/docs/learn/xcm/journey-register","e9c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-summary",component:f("/docs/learn/xcm/journey-summary","2a4"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-transact",component:f("/docs/learn/xcm/journey-transact","283"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-version",component:f("/docs/learn/xcm/journey-version","c0d"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers",component:f("/docs/learn/xcm/journey/transfers","454"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-reserve",component:f("/docs/learn/xcm/journey/transfers-reserve","5ce"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-summary",component:f("/docs/learn/xcm/journey/transfers-summary","e08"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-teleport",component:f("/docs/learn/xcm/journey/transfers-teleport","85b"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview",component:f("/docs/learn/xcm/overview","c0f"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-architecture",component:f("/docs/learn/xcm/overview-architecture","7ec"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-format",component:f("/docs/learn/xcm/overview-format","d5c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-intro",component:f("/docs/learn/xcm/overview-intro","529"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-summary",component:f("/docs/learn/xcm/overview-summary","ffd"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-xcvm",component:f("/docs/learn/xcm/overview-xcvm","9ad"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart",component:f("/docs/learn/xcm/quickstart","c96"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-first-look",component:f("/docs/learn/xcm/quickstart-first-look","c89"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-simulator",component:f("/docs/learn/xcm/quickstart-simulator","d3a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-summary",component:f("/docs/learn/xcm/quickstart-summary","e79"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-glossary",component:f("/docs/learn/xcm/reference-glossary","e83"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-xcvm-registers",component:f("/docs/learn/xcm/reference-xcvm-registers","ceb"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/references",component:f("/docs/learn/xcm/references","103"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/testing",component:f("/docs/learn/xcm/testing","0a7"),exact:!0,sidebar:"docs"},{path:"/docs/ledger",component:f("/docs/ledger","50e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-archive",component:f("/docs/maintain-archive","779"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-bootnode",component:f("/docs/maintain-bootnode","294"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-collator-index",component:f("/docs/maintain-collator-index","5ad"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-endpoints",component:f("/docs/maintain-endpoints","31b"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-errors",component:f("/docs/maintain-errors","92e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-async-backing",component:f("/docs/maintain-guides-async-backing","232"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-avoid-slashing",component:f("/docs/maintain-guides-avoid-slashing","578"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-chill",component:f("/docs/maintain-guides-how-to-chill","668"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-monitor-your-node",component:f("/docs/maintain-guides-how-to-monitor-your-node","bdd"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-stop-validating",component:f("/docs/maintain-guides-how-to-stop-validating","993"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-systemd",component:f("/docs/maintain-guides-how-to-systemd","3e8"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-upgrade",component:f("/docs/maintain-guides-how-to-upgrade","f9d"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-validate-kusama",component:f("/docs/maintain-guides-how-to-validate-kusama","eb0"),exact:!0},{path:"/docs/maintain-guides-how-to-validate-polkadot",component:f("/docs/maintain-guides-how-to-validate-polkadot","e43"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-secure-validator",component:f("/docs/maintain-guides-secure-validator","310"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-society-kusama",component:f("/docs/maintain-guides-society-kusama","6d3"),exact:!0},{path:"/docs/maintain-guides-validator-community",component:f("/docs/maintain-guides-validator-community","18d"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-validator-payout",component:f("/docs/maintain-guides-validator-payout","712"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-index",component:f("/docs/maintain-index","d6e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-networks",component:f("/docs/maintain-networks","234"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-node-index",component:f("/docs/maintain-node-index","5c6"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-polkadot-parameters",component:f("/docs/maintain-polkadot-parameters","5d7"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-rpc",component:f("/docs/maintain-rpc","f10"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-sync",component:f("/docs/maintain-sync","fd0"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-validator-index",component:f("/docs/maintain-validator-index","ae9"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-wss",component:f("/docs/maintain-wss","7f4"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-democracy",component:f("/docs/maintain/maintain-guides-democracy","806"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-join-council",component:f("/docs/maintain/maintain-guides-how-to-join-council","590"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-vote-councillor",component:f("/docs/maintain/maintain-guides-how-to-vote-councillor","ebd"),exact:!0,sidebar:"docs"},{path:"/docs/metadata",component:f("/docs/metadata","ba9"),exact:!0,sidebar:"docs"},{path:"/docs/multisig-apps",component:f("/docs/multisig-apps","72e"),exact:!0,sidebar:"docs"},{path:"/docs/parachains-apps",component:f("/docs/parachains-apps","196"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-direction",component:f("/docs/polkadot-direction","2f6"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-v1",component:f("/docs/polkadot-v1","770"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vault",component:f("/docs/polkadot-vault","d52"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vision-index",component:f("/docs/polkadot-vision-index","3c3"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs",component:f("/docs/polkadotjs","516"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs-ui",component:f("/docs/polkadotjs-ui","884"),exact:!0,sidebar:"docs"},{path:"/docs/programs-index",component:f("/docs/programs-index","98f"),exact:!0,sidebar:"docs"},{path:"/docs/research",component:f("/docs/research","5f7"),exact:!0,sidebar:"docs"},{path:"/docs/staking-apps",component:f("/docs/staking-apps","ca0"),exact:!0,sidebar:"docs"},{path:"/docs/staking-dashboard",component:f("/docs/staking-dashboard","a9a"),exact:!0,sidebar:"docs"},{path:"/docs/start-building",component:f("/docs/start-building","16a"),exact:!0,sidebar:"docs"},{path:"/docs/stay-safe-index",component:f("/docs/stay-safe-index","580"),exact:!0,sidebar:"docs"},{path:"/docs/thousand-contributors",component:f("/docs/thousand-contributors","9ba"),exact:!0,sidebar:"docs"},{path:"/docs/thousand-validators",component:f("/docs/thousand-validators","053"),exact:!0,sidebar:"docs"},{path:"/docs/transaction-attacks",component:f("/docs/transaction-attacks","937"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-and-extensions",component:f("/docs/wallets-and-extensions","e5f"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-index",component:f("/docs/wallets-index","656"),exact:!0,sidebar:"docs"},{path:"/docs/web3-and-polkadot",component:f("/docs/web3-and-polkadot","85e"),exact:!0,sidebar:"docs"}]},{path:"/",component:f("/","7cb"),exact:!0},{path:"*",component:f("*")}]},94184:(e,n)=>{var t;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],n=0;n{"use strict";function r(e){var n,t,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;na});const a=function(){for(var e,n,t=0,a="";t{"use strict";t.d(n,{lX:()=>x,q_:()=>C,ob:()=>p,PP:()=>P,Ep:()=>f});var r=t(87462);function a(e){return"/"===e.charAt(0)}function o(e,n){for(var t=n,r=t+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!l)for(;d--;d)i.unshift("..");!l||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return t&&"/"!==m.substr(-1)&&(m+="/"),m};var s=t(38776);function c(e){return"/"===e.charAt(0)?e:"/"+e}function l(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,n){return function(e,n){return 0===e.toLowerCase().indexOf(n.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(n.length))}(e,n)?e.substr(n.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var n=e.pathname,t=e.search,r=e.hash,a=n||"/";return t&&"?"!==t&&(a+="?"===t.charAt(0)?t:"?"+t),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,n,t,a){var o;"string"==typeof e?(o=function(e){var n=e||"/",t="",r="",a=n.indexOf("#");-1!==a&&(r=n.substr(a),n=n.substr(0,a));var o=n.indexOf("?");return-1!==o&&(t=n.substr(o),n=n.substr(0,o)),{pathname:n,search:"?"===t?"":t,hash:"#"===r?"":r}}(e),o.state=n):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==n&&void 0===o.state&&(o.state=n));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return t&&(o.key=t),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var n=[];return{setPrompt:function(n){return e=n,function(){e===n&&(e=null)}},confirmTransitionTo:function(n,t,r,a){if(null!=e){var o="function"==typeof e?e(n,t):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var t=!0;function r(){t&&e.apply(void 0,arguments)}return n.push(r),function(){t=!1,n=n.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,t=new Array(e),r=0;rn?t.splice(n,t.length-n,a):t.push(a),d({action:r,location:a,index:n,entries:t})}}))},replace:function(e,n){var r="REPLACE",a=p(e,n,h(),x.location);u.confirmTransitionTo(a,r,t,(function(e){e&&(x.entries[x.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var n=x.index+e;return n>=0&&n{"use strict";var r=t(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function c(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(n,t,r){if("string"!=typeof t){if(m){var a=p(t);a&&a!==m&&e(n,a,r)}var i=u(t);d&&(i=i.concat(d(t)));for(var s=c(n),h=c(t),g=0;g{"use strict";e.exports=function(e,n,t,r,a,o,i,s){if(!e){var c;if(void 0===n)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[t,r,a,o,i,s],u=0;(c=new Error(n.replace(/%s/g,(function(){return l[u++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},32497:(e,n,t)=>{"use strict";t.r(n)},32104:(e,n,t)=>{"use strict";t.r(n)},39604:(e,n,t)=>{"use strict";t.r(n)},70378:(e,n,t)=>{"use strict";t.r(n)},74865:function(e,n,t){var r,a;r=function(){var e,n,t={version:"0.2.0"},r=t.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,n,t){return et?t:e}function o(e){return 100*(-1+e)}function i(e,n,t){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+n+"ms "+t,a}t.configure=function(e){var n,t;for(n in e)void 0!==(t=e[n])&&e.hasOwnProperty(n)&&(r[n]=t);return this},t.status=null,t.set=function(e){var n=t.isStarted();e=a(e,r.minimum,1),t.status=1===e?null:e;var o=t.render(!n),l=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(n){""===r.positionUsing&&(r.positionUsing=t.getPositioningCSS()),c(l,i(e,u,d)),1===e?(c(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){c(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){t.remove(),n()}),u)}),u)):setTimeout(n,u)})),this},t.isStarted=function(){return"number"==typeof t.status},t.start=function(){t.status||t.set(0);var e=function(){setTimeout((function(){t.status&&(t.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},t.done=function(e){return e||t.status?t.inc(.3+.5*Math.random()).set(1):this},t.inc=function(e){var n=t.status;return n?("number"!=typeof e&&(e=(1-n)*a(Math.random()*n,.1,.95)),n=a(n+e,0,.994),t.set(n)):t.start()},t.trickle=function(){return t.inc(Math.random()*r.trickleRate)},e=0,n=0,t.promise=function(r){return r&&"resolved"!==r.state()?(0===n&&t.start(),e++,n++,r.always((function(){0==--n?(e=0,t.done()):t.set((e-n)/e)})),this):this},t.render=function(e){if(t.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var n=document.createElement("div");n.id="nprogress",n.innerHTML=r.template;var a,i=n.querySelector(r.barSelector),s=e?"-100":o(t.status||0),l=document.querySelector(r.parent);return c(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=n.querySelector(r.spinnerSelector))&&p(a),l!=document.body&&u(l,"nprogress-custom-parent"),l.appendChild(n),n},t.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},t.isRendered=function(){return!!document.getElementById("nprogress")},t.getPositioningCSS=function(){var e=document.body.style,n="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return n+"Perspective"in e?"translate3d":n+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function n(){var t=e.shift();t&&t(n)}return function(t){e.push(t),1==e.length&&n()}}(),c=function(){var e=["Webkit","O","Moz","ms"],n={};function t(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,n){return n.toUpperCase()}))}function r(n){var t=document.body.style;if(n in t)return n;for(var r,a=e.length,o=n.charAt(0).toUpperCase()+n.slice(1);a--;)if((r=e[a]+o)in t)return r;return n}function a(e){return e=t(e),n[e]||(n[e]=r(e))}function o(e,n,t){n=a(n),e.style[n]=t}return function(e,n){var t,r,a=arguments;if(2==a.length)for(t in n)void 0!==(r=n[t])&&n.hasOwnProperty(t)&&o(e,t,r);else o(e,a[1],a[2])}}();function l(e,n){return("string"==typeof e?e:f(e)).indexOf(" "+n+" ")>=0}function u(e,n){var t=f(e),r=t+n;l(t,n)||(e.className=r.substring(1))}function d(e,n){var t,r=f(e);l(e,n)&&(t=r.replace(" "+n+" "," "),e.className=t.substring(1,t.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return t},void 0===(a="function"==typeof r?r.call(n,t,n,e):r)||(e.exports=a)},27418:e=>{"use strict";var n=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var n={},t=0;t<10;t++)n["_"+String.fromCharCode(t)]=t;if("0123456789"!==Object.getOwnPropertyNames(n).map((function(e){return n[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),c=1;c{!function(e){for(var n=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,t=0;t<2;t++)n=n.replace(//g,(function(){return n}));n=n.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+n),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism)},54294:(e,n,t)=>{var r={"./prism-rust":70767};function a(e){var n=o(e);return t(n)}function o(e){if(!t.o(r,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=54294},92703:(e,n,t)=>{"use strict";var r=t(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,n,t,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:o,resetWarningCache:a};return t.PropTypes=t,t}},45697:(e,n,t)=>{e.exports=t(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},31555:(e,n,t)=>{"use strict";t.d(n,{Z:()=>l});var r=t(94184),a=t.n(r),o=t(67294),i=t(76792),s=t(85893);const c=o.forwardRef(((e,n)=>{const[{className:t,...r},{as:o="div",bsPrefix:c,spans:l}]=function({as:e,bsPrefix:n,className:t,...r}){n=(0,i.vE)(n,"col");const o=(0,i.pi)(),s=(0,i.zG)(),c=[],l=[];return o.forEach((e=>{const t=r[e];let a,o,i;delete r[e],"object"==typeof t&&null!=t?({span:a,offset:o,order:i}=t):a=t;const u=e!==s?`-${e}`:"";a&&c.push(!0===a?`${n}${u}`:`${n}${u}-${a}`),null!=i&&l.push(`order${u}-${i}`),null!=o&&l.push(`offset${u}-${o}`)})),[{...r,className:a()(t,...c,...l)},{as:e,bsPrefix:n,spans:c}]}(e);return(0,s.jsx)(o,{...r,ref:n,className:a()(t,!l.length&&c)})}));c.displayName="Col";const l=c},10682:(e,n,t)=>{"use strict";t.d(n,{Z:()=>l});var r=t(94184),a=t.n(r),o=t(67294),i=t(76792),s=t(85893);const c=o.forwardRef((({bsPrefix:e,fluid:n=!1,as:t="div",className:r,...o},c)=>{const l=(0,i.vE)(e,"container"),u="string"==typeof n?`-${n}`:"-fluid";return(0,s.jsx)(t,{ref:c,...o,className:a()(r,n?`${l}${u}`:l)})}));c.displayName="Container";const l=c},34051:(e,n,t)=>{"use strict";t.d(n,{Z:()=>l});var r=t(94184),a=t.n(r),o=t(67294),i=t(76792),s=t(85893);const c=o.forwardRef((({bsPrefix:e,className:n,as:t="div",...r},o)=>{const c=(0,i.vE)(e,"row"),l=(0,i.pi)(),u=(0,i.zG)(),d=`${c}-cols`,f=[];return l.forEach((e=>{const n=r[e];let t;delete r[e],null!=n&&"object"==typeof n?({cols:t}=n):t=n;const a=e!==u?`-${e}`:"";null!=t&&f.push(`${d}${a}-${t}`)})),(0,s.jsx)(t,{ref:o,...r,className:a()(n,c,...f)})}));c.displayName="Row";const l=c},76792:(e,n,t)=>{"use strict";t.d(n,{pi:()=>l,vE:()=>c,zG:()=>u});var r=t(67294);t(85893);const a=["xxl","xl","lg","md","sm","xs"],o=r.createContext({prefixes:{},breakpoints:a,minBreakpoint:"xs"}),{Consumer:i,Provider:s}=o;function c(e,n){const{prefixes:t}=(0,r.useContext)(o);return e||t[n]||n}function l(){const{breakpoints:e}=(0,r.useContext)(o);return e}function u(){const{minBreakpoint:e}=(0,r.useContext)(o);return e}},64448:(e,n,t)=>{"use strict";var r=t(67294),a=t(27418),o=t(63840);function i(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t