diff --git a/404.html b/404.html index f1ce42ee3..b8b77bff9 100644 --- a/404.html +++ b/404.html @@ -6,7 +6,7 @@ Polkadot Protocol Specification - + diff --git a/Implementation Guide.html b/Implementation Guide.html index 4f15425f1..0d6ec63d7 100644 --- a/Implementation Guide.html +++ b/Implementation Guide.html @@ -6,7 +6,7 @@ Implementation Guide | Polkadot Protocol Specification - + diff --git a/Implementation Guide/faq.html b/Implementation Guide/faq.html index a4ae30c0e..6e2c9b22d 100644 --- a/Implementation Guide/faq.html +++ b/Implementation Guide/faq.html @@ -6,7 +6,7 @@ FAQ | Polkadot Protocol Specification - + diff --git a/Polkadot_Protocol_Spec.pdf b/Polkadot_Protocol_Spec.pdf index aead481e7..32112fe27 100644 Binary files a/Polkadot_Protocol_Spec.pdf and b/Polkadot_Protocol_Spec.pdf differ diff --git a/Support Docs/privacy_policy.html b/Support Docs/privacy_policy.html index 9e202669c..e6706458e 100644 --- a/Support Docs/privacy_policy.html +++ b/Support Docs/privacy_policy.html @@ -6,7 +6,7 @@ Privacy Policy | Polkadot Protocol Specification - + diff --git a/__docusaurus/debug.html b/__docusaurus/debug.html index 9a3cf2373..b88d5edfd 100644 --- a/__docusaurus/debug.html +++ b/__docusaurus/debug.html @@ -6,7 +6,7 @@ Docusaurus debug panel - + diff --git a/__docusaurus/debug/config.html b/__docusaurus/debug/config.html index 3bf9717be..f40b3b595 100644 --- a/__docusaurus/debug/config.html +++ b/__docusaurus/debug/config.html @@ -6,7 +6,7 @@ Docusaurus debug panel - + diff --git a/__docusaurus/debug/content.html b/__docusaurus/debug/content.html index 990381b65..f17b12cfd 100644 --- a/__docusaurus/debug/content.html +++ b/__docusaurus/debug/content.html @@ -6,7 +6,7 @@ Docusaurus debug panel - + diff --git a/__docusaurus/debug/globalData.html b/__docusaurus/debug/globalData.html index b5d24c7ae..c9ede8c03 100644 --- a/__docusaurus/debug/globalData.html +++ b/__docusaurus/debug/globalData.html @@ -6,7 +6,7 @@ Docusaurus debug panel - + diff --git a/__docusaurus/debug/metadata.html b/__docusaurus/debug/metadata.html index 887c19e62..8fc26e013 100644 --- a/__docusaurus/debug/metadata.html +++ b/__docusaurus/debug/metadata.html @@ -6,7 +6,7 @@ Docusaurus debug panel - + diff --git a/__docusaurus/debug/registry.html b/__docusaurus/debug/registry.html index ea552cdf3..0e56a06de 100644 --- a/__docusaurus/debug/registry.html +++ b/__docusaurus/debug/registry.html @@ -6,7 +6,7 @@ Docusaurus debug panel - + diff --git a/__docusaurus/debug/routes.html b/__docusaurus/debug/routes.html index d2a17d62b..a8d4d0418 100644 --- a/__docusaurus/debug/routes.html +++ b/__docusaurus/debug/routes.html @@ -6,7 +6,7 @@ Docusaurus debug panel - + diff --git a/assets/files/Polkadot_Protocol_Spec-0bddaf1fa3eaf582160860971e8604a3.pdf b/assets/files/Polkadot_Protocol_Spec-1931296056ed03dd221ec8bb954c8f27.pdf similarity index 63% rename from assets/files/Polkadot_Protocol_Spec-0bddaf1fa3eaf582160860971e8604a3.pdf rename to assets/files/Polkadot_Protocol_Spec-1931296056ed03dd221ec8bb954c8f27.pdf index aead481e7..32112fe27 100644 Binary files a/assets/files/Polkadot_Protocol_Spec-0bddaf1fa3eaf582160860971e8604a3.pdf and b/assets/files/Polkadot_Protocol_Spec-1931296056ed03dd221ec8bb954c8f27.pdf differ diff --git a/assets/js/1df93b7f.5a6ec51a.js b/assets/js/1df93b7f.3331f28b.js similarity index 99% rename from assets/js/1df93b7f.5a6ec51a.js rename to assets/js/1df93b7f.3331f28b.js index 8c5c131b5..3069a8fea 100644 --- a/assets/js/1df93b7f.5a6ec51a.js +++ b/assets/js/1df93b7f.3331f28b.js @@ -1,2 +1,2 @@ -/*! For license information please see 1df93b7f.5a6ec51a.js.LICENSE.txt */ -(self.webpackChunkspec_website=self.webpackChunkspec_website||[]).push([[237],{4541:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r,o=n(7294);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...s}=e;return o.createElement("svg",a({width:800,height:800,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},s),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.77.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 0 1 .292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 0 1-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.02 1.098-.2 2.15-.07 3.096.571.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 0 1-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.95 1.192-.21 2.314-.095 3.33.595.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.06-.63.07-.934.106zm2.78-4.72c-.011-.153-.011-.27-.034-.387-.21-1.157-1.274-1.81-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.21.643.28 1.285.244 1.905-.07.923-.48 1.425-1.228 1.484-2.233z"})))}},8898:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r,o=n(7294);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...s}=e;return o.createElement("svg",a({height:24,viewBox:"0 0 24 24",width:24,xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},s),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M20.66 7a1.51 1.51 0 0 0-.55-.57l-7.34-4.24a1.67 1.67 0 0 0-1.54 0L3.89 6.43a1.68 1.68 0 0 0-.77 1.33v8.48a1.57 1.57 0 0 0 .22.76 1.51 1.51 0 0 0 .55.57l7.34 4.24a1.67 1.67 0 0 0 1.54 0l7.34-4.24a1.51 1.51 0 0 0 .55-.57 1.57 1.57 0 0 0 .22-.76V7.76a1.57 1.57 0 0 0-.22-.76zM12 17.92A5.92 5.92 0 1 1 17.13 9L16 9.71l-.36.2-1 .61A3 3 0 0 0 9 12a2.88 2.88 0 0 0 .4 1.48 3 3 0 0 0 5.13 0l2.6 1.52A5.94 5.94 0 0 1 12 17.92zm5.92-5.59h-.66V13h-.65v-.66H16v-.66h.66V11h.65v.66h.66zm2.47 0h-.66V13h-.66v-.66h-.65v-.66h.65V11h.66v.66h.66z"})))}},3515:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r,o=n(7294);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...s}=e;return o.createElement("svg",a({width:800,height:800,viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},s),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"m47.781 31.608-1.343-.832a18.57 18.57 0 0 0-.038-.391l1.154-1.077a.46.46 0 0 0-.153-.771l-1.476-.552a16.798 16.798 0 0 0-.115-.381l.92-1.279a.462.462 0 0 0-.3-.727l-1.557-.253c-.06-.118-.123-.234-.187-.35l.654-1.435a.46.46 0 0 0-.437-.654l-1.579.055a12.482 12.482 0 0 0-.25-.302l.363-1.539a.461.461 0 0 0-.556-.556l-1.538.362c-.1-.084-.2-.167-.303-.25l.055-1.578a.46.46 0 0 0-.654-.437l-1.435.654a16.712 16.712 0 0 0-.35-.188l-.253-1.556a.462.462 0 0 0-.726-.301l-1.28.92a14.31 14.31 0 0 0-.38-.115l-.552-1.476a.461.461 0 0 0-.771-.154l-1.077 1.156c-.13-.014-.26-.028-.391-.038l-.832-1.344a.462.462 0 0 0-.786 0l-.832 1.344c-.13.01-.261.024-.391.038l-1.077-1.155a.464.464 0 0 0-.771.153l-.552 1.476a14.05 14.05 0 0 0-.38.116l-1.28-.921a.46.46 0 0 0-.727.3l-.254 1.557c-.117.061-.233.124-.35.188l-1.434-.654a.46.46 0 0 0-.654.436l.055 1.58a14.34 14.34 0 0 0-.303.25l-1.538-.363a.464.464 0 0 0-.557.556l.363 1.539c-.085.1-.168.2-.25.302l-1.579-.055a.462.462 0 0 0-.437.654l.654 1.436c-.063.115-.126.231-.187.35l-1.556.252a.462.462 0 0 0-.301.727l.92 1.279c-.04.126-.078.253-.115.38l-1.476.553a.462.462 0 0 0-.153.771l1.155 1.077c-.015.13-.028.26-.039.391l-1.343.832a.462.462 0 0 0 0 .786l1.343.831c.011.131.024.262.039.392l-1.155 1.077a.462.462 0 0 0 .153.771l1.476.552c.037.128.076.255.116.38l-.921 1.28a.462.462 0 0 0 .301.726l1.556.253c.061.118.123.235.188.35l-.655 1.435a.462.462 0 0 0 .437.654l1.579-.055c.082.103.165.203.25.303l-.363 1.539a.46.46 0 0 0 .557.555l1.538-.362c.1.085.201.167.303.249l-.055 1.58a.461.461 0 0 0 .654.436l1.435-.654c.115.064.232.127.35.188l.253 1.555a.461.461 0 0 0 .727.302l1.279-.922c.126.04.253.08.38.116l.552 1.476a.46.46 0 0 0 .771.153l1.078-1.155c.13.015.26.028.391.04l.832 1.343a.463.463 0 0 0 .786 0l.831-1.344c.131-.011.262-.024.392-.039l1.077 1.155a.46.46 0 0 0 .77-.153l.553-1.476c.127-.036.254-.076.38-.116l1.28.922a.463.463 0 0 0 .726-.302l.254-1.556c.117-.06.233-.124.349-.187l1.435.654a.461.461 0 0 0 .654-.437l-.055-1.58c.102-.08.203-.163.303-.248l1.538.362a.46.46 0 0 0 .556-.555l-.362-1.539c.084-.1.167-.2.249-.303l1.58.055a.46.46 0 0 0 .436-.654l-.654-1.435c.064-.115.126-.232.187-.35l1.556-.253a.46.46 0 0 0 .301-.726l-.92-1.28a17.5 17.5 0 0 0 .115-.38l1.476-.552a.46.46 0 0 0 .153-.771l-1.155-1.077c.014-.13.027-.261.039-.392l1.343-.831a.462.462 0 0 0 0-.786zM38.79 42.752a.952.952 0 0 1 .399-1.861.952.952 0 0 1-.4 1.861zm-.457-3.087a.866.866 0 0 0-1.028.666l-.477 2.226A11.649 11.649 0 0 1 32 43.597c-1.76 0-3.43-.39-4.929-1.087l-.477-2.225a.866.866 0 0 0-1.028-.667l-1.965.422a11.68 11.68 0 0 1-1.016-1.197h9.561c.108 0 .18-.02.18-.118v-3.382c0-.099-.072-.118-.18-.118H29.35V33.08h3.024c.276 0 1.476.079 1.86 1.613.12.471.384 2.006.564 2.497.18.551.912 1.652 1.692 1.652h4.764a.977.977 0 0 0 .173-.017c-.33.449-.693.874-1.083 1.27l-2.01-.431zm-13.223 3.04a.952.952 0 0 1-.399-1.861.95.95 0 0 1 .398 1.862zm-3.627-14.707a.95.95 0 1 1-1.737.771.95.95 0 1 1 1.737-.771zm-1.115 2.643 2.047-.91a.868.868 0 0 0 .44-1.145l-.421-.953h1.658v7.474h-3.345a11.714 11.714 0 0 1-.38-4.466zm8.983-.726v-2.203h3.948c.204 0 1.44.236 1.44 1.16 0 .767-.948 1.043-1.728 1.043h-3.66zM43.7 31.898c0 .292-.011.581-.033.868h-1.2c-.12 0-.168.08-.168.197v.551c0 1.298-.732 1.58-1.373 1.652-.61.068-1.288-.256-1.371-.63-.36-2.025-.96-2.458-1.908-3.206 1.176-.746 2.4-1.848 2.4-3.323 0-1.593-1.092-2.596-1.836-3.088-1.044-.688-2.2-.826-2.512-.826H23.285a11.684 11.684 0 0 1 6.545-3.694l1.463 1.535c.331.346.88.36 1.225.028l1.638-1.566a11.71 11.71 0 0 1 8.009 5.704l-1.121 2.532a.869.869 0 0 0 .44 1.145l2.159.958c.037.383.056.77.056 1.163zM31.294 19.093a.95.95 0 0 1 1.344.031.952.952 0 0 1-.032 1.346.949.949 0 0 1-1.343-.032.953.953 0 0 1 .031-1.345zm11.123 8.951a.95.95 0 1 1 1.737.772.95.95 0 1 1-1.737-.772z",fill:"#fff"})))}},8391:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var r=n(7294),o=n(6010),a=n(9960),s=n(2263),i=n(9037),u=n(7788),c=n.n(u),l=n(7462);const f={features:"features_t9lD",featureSvg:"featureSvg_GfXr",kagome:"kagome_eyY2"},p=[{title:"Rust",Svg:n(3515).Z,description:r.createElement(r.Fragment,null,"See ",r.createElement("code",null,r.createElement("a",{href:"https://github.com/paritytech/polkadot-sdk"},"Node Implementation by Parity")),"\xa0and\xa0",r.createElement("code",null,r.createElement("a",{href:"https://github.com/smol-dot/smoldot"},"smoldot")))},{title:"Go",Svg:n(4541).Z,description:r.createElement(r.Fragment,null,"See ",r.createElement("code",null,r.createElement("a",{href:"https://github.com/ChainSafe/gossamer"},"Gossamer by Chainsafe")))},{title:"C++",Svg:n(8898).Z,description:r.createElement(r.Fragment,null,"See ",r.createElement("code",null,r.createElement("a",{href:"https://github.com/soramitsu/kagome"},"Kagome by Soramitsu"))),className:f.kagome}];function y(e){let{title:t,Svg:n,description:a,className:s}=e;return r.createElement("div",{className:(0,o.Z)("col col--4")},r.createElement("div",{className:"text--center"},r.createElement("div",{className:"fillWhite"},r.createElement(n,{className:f.featureSvg+""+(s?" "+s:""),role:"img"}))),r.createElement("div",{className:"text--center padding-horiz--md"},r.createElement("h3",null,t),r.createElement("p",null,a)))}function d(){return r.createElement("section",{className:f.features},r.createElement("div",{className:"container"},r.createElement("div",{className:"row"},p.map(((e,t)=>r.createElement(y,(0,l.Z)({key:t},e)))))))}const h={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function m(){const{siteConfig:e}=(0,s.Z)();return r.createElement("header",{className:(0,o.Z)("hero hero--primary",h.heroBanner)},r.createElement("div",{className:"container"},r.createElement("h1",{className:"hero__title"},"Polkadot ",r.createElement(c(),{strings:["Protocol Specification"],typeSpeed:120})),r.createElement("p",{className:"hero__subtitle"},e.tagline),r.createElement("div",{className:h.buttons},r.createElement(a.Z,{className:"button button--secondary button--lg",to:"/id-polkadot-protocol"},"Read the Spec"),r.createElement(a.Z,{className:"button button--secondary button--lg",to:n(3739).Z,target:"_blank"},"Download PDF"))))}function b(){const{siteConfig:e}=(0,s.Z)();return r.createElement(i.Z,{title:`${e.title}`,description:`${e.tagline}`},r.createElement(m,null),r.createElement("main",{id:"homepage_features"},r.createElement(d,null)))}},3739:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"assets/files/Polkadot_Protocol_Spec-0bddaf1fa3eaf582160860971e8604a3.pdf"},7788:function(e,t,n){var r;e.exports=(r=n(7294),function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=5)}([function(e,t,n){var r=n(3);e.exports=n(8)(r.isElement,!0)},function(e,t){e.exports=r},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";e.exports=n(7)},function(e,t,n){var r;r=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;ne.length););var u=e.substring(0,t),c=e.substring(u.length+1,t+o),l=e.substring(t+o+1);e=u+c+l,o--}n.timeout=setTimeout((function(){n.toggleBlinking(!1),t>=e.length?n.doneTyping(e,t):n.keepTyping(e,t,o),n.temporaryPause&&(n.temporaryPause=!1,n.options.onTypingResumed(n.arrayPos,n))}),r)}),r):this.setPauseStatus(e,t,!0)}},{key:"keepTyping",value:function(e,t,n){0===t&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this)),t+=n;var r=e.substr(0,t);this.replaceText(r),this.typewrite(e,t)}},{key:"doneTyping",value:function(e,t){var n=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),!1===this.loop||this.curLoop===this.loopCount)||(this.timeout=setTimeout((function(){n.backspace(e,t)}),this.backDelay))}},{key:"backspace",value:function(e,t){var n=this;if(!0!==this.pause.status){if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var r=this.humanizer(this.backSpeed);this.timeout=setTimeout((function(){t=a.htmlParser.backSpaceHtmlChars(e,t,n);var r=e.substr(0,t);if(n.replaceText(r),n.smartBackspace){var o=n.strings[n.arrayPos+1];o&&r===o.substr(0,t)?n.stopNum=t:n.stopNum=0}t>n.stopNum?(t--,n.backspace(e,t)):t<=n.stopNum&&(n.arrayPos++,n.arrayPos===n.strings.length?(n.arrayPos=0,n.options.onLastStringBackspaced(),n.shuffleStringsIfNeeded(),n.begin()):n.typewrite(n.strings[n.sequence[n.arrayPos]],t))}),r)}else this.setPauseStatus(e,t,!0)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(e,t,n){this.pause.typewrite=n,this.pause.curString=e,this.pause.curStrPos=t}},{key:"toggleBlinking",value:function(e){this.cursor&&(this.pause.status||this.cursorBlinking!==e&&(this.cursorBlinking=e,e?this.cursor.classList.add("typed-cursor--blink"):this.cursor.classList.remove("typed-cursor--blink")))}},{key:"humanizer",value:function(e){return Math.round(Math.random()*e/2)+e}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort((function(){return Math.random()-.5})))}},{key:"initFadeOut",value:function(){var e=this;return this.el.className+=" "+this.fadeOutClass,this.cursor&&(this.cursor.className+=" "+this.fadeOutClass),setTimeout((function(){e.arrayPos++,e.replaceText(""),e.strings.length>e.arrayPos?e.typewrite(e.strings[e.sequence[e.arrayPos]],0):(e.typewrite(e.strings[0],0),e.arrayPos=0)}),this.fadeOutDelay)}},{key:"replaceText",value:function(e){this.attr?this.el.setAttribute(this.attr,e):this.isInput?this.el.value=e:"html"===this.contentType?this.el.innerHTML=e:this.el.textContent=e}},{key:"bindFocusEvents",value:function(){var e=this;this.isInput&&(this.el.addEventListener("focus",(function(t){e.stop()})),this.el.addEventListener("blur",(function(t){e.el.value&&0!==e.el.value.length||e.start()})))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor||(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)))}}]),e}();t.default=s,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t":";";e.substr(t+1).charAt(0)!==o&&!(1+ ++t>e.length););t++}return t}},{key:"backSpaceHtmlChars",value:function(e,t,n){if("html"!==n.contentType)return t;var r=e.substr(t).charAt(0);if(">"===r||";"===r){var o="";for(o=">"===r?"<":"&";e.substr(t-1).charAt(0)!==o&&!(--t<0););t--}return t}}]),e}();t.default=r;var o=new r;t.htmlParser=o}])},e.exports=r()},function(e,t,n){"use strict";n.r(t);var r=n(1),o=n.n(r),a=n(0),s=n.n(a),i=n(4),u=n.n(i);function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=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}function f(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=this.props,r=(n.style,n.typedRef,n.stopped,n.className,l(n,["style","typedRef","stopped","className"]));this.typed&&this.typed.destroy(),this.typed=new u.a(this.rootElement.current,Object.assign(r,t)),this.props.typedRef&&this.props.typedRef(this.typed),this.typed.reConstruct=function(t){e.constructTyped(t)}}},{key:"shouldComponentUpdate",value:function(e){var t=this;if(this.props!==e){e.style,e.typedRef,e.stopped,e.className;var n=l(e,["style","typedRef","stopped","className"]);return this.typed.options=Object.assign(this.typed.options,n),!Object.keys(e).every((function(n){return!t.props[n]&&e[n]?(t.constructTyped(e),!1):(t.typed[n]&&(t.typed[n]=e[n]),!0)}))||this.props.strings.length===e.strings.length||this.constructTyped(e),!0}return!1}},{key:"render",value:function(){var e=this.props,t=e.style,n=e.className,r=e.children,a=o.a.createElement("span",{ref:this.rootElement});return r&&(a=o.a.cloneElement(r,{ref:this.rootElement})),o.a.createElement("span",{style:t,className:n},a)}}])&&f(n.prototype,a),s&&f(n,s),t}();h.propTypes={style:s.a.object,className:s.a.string,children:s.a.object,typedRef:s.a.func,stopped:s.a.bool,strings:s.a.arrayOf(s.a.string),typeSpeed:s.a.number,startDelay:s.a.number,backSpeed:s.a.number,smartBackspace:s.a.bool,shuffle:s.a.bool,backDelay:s.a.number,fadeOut:s.a.bool,fadeOutClass:s.a.string,fadeOutDelay:s.a.number,loop:s.a.bool,loopCount:s.a.number,showCursor:s.a.bool,cursorChar:s.a.string,autoInsertCss:s.a.bool,attr:s.a.string,bindInputFocusEvents:s.a.bool,contentType:s.a.oneOf(["html",""]),onComplete:s.a.func,preStringTyped:s.a.func,onStringTyped:s.a.func,onLastStringBackspaced:s.a.func,onTypingPaused:s.a.func,onTypingResumed:s.a.func,onReset:s.a.func,onStop:s.a.func,onStart:s.a.func,onDestroy:s.a.func},t.default=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,i=r?Symbol.for("react.strict_mode"):60108,u=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,l=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,p=r?Symbol.for("react.concurrent_mode"):60111,y=r?Symbol.for("react.forward_ref"):60112,d=r?Symbol.for("react.suspense"):60113,h=r?Symbol.for("react.suspense_list"):60120,m=r?Symbol.for("react.memo"):60115,b=r?Symbol.for("react.lazy"):60116,v=r?Symbol.for("react.fundamental"):60117,g=r?Symbol.for("react.responder"):60118;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case p:case s:case u:case i:case d:return e;default:switch(e=e&&e.$$typeof){case l:case y:case c:return e;default:return t}}case b:case m:case a:return t}}}function S(e){return w(e)===p}t.typeOf=w,t.AsyncMode=f,t.ConcurrentMode=p,t.ContextConsumer=l,t.ContextProvider=c,t.Element=o,t.ForwardRef=y,t.Fragment=s,t.Lazy=b,t.Memo=m,t.Portal=a,t.Profiler=u,t.StrictMode=i,t.Suspense=d,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===p||e===u||e===i||e===d||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===m||e.$$typeof===c||e.$$typeof===l||e.$$typeof===y||e.$$typeof===v||e.$$typeof===g)},t.isAsyncMode=function(e){return S(e)||w(e)===f},t.isConcurrentMode=S,t.isContextConsumer=function(e){return w(e)===l},t.isContextProvider=function(e){return w(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return w(e)===y},t.isFragment=function(e){return w(e)===s},t.isLazy=function(e){return w(e)===b},t.isMemo=function(e){return w(e)===m},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===u},t.isStrictMode=function(e){return w(e)===i},t.isSuspense=function(e){return w(e)===d}},function(e,t,n){"use strict";!function(){Object.defineProperty(t,"__esModule",{value:!0});var e="function"==typeof Symbol&&Symbol.for,n=e?Symbol.for("react.element"):60103,r=e?Symbol.for("react.portal"):60106,o=e?Symbol.for("react.fragment"):60107,a=e?Symbol.for("react.strict_mode"):60108,s=e?Symbol.for("react.profiler"):60114,i=e?Symbol.for("react.provider"):60109,u=e?Symbol.for("react.context"):60110,c=e?Symbol.for("react.async_mode"):60111,l=e?Symbol.for("react.concurrent_mode"):60111,f=e?Symbol.for("react.forward_ref"):60112,p=e?Symbol.for("react.suspense"):60113,y=e?Symbol.for("react.suspense_list"):60120,d=e?Symbol.for("react.memo"):60115,h=e?Symbol.for("react.lazy"):60116,m=e?Symbol.for("react.fundamental"):60117,b=e?Symbol.for("react.responder"):60118,v=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r2?n-2:0),o=2;o1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),c)},oneOfType:function(e){if(!Array.isArray(e))return u("Invalid argument supplied to oneOfType, expected an instance of array."),c;for(var t=0;t{"use strict";n.d(t,{Z:()=>s});var r,o=n(7294);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...s}=e;return o.createElement("svg",a({width:800,height:800,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},s),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.77.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 0 1 .292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 0 1-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.02 1.098-.2 2.15-.07 3.096.571.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 0 1-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.95 1.192-.21 2.314-.095 3.33.595.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.06-.63.07-.934.106zm2.78-4.72c-.011-.153-.011-.27-.034-.387-.21-1.157-1.274-1.81-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.21.643.28 1.285.244 1.905-.07.923-.48 1.425-1.228 1.484-2.233z"})))}},8898:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r,o=n(7294);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...s}=e;return o.createElement("svg",a({height:24,viewBox:"0 0 24 24",width:24,xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},s),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"M20.66 7a1.51 1.51 0 0 0-.55-.57l-7.34-4.24a1.67 1.67 0 0 0-1.54 0L3.89 6.43a1.68 1.68 0 0 0-.77 1.33v8.48a1.57 1.57 0 0 0 .22.76 1.51 1.51 0 0 0 .55.57l7.34 4.24a1.67 1.67 0 0 0 1.54 0l7.34-4.24a1.51 1.51 0 0 0 .55-.57 1.57 1.57 0 0 0 .22-.76V7.76a1.57 1.57 0 0 0-.22-.76zM12 17.92A5.92 5.92 0 1 1 17.13 9L16 9.71l-.36.2-1 .61A3 3 0 0 0 9 12a2.88 2.88 0 0 0 .4 1.48 3 3 0 0 0 5.13 0l2.6 1.52A5.94 5.94 0 0 1 12 17.92zm5.92-5.59h-.66V13h-.65v-.66H16v-.66h.66V11h.65v.66h.66zm2.47 0h-.66V13h-.66v-.66h-.65v-.66h.65V11h.66v.66h.66z"})))}},3515:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r,o=n(7294);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...s}=e;return o.createElement("svg",a({width:800,height:800,viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},s),t?o.createElement("title",{id:n},t):null,r||(r=o.createElement("path",{d:"m47.781 31.608-1.343-.832a18.57 18.57 0 0 0-.038-.391l1.154-1.077a.46.46 0 0 0-.153-.771l-1.476-.552a16.798 16.798 0 0 0-.115-.381l.92-1.279a.462.462 0 0 0-.3-.727l-1.557-.253c-.06-.118-.123-.234-.187-.35l.654-1.435a.46.46 0 0 0-.437-.654l-1.579.055a12.482 12.482 0 0 0-.25-.302l.363-1.539a.461.461 0 0 0-.556-.556l-1.538.362c-.1-.084-.2-.167-.303-.25l.055-1.578a.46.46 0 0 0-.654-.437l-1.435.654a16.712 16.712 0 0 0-.35-.188l-.253-1.556a.462.462 0 0 0-.726-.301l-1.28.92a14.31 14.31 0 0 0-.38-.115l-.552-1.476a.461.461 0 0 0-.771-.154l-1.077 1.156c-.13-.014-.26-.028-.391-.038l-.832-1.344a.462.462 0 0 0-.786 0l-.832 1.344c-.13.01-.261.024-.391.038l-1.077-1.155a.464.464 0 0 0-.771.153l-.552 1.476a14.05 14.05 0 0 0-.38.116l-1.28-.921a.46.46 0 0 0-.727.3l-.254 1.557c-.117.061-.233.124-.35.188l-1.434-.654a.46.46 0 0 0-.654.436l.055 1.58a14.34 14.34 0 0 0-.303.25l-1.538-.363a.464.464 0 0 0-.557.556l.363 1.539c-.085.1-.168.2-.25.302l-1.579-.055a.462.462 0 0 0-.437.654l.654 1.436c-.063.115-.126.231-.187.35l-1.556.252a.462.462 0 0 0-.301.727l.92 1.279c-.04.126-.078.253-.115.38l-1.476.553a.462.462 0 0 0-.153.771l1.155 1.077c-.015.13-.028.26-.039.391l-1.343.832a.462.462 0 0 0 0 .786l1.343.831c.011.131.024.262.039.392l-1.155 1.077a.462.462 0 0 0 .153.771l1.476.552c.037.128.076.255.116.38l-.921 1.28a.462.462 0 0 0 .301.726l1.556.253c.061.118.123.235.188.35l-.655 1.435a.462.462 0 0 0 .437.654l1.579-.055c.082.103.165.203.25.303l-.363 1.539a.46.46 0 0 0 .557.555l1.538-.362c.1.085.201.167.303.249l-.055 1.58a.461.461 0 0 0 .654.436l1.435-.654c.115.064.232.127.35.188l.253 1.555a.461.461 0 0 0 .727.302l1.279-.922c.126.04.253.08.38.116l.552 1.476a.46.46 0 0 0 .771.153l1.078-1.155c.13.015.26.028.391.04l.832 1.343a.463.463 0 0 0 .786 0l.831-1.344c.131-.011.262-.024.392-.039l1.077 1.155a.46.46 0 0 0 .77-.153l.553-1.476c.127-.036.254-.076.38-.116l1.28.922a.463.463 0 0 0 .726-.302l.254-1.556c.117-.06.233-.124.349-.187l1.435.654a.461.461 0 0 0 .654-.437l-.055-1.58c.102-.08.203-.163.303-.248l1.538.362a.46.46 0 0 0 .556-.555l-.362-1.539c.084-.1.167-.2.249-.303l1.58.055a.46.46 0 0 0 .436-.654l-.654-1.435c.064-.115.126-.232.187-.35l1.556-.253a.46.46 0 0 0 .301-.726l-.92-1.28a17.5 17.5 0 0 0 .115-.38l1.476-.552a.46.46 0 0 0 .153-.771l-1.155-1.077c.014-.13.027-.261.039-.392l1.343-.831a.462.462 0 0 0 0-.786zM38.79 42.752a.952.952 0 0 1 .399-1.861.952.952 0 0 1-.4 1.861zm-.457-3.087a.866.866 0 0 0-1.028.666l-.477 2.226A11.649 11.649 0 0 1 32 43.597c-1.76 0-3.43-.39-4.929-1.087l-.477-2.225a.866.866 0 0 0-1.028-.667l-1.965.422a11.68 11.68 0 0 1-1.016-1.197h9.561c.108 0 .18-.02.18-.118v-3.382c0-.099-.072-.118-.18-.118H29.35V33.08h3.024c.276 0 1.476.079 1.86 1.613.12.471.384 2.006.564 2.497.18.551.912 1.652 1.692 1.652h4.764a.977.977 0 0 0 .173-.017c-.33.449-.693.874-1.083 1.27l-2.01-.431zm-13.223 3.04a.952.952 0 0 1-.399-1.861.95.95 0 0 1 .398 1.862zm-3.627-14.707a.95.95 0 1 1-1.737.771.95.95 0 1 1 1.737-.771zm-1.115 2.643 2.047-.91a.868.868 0 0 0 .44-1.145l-.421-.953h1.658v7.474h-3.345a11.714 11.714 0 0 1-.38-4.466zm8.983-.726v-2.203h3.948c.204 0 1.44.236 1.44 1.16 0 .767-.948 1.043-1.728 1.043h-3.66zM43.7 31.898c0 .292-.011.581-.033.868h-1.2c-.12 0-.168.08-.168.197v.551c0 1.298-.732 1.58-1.373 1.652-.61.068-1.288-.256-1.371-.63-.36-2.025-.96-2.458-1.908-3.206 1.176-.746 2.4-1.848 2.4-3.323 0-1.593-1.092-2.596-1.836-3.088-1.044-.688-2.2-.826-2.512-.826H23.285a11.684 11.684 0 0 1 6.545-3.694l1.463 1.535c.331.346.88.36 1.225.028l1.638-1.566a11.71 11.71 0 0 1 8.009 5.704l-1.121 2.532a.869.869 0 0 0 .44 1.145l2.159.958c.037.383.056.77.056 1.163zM31.294 19.093a.95.95 0 0 1 1.344.031.952.952 0 0 1-.032 1.346.949.949 0 0 1-1.343-.032.953.953 0 0 1 .031-1.345zm11.123 8.951a.95.95 0 1 1 1.737.772.95.95 0 1 1-1.737-.772z",fill:"#fff"})))}},8391:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var r=n(7294),o=n(6010),a=n(9960),s=n(2263),i=n(9037),u=n(7788),c=n.n(u),l=n(7462);const f={features:"features_t9lD",featureSvg:"featureSvg_GfXr",kagome:"kagome_eyY2"},p=[{title:"Rust",Svg:n(3515).Z,description:r.createElement(r.Fragment,null,"See ",r.createElement("code",null,r.createElement("a",{href:"https://github.com/paritytech/polkadot-sdk"},"Node Implementation by Parity")),"\xa0and\xa0",r.createElement("code",null,r.createElement("a",{href:"https://github.com/smol-dot/smoldot"},"smoldot")))},{title:"Go",Svg:n(4541).Z,description:r.createElement(r.Fragment,null,"See ",r.createElement("code",null,r.createElement("a",{href:"https://github.com/ChainSafe/gossamer"},"Gossamer by Chainsafe")))},{title:"C++",Svg:n(8898).Z,description:r.createElement(r.Fragment,null,"See ",r.createElement("code",null,r.createElement("a",{href:"https://github.com/soramitsu/kagome"},"Kagome by Soramitsu"))),className:f.kagome}];function y(e){let{title:t,Svg:n,description:a,className:s}=e;return r.createElement("div",{className:(0,o.Z)("col col--4")},r.createElement("div",{className:"text--center"},r.createElement("div",{className:"fillWhite"},r.createElement(n,{className:f.featureSvg+""+(s?" "+s:""),role:"img"}))),r.createElement("div",{className:"text--center padding-horiz--md"},r.createElement("h3",null,t),r.createElement("p",null,a)))}function d(){return r.createElement("section",{className:f.features},r.createElement("div",{className:"container"},r.createElement("div",{className:"row"},p.map(((e,t)=>r.createElement(y,(0,l.Z)({key:t},e)))))))}const h={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function m(){const{siteConfig:e}=(0,s.Z)();return r.createElement("header",{className:(0,o.Z)("hero hero--primary",h.heroBanner)},r.createElement("div",{className:"container"},r.createElement("h1",{className:"hero__title"},"Polkadot ",r.createElement(c(),{strings:["Protocol Specification"],typeSpeed:120})),r.createElement("p",{className:"hero__subtitle"},e.tagline),r.createElement("div",{className:h.buttons},r.createElement(a.Z,{className:"button button--secondary button--lg",to:"/id-polkadot-protocol"},"Read the Spec"),r.createElement(a.Z,{className:"button button--secondary button--lg",to:n(3739).Z,target:"_blank"},"Download PDF"))))}function b(){const{siteConfig:e}=(0,s.Z)();return r.createElement(i.Z,{title:`${e.title}`,description:`${e.tagline}`},r.createElement(m,null),r.createElement("main",{id:"homepage_features"},r.createElement(d,null)))}},3739:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n.p+"assets/files/Polkadot_Protocol_Spec-1931296056ed03dd221ec8bb954c8f27.pdf"},7788:function(e,t,n){var r;e.exports=(r=n(7294),function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=5)}([function(e,t,n){var r=n(3);e.exports=n(8)(r.isElement,!0)},function(e,t){e.exports=r},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";e.exports=n(7)},function(e,t,n){var r;r=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;ne.length););var u=e.substring(0,t),c=e.substring(u.length+1,t+o),l=e.substring(t+o+1);e=u+c+l,o--}n.timeout=setTimeout((function(){n.toggleBlinking(!1),t>=e.length?n.doneTyping(e,t):n.keepTyping(e,t,o),n.temporaryPause&&(n.temporaryPause=!1,n.options.onTypingResumed(n.arrayPos,n))}),r)}),r):this.setPauseStatus(e,t,!0)}},{key:"keepTyping",value:function(e,t,n){0===t&&(this.toggleBlinking(!1),this.options.preStringTyped(this.arrayPos,this)),t+=n;var r=e.substr(0,t);this.replaceText(r),this.typewrite(e,t)}},{key:"doneTyping",value:function(e,t){var n=this;this.options.onStringTyped(this.arrayPos,this),this.toggleBlinking(!0),this.arrayPos===this.strings.length-1&&(this.complete(),!1===this.loop||this.curLoop===this.loopCount)||(this.timeout=setTimeout((function(){n.backspace(e,t)}),this.backDelay))}},{key:"backspace",value:function(e,t){var n=this;if(!0!==this.pause.status){if(this.fadeOut)return this.initFadeOut();this.toggleBlinking(!1);var r=this.humanizer(this.backSpeed);this.timeout=setTimeout((function(){t=a.htmlParser.backSpaceHtmlChars(e,t,n);var r=e.substr(0,t);if(n.replaceText(r),n.smartBackspace){var o=n.strings[n.arrayPos+1];o&&r===o.substr(0,t)?n.stopNum=t:n.stopNum=0}t>n.stopNum?(t--,n.backspace(e,t)):t<=n.stopNum&&(n.arrayPos++,n.arrayPos===n.strings.length?(n.arrayPos=0,n.options.onLastStringBackspaced(),n.shuffleStringsIfNeeded(),n.begin()):n.typewrite(n.strings[n.sequence[n.arrayPos]],t))}),r)}else this.setPauseStatus(e,t,!0)}},{key:"complete",value:function(){this.options.onComplete(this),this.loop?this.curLoop++:this.typingComplete=!0}},{key:"setPauseStatus",value:function(e,t,n){this.pause.typewrite=n,this.pause.curString=e,this.pause.curStrPos=t}},{key:"toggleBlinking",value:function(e){this.cursor&&(this.pause.status||this.cursorBlinking!==e&&(this.cursorBlinking=e,e?this.cursor.classList.add("typed-cursor--blink"):this.cursor.classList.remove("typed-cursor--blink")))}},{key:"humanizer",value:function(e){return Math.round(Math.random()*e/2)+e}},{key:"shuffleStringsIfNeeded",value:function(){this.shuffle&&(this.sequence=this.sequence.sort((function(){return Math.random()-.5})))}},{key:"initFadeOut",value:function(){var e=this;return this.el.className+=" "+this.fadeOutClass,this.cursor&&(this.cursor.className+=" "+this.fadeOutClass),setTimeout((function(){e.arrayPos++,e.replaceText(""),e.strings.length>e.arrayPos?e.typewrite(e.strings[e.sequence[e.arrayPos]],0):(e.typewrite(e.strings[0],0),e.arrayPos=0)}),this.fadeOutDelay)}},{key:"replaceText",value:function(e){this.attr?this.el.setAttribute(this.attr,e):this.isInput?this.el.value=e:"html"===this.contentType?this.el.innerHTML=e:this.el.textContent=e}},{key:"bindFocusEvents",value:function(){var e=this;this.isInput&&(this.el.addEventListener("focus",(function(t){e.stop()})),this.el.addEventListener("blur",(function(t){e.el.value&&0!==e.el.value.length||e.start()})))}},{key:"insertCursor",value:function(){this.showCursor&&(this.cursor||(this.cursor=document.createElement("span"),this.cursor.className="typed-cursor",this.cursor.innerHTML=this.cursorChar,this.el.parentNode&&this.el.parentNode.insertBefore(this.cursor,this.el.nextSibling)))}}]),e}();t.default=s,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t":";";e.substr(t+1).charAt(0)!==o&&!(1+ ++t>e.length););t++}return t}},{key:"backSpaceHtmlChars",value:function(e,t,n){if("html"!==n.contentType)return t;var r=e.substr(t).charAt(0);if(">"===r||";"===r){var o="";for(o=">"===r?"<":"&";e.substr(t-1).charAt(0)!==o&&!(--t<0););t--}return t}}]),e}();t.default=r;var o=new r;t.htmlParser=o}])},e.exports=r()},function(e,t,n){"use strict";n.r(t);var r=n(1),o=n.n(r),a=n(0),s=n.n(a),i=n(4),u=n.n(i);function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=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}function f(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=this.props,r=(n.style,n.typedRef,n.stopped,n.className,l(n,["style","typedRef","stopped","className"]));this.typed&&this.typed.destroy(),this.typed=new u.a(this.rootElement.current,Object.assign(r,t)),this.props.typedRef&&this.props.typedRef(this.typed),this.typed.reConstruct=function(t){e.constructTyped(t)}}},{key:"shouldComponentUpdate",value:function(e){var t=this;if(this.props!==e){e.style,e.typedRef,e.stopped,e.className;var n=l(e,["style","typedRef","stopped","className"]);return this.typed.options=Object.assign(this.typed.options,n),!Object.keys(e).every((function(n){return!t.props[n]&&e[n]?(t.constructTyped(e),!1):(t.typed[n]&&(t.typed[n]=e[n]),!0)}))||this.props.strings.length===e.strings.length||this.constructTyped(e),!0}return!1}},{key:"render",value:function(){var e=this.props,t=e.style,n=e.className,r=e.children,a=o.a.createElement("span",{ref:this.rootElement});return r&&(a=o.a.cloneElement(r,{ref:this.rootElement})),o.a.createElement("span",{style:t,className:n},a)}}])&&f(n.prototype,a),s&&f(n,s),t}();h.propTypes={style:s.a.object,className:s.a.string,children:s.a.object,typedRef:s.a.func,stopped:s.a.bool,strings:s.a.arrayOf(s.a.string),typeSpeed:s.a.number,startDelay:s.a.number,backSpeed:s.a.number,smartBackspace:s.a.bool,shuffle:s.a.bool,backDelay:s.a.number,fadeOut:s.a.bool,fadeOutClass:s.a.string,fadeOutDelay:s.a.number,loop:s.a.bool,loopCount:s.a.number,showCursor:s.a.bool,cursorChar:s.a.string,autoInsertCss:s.a.bool,attr:s.a.string,bindInputFocusEvents:s.a.bool,contentType:s.a.oneOf(["html",""]),onComplete:s.a.func,preStringTyped:s.a.func,onStringTyped:s.a.func,onLastStringBackspaced:s.a.func,onTypingPaused:s.a.func,onTypingResumed:s.a.func,onReset:s.a.func,onStop:s.a.func,onStart:s.a.func,onDestroy:s.a.func},t.default=h},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,i=r?Symbol.for("react.strict_mode"):60108,u=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,l=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,p=r?Symbol.for("react.concurrent_mode"):60111,y=r?Symbol.for("react.forward_ref"):60112,d=r?Symbol.for("react.suspense"):60113,h=r?Symbol.for("react.suspense_list"):60120,m=r?Symbol.for("react.memo"):60115,b=r?Symbol.for("react.lazy"):60116,v=r?Symbol.for("react.fundamental"):60117,g=r?Symbol.for("react.responder"):60118;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case p:case s:case u:case i:case d:return e;default:switch(e=e&&e.$$typeof){case l:case y:case c:return e;default:return t}}case b:case m:case a:return t}}}function S(e){return w(e)===p}t.typeOf=w,t.AsyncMode=f,t.ConcurrentMode=p,t.ContextConsumer=l,t.ContextProvider=c,t.Element=o,t.ForwardRef=y,t.Fragment=s,t.Lazy=b,t.Memo=m,t.Portal=a,t.Profiler=u,t.StrictMode=i,t.Suspense=d,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===p||e===u||e===i||e===d||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===m||e.$$typeof===c||e.$$typeof===l||e.$$typeof===y||e.$$typeof===v||e.$$typeof===g)},t.isAsyncMode=function(e){return S(e)||w(e)===f},t.isConcurrentMode=S,t.isContextConsumer=function(e){return w(e)===l},t.isContextProvider=function(e){return w(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return w(e)===y},t.isFragment=function(e){return w(e)===s},t.isLazy=function(e){return w(e)===b},t.isMemo=function(e){return w(e)===m},t.isPortal=function(e){return w(e)===a},t.isProfiler=function(e){return w(e)===u},t.isStrictMode=function(e){return w(e)===i},t.isSuspense=function(e){return w(e)===d}},function(e,t,n){"use strict";!function(){Object.defineProperty(t,"__esModule",{value:!0});var e="function"==typeof Symbol&&Symbol.for,n=e?Symbol.for("react.element"):60103,r=e?Symbol.for("react.portal"):60106,o=e?Symbol.for("react.fragment"):60107,a=e?Symbol.for("react.strict_mode"):60108,s=e?Symbol.for("react.profiler"):60114,i=e?Symbol.for("react.provider"):60109,u=e?Symbol.for("react.context"):60110,c=e?Symbol.for("react.async_mode"):60111,l=e?Symbol.for("react.concurrent_mode"):60111,f=e?Symbol.for("react.forward_ref"):60112,p=e?Symbol.for("react.suspense"):60113,y=e?Symbol.for("react.suspense_list"):60120,d=e?Symbol.for("react.memo"):60115,h=e?Symbol.for("react.lazy"):60116,m=e?Symbol.for("react.fundamental"):60117,b=e?Symbol.for("react.responder"):60118,v=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r2?n-2:0),o=2;o1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),c)},oneOfType:function(e){if(!Array.isArray(e))return u("Invalid argument supplied to oneOfType, expected an instance of array."),c;for(var t=0;t{t.exports=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"loadedVersions":[{"versionName":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","path":"/","tagsPath":"/tags","editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs","editUrlLocalized":"https://github.com/w3f/polkadot-spec/blob/main/i18n/en/docusaurus-plugin-content-docs/current","isLast":true,"routePriority":-1,"sidebarFilePath":"/home/runner/work/polkadot-spec/polkadot-spec/website/sidebars.js","contentPath":"/home/runner/work/polkadot-spec/polkadot-spec/website/docs","contentPathLocalized":"/home/runner/work/polkadot-spec/polkadot-spec/website/i18n/en/docusaurus-plugin-content-docs/current","docs":[{"unversionedId":"chap-host-api","id":"chap-host-api","title":"Appendix B: Host API","description":"Description of the expected environment available for import by the Polkadot Runtime","source":"@site/docs/chap-host-api.md","sourceDirName":".","slug":"/chap-host-api","permalink":"/chap-host-api","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-host-api.md","tags":[],"version":"current","frontMatter":{"title":"Appendix B: Host API"},"sidebar":"tutorialSidebar","previous":{"title":"Appendix A: Cryptography & Encoding","permalink":"/id-cryptography-encoding"},"next":{"title":"Appendix C: Runtime API","permalink":"/chap-runtime-api"}},{"unversionedId":"chap-networking","id":"chap-networking","title":"4. Networking","description":"This chapter, in its current form, is incomplete and considered work in progress. Authors appreciate receiving requests for clarification or any reports regarding deviation from the current Polkadot network protocol. This can be done by filing an issue in Polkadot Specification repository.","source":"@site/docs/chap-networking.md","sourceDirName":".","slug":"/chap-networking","permalink":"/chap-networking","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-networking.md","tags":[],"version":"current","frontMatter":{"title":"4. Networking"},"sidebar":"tutorialSidebar","previous":{"title":"3. Synchronization","permalink":"/chap-sync"},"next":{"title":"5. Block Production","permalink":"/sect-block-production"}},{"unversionedId":"chap-overview","id":"chap-overview","title":"1. Overview","description":"The Polkadot Protocol differentiates between different classes of Polkadot Hosts. Each class differs in its trust roots and how active or passively they interact with the network.","source":"@site/docs/chap-overview.md","sourceDirName":".","slug":"/chap-overview","permalink":"/chap-overview","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-overview.md","tags":[],"version":"current","frontMatter":{"title":"1. Overview"},"sidebar":"tutorialSidebar","previous":{"title":"Polkadot Host","permalink":"/part-polkadot-host"},"next":{"title":"2. States and Transitions","permalink":"/chap-state"}},{"unversionedId":"chap-runtime-api","id":"chap-runtime-api","title":"Appendix C: Runtime API","description":"Description of how to interact with the Runtime through its exported functions","source":"@site/docs/chap-runtime-api.md","sourceDirName":".","slug":"/chap-runtime-api","permalink":"/chap-runtime-api","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-runtime-api.md","tags":[],"version":"current","frontMatter":{"title":"Appendix C: Runtime API"},"sidebar":"tutorialSidebar","previous":{"title":"Appendix B: Host API","permalink":"/chap-host-api"},"next":{"title":"Glossary","permalink":"/id-glossary"}},{"unversionedId":"chap-state","id":"chap-state","title":"2. States and Transitions","description":"2.1. Introduction","source":"@site/docs/chap-state.md","sourceDirName":".","slug":"/chap-state","permalink":"/chap-state","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-state.md","tags":[],"version":"current","frontMatter":{"title":"2. States and Transitions"},"sidebar":"tutorialSidebar","previous":{"title":"1. Overview","permalink":"/chap-overview"},"next":{"title":"3. Synchronization","permalink":"/chap-sync"}},{"unversionedId":"chap-sync","id":"chap-sync","title":"3. Synchronization","description":"Many applications that interact with the Polkadot network, to some extent, must be able to retrieve certain information about the network. Depending on the utility, this includes validators that interact with Polkadot\u2019s consensus and need access to the full state, either from the past or just the most up-to-date state, or light clients that are only interested in the minimum information required in order to verify some claims about the state of the network, such as the balance of a specific account. To allow implementations to quickly retrieve the required information, different types of synchronization protocols are available, respectively Full, Fast, and Warp sync suited for different needs.","source":"@site/docs/chap-sync.md","sourceDirName":".","slug":"/chap-sync","permalink":"/chap-sync","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-sync.md","tags":[],"version":"current","frontMatter":{"title":"3. Synchronization"},"sidebar":"tutorialSidebar","previous":{"title":"2. States and Transitions","permalink":"/chap-state"},"next":{"title":"4. Networking","permalink":"/chap-networking"}},{"unversionedId":"chapter-anv","id":"chapter-anv","title":"8. Availability & Validity","description":"Polkadot serves as a replicated shared-state machine designed to resolve scalability issues and interoperability among blockchains. The validators of Polkadot execute transactions and participate in the consensus of Polkadots primary chain, the so-called relay chain. Parachains are independent networks that maintain their own state and are connected to the relay chain. Those parachains can take advantage of the relay chain consensus mechanism, including sending and receiving messages to and from other parachains. Parachain nodes that send parachain blocks, known as candidates, to the validators in order to be included in relay chain are referred to as collators.","source":"@site/docs/chapter-anv.md","sourceDirName":".","slug":"/chapter-anv","permalink":"/chapter-anv","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chapter-anv.md","tags":[],"version":"current","frontMatter":{"title":"8. Availability & Validity"},"sidebar":"tutorialSidebar","previous":{"title":"7. Light Clients","permalink":"/sect-lightclient"},"next":{"title":"Polkadot Runtime","permalink":"/part-polkadot-runtime"}},{"unversionedId":"id-consensus","id":"id-consensus","title":"11. Consensus","description":"11.1. BABE digest messages","source":"@site/docs/id-consensus.md","sourceDirName":".","slug":"/id-consensus","permalink":"/id-consensus","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-consensus.md","tags":[],"version":"current","frontMatter":{"title":"11. Consensus"},"sidebar":"tutorialSidebar","previous":{"title":"10. Weights","permalink":"/id-weights"},"next":{"title":"12. Metadata","permalink":"/sect-metadata"}},{"unversionedId":"id-cryptography-encoding","id":"id-cryptography-encoding","title":"Appendix A: Cryptography & Encoding","description":"The appendix chapter contains various protocol details.","source":"@site/docs/id-cryptography-encoding.md","sourceDirName":".","slug":"/id-cryptography-encoding","permalink":"/id-cryptography-encoding","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-cryptography-encoding.md","tags":[],"version":"current","frontMatter":{"title":"Appendix A: Cryptography & Encoding"},"sidebar":"tutorialSidebar","previous":{"title":"FAQ","permalink":"/Implementation Guide/faq"},"next":{"title":"Appendix B: Host API","permalink":"/chap-host-api"}},{"unversionedId":"id-extrinsics","id":"id-extrinsics","title":"9. Extrinsics","description":"9.1. Introduction","source":"@site/docs/id-extrinsics.md","sourceDirName":".","slug":"/id-extrinsics","permalink":"/id-extrinsics","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-extrinsics.md","tags":[],"version":"current","frontMatter":{"title":"9. Extrinsics"},"sidebar":"tutorialSidebar","previous":{"title":"Polkadot Runtime","permalink":"/part-polkadot-runtime"},"next":{"title":"10. Weights","permalink":"/id-weights"}},{"unversionedId":"id-glossary","id":"id-glossary","title":"Glossary","description":"$_{{n}}$","source":"@site/docs/id-glossary.md","sourceDirName":".","slug":"/id-glossary","permalink":"/id-glossary","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-glossary.md","tags":[],"version":"current","frontMatter":{"title":"Glossary"},"sidebar":"tutorialSidebar","previous":{"title":"Appendix C: Runtime API","permalink":"/chap-runtime-api"}},{"unversionedId":"id-polkadot-protocol","id":"id-polkadot-protocol","title":"Polkadot Protocol","description":"The specifications are not actively maintained by the Web3 Foundation as of 02/10/2024. Please follow the RCF Process for latest protocol updates.","source":"@site/docs/id-polkadot-protocol.md","sourceDirName":".","slug":"/id-polkadot-protocol","permalink":"/id-polkadot-protocol","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-polkadot-protocol.md","tags":[],"version":"current","frontMatter":{"title":"Polkadot Protocol"},"sidebar":"tutorialSidebar","next":{"title":"Polkadot Host","permalink":"/part-polkadot-host"}},{"unversionedId":"id-weights","id":"id-weights","title":"10. Weights","description":"10.1. Motivation","source":"@site/docs/id-weights.md","sourceDirName":".","slug":"/id-weights","permalink":"/id-weights","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-weights.md","tags":[],"version":"current","frontMatter":{"title":"10. Weights"},"sidebar":"tutorialSidebar","previous":{"title":"9. Extrinsics","permalink":"/id-extrinsics"},"next":{"title":"11. Consensus","permalink":"/id-consensus"}},{"unversionedId":"Implementation Guide/faq","id":"Implementation Guide/faq","title":"FAQ","description":"WIP","source":"@site/docs/Implementation Guide/faq.md","sourceDirName":"Implementation Guide","slug":"/Implementation Guide/faq","permalink":"/Implementation Guide/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/Implementation Guide/faq.md","tags":[],"version":"current","frontMatter":{"title":"FAQ"},"sidebar":"tutorialSidebar","previous":{"title":"Implementation Guide","permalink":"/Implementation Guide/"},"next":{"title":"Appendix A: Cryptography & Encoding","permalink":"/id-cryptography-encoding"}},{"unversionedId":"Implementation Guide/index","id":"Implementation Guide/index","title":"Implementation Guide","description":"This is the Implementation Guide [WIP!].","source":"@site/docs/Implementation Guide/index.md","sourceDirName":"Implementation Guide","slug":"/Implementation Guide/","permalink":"/Implementation Guide/","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/Implementation Guide/index.md","tags":[],"version":"current","frontMatter":{"title":"Implementation Guide"},"sidebar":"tutorialSidebar","previous":{"title":"12. Metadata","permalink":"/sect-metadata"},"next":{"title":"FAQ","permalink":"/Implementation Guide/faq"}},{"unversionedId":"part-polkadot-host","id":"part-polkadot-host","title":"Polkadot Host","description":"With the current document, we aim to specify the Polkadot Host part of the Polkadot protocol as a replicated state machine. After defining the different types of hosts in Chapter 1, we proceed to specify the representation of a valid state of the Protocol in Chapter 2. We also identify the protocol states by explaining the Polkadot state transition and discussing the detail based on which the Polkadot Host interacts with the state transition function, i.e., Runtime, in the same chapter. Following, we specify the input messages triggering the state transition and the system behavior. In Chapter 4, we specify the communication protocols and network messages required for the Polkadot Host to communicate with other nodes in the network, such as exchanging blocks and consensus messages. In Chapter 5 and Chapter 6, we specify the consensus protocol, which is responsible for keeping all the replicas in the same state. Finally, the initial state of the machine is identified and discussed in Section A.3.3.. A Polkadot Host implementation that conforms with this part of the specification should successfully be able to sync its states with the Polkadot network.","source":"@site/docs/part-polkadot-host.md","sourceDirName":".","slug":"/part-polkadot-host","permalink":"/part-polkadot-host","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/part-polkadot-host.md","tags":[],"version":"current","frontMatter":{"title":"Polkadot Host"},"sidebar":"tutorialSidebar","previous":{"title":"Polkadot Protocol","permalink":"/id-polkadot-protocol"},"next":{"title":"1. Overview","permalink":"/chap-overview"}},{"unversionedId":"part-polkadot-runtime","id":"part-polkadot-runtime","title":"Polkadot Runtime","description":"Description of various useful Runtime internals","source":"@site/docs/part-polkadot-runtime.md","sourceDirName":".","slug":"/part-polkadot-runtime","permalink":"/part-polkadot-runtime","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/part-polkadot-runtime.md","tags":[],"version":"current","frontMatter":{"title":"Polkadot Runtime"},"sidebar":"tutorialSidebar","previous":{"title":"8. Availability & Validity","permalink":"/chapter-anv"},"next":{"title":"9. Extrinsics","permalink":"/id-extrinsics"}},{"unversionedId":"sect-block-production","id":"sect-block-production","title":"5. Block Production","description":"5.1. Introduction","source":"@site/docs/sect-block-production.md","sourceDirName":".","slug":"/sect-block-production","permalink":"/sect-block-production","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-block-production.md","tags":[],"version":"current","frontMatter":{"title":"5. Block Production"},"sidebar":"tutorialSidebar","previous":{"title":"4. Networking","permalink":"/chap-networking"},"next":{"title":"6. Finality","permalink":"/sect-finality"}},{"unversionedId":"sect-finality","id":"sect-finality","title":"6. Finality","description":"6.1. Introduction","source":"@site/docs/sect-finality.md","sourceDirName":".","slug":"/sect-finality","permalink":"/sect-finality","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-finality.md","tags":[],"version":"current","frontMatter":{"title":"6. Finality"},"sidebar":"tutorialSidebar","previous":{"title":"5. Block Production","permalink":"/sect-block-production"},"next":{"title":"7. Light Clients","permalink":"/sect-lightclient"}},{"unversionedId":"sect-lightclient","id":"sect-lightclient","title":"7. Light Clients","description":"7.1. Requirements for Light Clients","source":"@site/docs/sect-lightclient.md","sourceDirName":".","slug":"/sect-lightclient","permalink":"/sect-lightclient","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-lightclient.md","tags":[],"version":"current","frontMatter":{"title":"7. Light Clients"},"sidebar":"tutorialSidebar","previous":{"title":"6. Finality","permalink":"/sect-finality"},"next":{"title":"8. Availability & Validity","permalink":"/chapter-anv"}},{"unversionedId":"sect-metadata","id":"sect-metadata","title":"12. Metadata","description":"The runtime metadata structure contains all the information necessary on how to interact with the Polkadot runtime. Considering that Polkadot runtimes are upgradable and, therefore, any interfaces are subject to change, the metadata allows developers to structure any extrinsics or storage entries accordingly.","source":"@site/docs/sect-metadata.md","sourceDirName":".","slug":"/sect-metadata","permalink":"/sect-metadata","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-metadata.md","tags":[],"version":"current","frontMatter":{"title":"12. Metadata"},"sidebar":"tutorialSidebar","previous":{"title":"11. Consensus","permalink":"/id-consensus"},"next":{"title":"Implementation Guide","permalink":"/Implementation Guide/"}},{"unversionedId":"Support Docs/privacy_policy","id":"Support Docs/privacy_policy","title":"Privacy Policy","description":"Updated December 2022","source":"@site/docs/Support Docs/privacy_policy.md","sourceDirName":"Support Docs","slug":"/Support Docs/privacy_policy","permalink":"/Support Docs/privacy_policy","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/Support Docs/privacy_policy.md","tags":[],"version":"current","frontMatter":{}}],"drafts":[],"sidebars":{"tutorialSidebar":[{"type":"doc","label":"Protocol","id":"id-polkadot-protocol","translatable":true},{"type":"category","label":"Host","collapsed":false,"link":{"type":"doc","id":"part-polkadot-host"},"items":[{"type":"doc","label":"1. Overview","id":"chap-overview","translatable":true},{"type":"doc","label":"2. States and Transitions","id":"chap-state","translatable":true},{"type":"doc","label":"3. Synchronization","id":"chap-sync","translatable":true},{"type":"doc","label":"4. Networking","id":"chap-networking","translatable":true},{"type":"doc","label":"5. Block Production","id":"sect-block-production","translatable":true},{"type":"doc","label":"6. Finality","id":"sect-finality","translatable":true},{"type":"doc","label":"7. Light Clients","id":"sect-lightclient","translatable":true},{"type":"doc","label":"8. Availability & Validity","id":"chapter-anv","translatable":true}],"collapsible":true},{"type":"category","label":"Runtime","collapsed":false,"link":{"type":"doc","id":"part-polkadot-runtime"},"items":[{"type":"doc","label":"9. Extrinsics","id":"id-extrinsics","translatable":true},{"type":"doc","label":"10. Weights","id":"id-weights","translatable":true},{"type":"doc","label":"11. Consensus","id":"id-consensus","translatable":true},{"type":"doc","label":"12. Metadata","id":"sect-metadata","translatable":true}],"collapsible":true},{"type":"category","label":"Implementation Guide","collapsed":false,"link":{"type":"doc","id":"Implementation Guide/index"},"items":[{"type":"doc","label":"FAQ","id":"Implementation Guide/faq","translatable":true}],"collapsible":true},{"type":"doc","label":"Appendix A: Cryptography & Encoding","id":"id-cryptography-encoding","translatable":true},{"type":"doc","label":"Appendix B: Host API","id":"chap-host-api","translatable":true},{"type":"doc","label":"Appendix C: Runtime API","id":"chap-runtime-api","translatable":true},{"type":"doc","label":"Glossary","id":"id-glossary","translatable":true}]}}]}},"docusaurus-plugin-content-pages":{"default":[{"type":"jsx","permalink":"/","source":"@site/src/pages/index.tsx"}]},"docusaurus-plugin-debug":{},"docusaurus-plugin-sitemap":{},"docusaurus-theme-classic":{},"docusaurus-theme-search-algolia":{},"addLocationChangeEvent":{},"resizeSvg":{},"highlightBibLinks":{},"injectGlossaryCss":{},"fixAlgoCounters":{},"checkBrokenInternalLinks":{},"redirectOldLinks":{},"navbarActiveItem":{},"docusaurus-theme-mermaid":{},"docusaurus-bootstrap-plugin":{},"docusaurus-mdx-fallback-plugin":{}}')}}]); \ No newline at end of file diff --git a/assets/js/246f2c6f.7e4923a0.js b/assets/js/246f2c6f.7e4923a0.js deleted file mode 100644 index 9ce5d904c..000000000 --- a/assets/js/246f2c6f.7e4923a0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_website=self.webpackChunkspec_website||[]).push([[285],{6267:t=>{t.exports=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"loadedVersions":[{"versionName":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","path":"/","tagsPath":"/tags","editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs","editUrlLocalized":"https://github.com/w3f/polkadot-spec/blob/main/i18n/en/docusaurus-plugin-content-docs/current","isLast":true,"routePriority":-1,"sidebarFilePath":"/home/runner/work/polkadot-spec/polkadot-spec/website/sidebars.js","contentPath":"/home/runner/work/polkadot-spec/polkadot-spec/website/docs","contentPathLocalized":"/home/runner/work/polkadot-spec/polkadot-spec/website/i18n/en/docusaurus-plugin-content-docs/current","docs":[{"unversionedId":"chap-host-api","id":"chap-host-api","title":"Appendix B: Host API","description":"Description of the expected environment available for import by the Polkadot Runtime","source":"@site/docs/chap-host-api.md","sourceDirName":".","slug":"/chap-host-api","permalink":"/chap-host-api","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-host-api.md","tags":[],"version":"current","frontMatter":{"title":"Appendix B: Host API"},"sidebar":"tutorialSidebar","previous":{"title":"Appendix A: Cryptography & Encoding","permalink":"/id-cryptography-encoding"},"next":{"title":"Appendix C: Runtime API","permalink":"/chap-runtime-api"}},{"unversionedId":"chap-networking","id":"chap-networking","title":"4. Networking","description":"This chapter, in its current form, is incomplete and considered work in progress. Authors appreciate receiving requests for clarification or any reports regarding deviation from the current Polkadot network protocol. This can be done by filing an issue in Polkadot Specification repository.","source":"@site/docs/chap-networking.md","sourceDirName":".","slug":"/chap-networking","permalink":"/chap-networking","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-networking.md","tags":[],"version":"current","frontMatter":{"title":"4. Networking"},"sidebar":"tutorialSidebar","previous":{"title":"3. Synchronization","permalink":"/chap-sync"},"next":{"title":"5. Block Production","permalink":"/sect-block-production"}},{"unversionedId":"chap-overview","id":"chap-overview","title":"1. Overview","description":"The Polkadot Protocol differentiates between different classes of Polkadot Hosts. Each class differs in its trust roots and how active or passively they interact with the network.","source":"@site/docs/chap-overview.md","sourceDirName":".","slug":"/chap-overview","permalink":"/chap-overview","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-overview.md","tags":[],"version":"current","frontMatter":{"title":"1. Overview"},"sidebar":"tutorialSidebar","previous":{"title":"Polkadot Host","permalink":"/part-polkadot-host"},"next":{"title":"2. States and Transitions","permalink":"/chap-state"}},{"unversionedId":"chap-runtime-api","id":"chap-runtime-api","title":"Appendix C: Runtime API","description":"Description of how to interact with the Runtime through its exported functions","source":"@site/docs/chap-runtime-api.md","sourceDirName":".","slug":"/chap-runtime-api","permalink":"/chap-runtime-api","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-runtime-api.md","tags":[],"version":"current","frontMatter":{"title":"Appendix C: Runtime API"},"sidebar":"tutorialSidebar","previous":{"title":"Appendix B: Host API","permalink":"/chap-host-api"},"next":{"title":"Glossary","permalink":"/id-glossary"}},{"unversionedId":"chap-state","id":"chap-state","title":"2. States and Transitions","description":"2.1. Introduction","source":"@site/docs/chap-state.md","sourceDirName":".","slug":"/chap-state","permalink":"/chap-state","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-state.md","tags":[],"version":"current","frontMatter":{"title":"2. States and Transitions"},"sidebar":"tutorialSidebar","previous":{"title":"1. Overview","permalink":"/chap-overview"},"next":{"title":"3. Synchronization","permalink":"/chap-sync"}},{"unversionedId":"chap-sync","id":"chap-sync","title":"3. Synchronization","description":"Many applications that interact with the Polkadot network, to some extent, must be able to retrieve certain information about the network. Depending on the utility, this includes validators that interact with Polkadot\u2019s consensus and need access to the full state, either from the past or just the most up-to-date state, or light clients that are only interested in the minimum information required in order to verify some claims about the state of the network, such as the balance of a specific account. To allow implementations to quickly retrieve the required information, different types of synchronization protocols are available, respectively Full, Fast, and Warp sync suited for different needs.","source":"@site/docs/chap-sync.md","sourceDirName":".","slug":"/chap-sync","permalink":"/chap-sync","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chap-sync.md","tags":[],"version":"current","frontMatter":{"title":"3. Synchronization"},"sidebar":"tutorialSidebar","previous":{"title":"2. States and Transitions","permalink":"/chap-state"},"next":{"title":"4. Networking","permalink":"/chap-networking"}},{"unversionedId":"chapter-anv","id":"chapter-anv","title":"8. Availability & Validity","description":"Polkadot serves as a replicated shared-state machine designed to resolve scalability issues and interoperability among blockchains. The validators of Polkadot execute transactions and participate in the consensus of Polkadots primary chain, the so-called relay chain. Parachains are independent networks that maintain their own state and are connected to the relay chain. Those parachains can take advantage of the relay chain consensus mechanism, including sending and receiving messages to and from other parachains. Parachain nodes that send parachain blocks, known as candidates, to the validators in order to be included in relay chain are referred to as collators.","source":"@site/docs/chapter-anv.md","sourceDirName":".","slug":"/chapter-anv","permalink":"/chapter-anv","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/chapter-anv.md","tags":[],"version":"current","frontMatter":{"title":"8. Availability & Validity"},"sidebar":"tutorialSidebar","previous":{"title":"7. Light Clients","permalink":"/sect-lightclient"},"next":{"title":"Polkadot Runtime","permalink":"/part-polkadot-runtime"}},{"unversionedId":"id-consensus","id":"id-consensus","title":"11. Consensus","description":"11.1. BABE digest messages","source":"@site/docs/id-consensus.md","sourceDirName":".","slug":"/id-consensus","permalink":"/id-consensus","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-consensus.md","tags":[],"version":"current","frontMatter":{"title":"11. Consensus"},"sidebar":"tutorialSidebar","previous":{"title":"10. Weights","permalink":"/id-weights"},"next":{"title":"12. Metadata","permalink":"/sect-metadata"}},{"unversionedId":"id-cryptography-encoding","id":"id-cryptography-encoding","title":"Appendix A: Cryptography & Encoding","description":"The appendix chapter contains various protocol details.","source":"@site/docs/id-cryptography-encoding.md","sourceDirName":".","slug":"/id-cryptography-encoding","permalink":"/id-cryptography-encoding","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-cryptography-encoding.md","tags":[],"version":"current","frontMatter":{"title":"Appendix A: Cryptography & Encoding"},"sidebar":"tutorialSidebar","previous":{"title":"FAQ","permalink":"/Implementation Guide/faq"},"next":{"title":"Appendix B: Host API","permalink":"/chap-host-api"}},{"unversionedId":"id-extrinsics","id":"id-extrinsics","title":"9. Extrinsics","description":"9.1. Introduction","source":"@site/docs/id-extrinsics.md","sourceDirName":".","slug":"/id-extrinsics","permalink":"/id-extrinsics","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-extrinsics.md","tags":[],"version":"current","frontMatter":{"title":"9. Extrinsics"},"sidebar":"tutorialSidebar","previous":{"title":"Polkadot Runtime","permalink":"/part-polkadot-runtime"},"next":{"title":"10. Weights","permalink":"/id-weights"}},{"unversionedId":"id-glossary","id":"id-glossary","title":"Glossary","description":"$_{{n}}$","source":"@site/docs/id-glossary.md","sourceDirName":".","slug":"/id-glossary","permalink":"/id-glossary","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-glossary.md","tags":[],"version":"current","frontMatter":{"title":"Glossary"},"sidebar":"tutorialSidebar","previous":{"title":"Appendix C: Runtime API","permalink":"/chap-runtime-api"}},{"unversionedId":"id-polkadot-protocol","id":"id-polkadot-protocol","title":"Polkadot Protocol","description":"This specification is Work-In-Progress and any content, structure, design and/or hyper/anchor-link is subject to change.","source":"@site/docs/id-polkadot-protocol.md","sourceDirName":".","slug":"/id-polkadot-protocol","permalink":"/id-polkadot-protocol","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-polkadot-protocol.md","tags":[],"version":"current","frontMatter":{"title":"Polkadot Protocol"},"sidebar":"tutorialSidebar","next":{"title":"Polkadot Host","permalink":"/part-polkadot-host"}},{"unversionedId":"id-weights","id":"id-weights","title":"10. Weights","description":"10.1. Motivation","source":"@site/docs/id-weights.md","sourceDirName":".","slug":"/id-weights","permalink":"/id-weights","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/id-weights.md","tags":[],"version":"current","frontMatter":{"title":"10. Weights"},"sidebar":"tutorialSidebar","previous":{"title":"9. Extrinsics","permalink":"/id-extrinsics"},"next":{"title":"11. Consensus","permalink":"/id-consensus"}},{"unversionedId":"Implementation Guide/faq","id":"Implementation Guide/faq","title":"FAQ","description":"WIP","source":"@site/docs/Implementation Guide/faq.md","sourceDirName":"Implementation Guide","slug":"/Implementation Guide/faq","permalink":"/Implementation Guide/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/Implementation Guide/faq.md","tags":[],"version":"current","frontMatter":{"title":"FAQ"},"sidebar":"tutorialSidebar","previous":{"title":"Implementation Guide","permalink":"/Implementation Guide/"},"next":{"title":"Appendix A: Cryptography & Encoding","permalink":"/id-cryptography-encoding"}},{"unversionedId":"Implementation Guide/index","id":"Implementation Guide/index","title":"Implementation Guide","description":"This is the Implementation Guide [WIP!].","source":"@site/docs/Implementation Guide/index.md","sourceDirName":"Implementation Guide","slug":"/Implementation Guide/","permalink":"/Implementation Guide/","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/Implementation Guide/index.md","tags":[],"version":"current","frontMatter":{"title":"Implementation Guide"},"sidebar":"tutorialSidebar","previous":{"title":"12. Metadata","permalink":"/sect-metadata"},"next":{"title":"FAQ","permalink":"/Implementation Guide/faq"}},{"unversionedId":"part-polkadot-host","id":"part-polkadot-host","title":"Polkadot Host","description":"With the current document, we aim to specify the Polkadot Host part of the Polkadot protocol as a replicated state machine. After defining the different types of hosts in Chapter 1, we proceed to specify the representation of a valid state of the Protocol in Chapter 2. We also identify the protocol states by explaining the Polkadot state transition and discussing the detail based on which the Polkadot Host interacts with the state transition function, i.e., Runtime, in the same chapter. Following, we specify the input messages triggering the state transition and the system behavior. In Chapter 4, we specify the communication protocols and network messages required for the Polkadot Host to communicate with other nodes in the network, such as exchanging blocks and consensus messages. In Chapter 5 and Chapter 6, we specify the consensus protocol, which is responsible for keeping all the replicas in the same state. Finally, the initial state of the machine is identified and discussed in Section A.3.3.. A Polkadot Host implementation that conforms with this part of the specification should successfully be able to sync its states with the Polkadot network.","source":"@site/docs/part-polkadot-host.md","sourceDirName":".","slug":"/part-polkadot-host","permalink":"/part-polkadot-host","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/part-polkadot-host.md","tags":[],"version":"current","frontMatter":{"title":"Polkadot Host"},"sidebar":"tutorialSidebar","previous":{"title":"Polkadot Protocol","permalink":"/id-polkadot-protocol"},"next":{"title":"1. Overview","permalink":"/chap-overview"}},{"unversionedId":"part-polkadot-runtime","id":"part-polkadot-runtime","title":"Polkadot Runtime","description":"Description of various useful Runtime internals","source":"@site/docs/part-polkadot-runtime.md","sourceDirName":".","slug":"/part-polkadot-runtime","permalink":"/part-polkadot-runtime","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/part-polkadot-runtime.md","tags":[],"version":"current","frontMatter":{"title":"Polkadot Runtime"},"sidebar":"tutorialSidebar","previous":{"title":"8. Availability & Validity","permalink":"/chapter-anv"},"next":{"title":"9. Extrinsics","permalink":"/id-extrinsics"}},{"unversionedId":"sect-block-production","id":"sect-block-production","title":"5. Block Production","description":"5.1. Introduction","source":"@site/docs/sect-block-production.md","sourceDirName":".","slug":"/sect-block-production","permalink":"/sect-block-production","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-block-production.md","tags":[],"version":"current","frontMatter":{"title":"5. Block Production"},"sidebar":"tutorialSidebar","previous":{"title":"4. Networking","permalink":"/chap-networking"},"next":{"title":"6. Finality","permalink":"/sect-finality"}},{"unversionedId":"sect-finality","id":"sect-finality","title":"6. Finality","description":"6.1. Introduction","source":"@site/docs/sect-finality.md","sourceDirName":".","slug":"/sect-finality","permalink":"/sect-finality","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-finality.md","tags":[],"version":"current","frontMatter":{"title":"6. Finality"},"sidebar":"tutorialSidebar","previous":{"title":"5. Block Production","permalink":"/sect-block-production"},"next":{"title":"7. Light Clients","permalink":"/sect-lightclient"}},{"unversionedId":"sect-lightclient","id":"sect-lightclient","title":"7. Light Clients","description":"7.1. Requirements for Light Clients","source":"@site/docs/sect-lightclient.md","sourceDirName":".","slug":"/sect-lightclient","permalink":"/sect-lightclient","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-lightclient.md","tags":[],"version":"current","frontMatter":{"title":"7. Light Clients"},"sidebar":"tutorialSidebar","previous":{"title":"6. Finality","permalink":"/sect-finality"},"next":{"title":"8. Availability & Validity","permalink":"/chapter-anv"}},{"unversionedId":"sect-metadata","id":"sect-metadata","title":"12. Metadata","description":"The runtime metadata structure contains all the information necessary on how to interact with the Polkadot runtime. Considering that Polkadot runtimes are upgradable and, therefore, any interfaces are subject to change, the metadata allows developers to structure any extrinsics or storage entries accordingly.","source":"@site/docs/sect-metadata.md","sourceDirName":".","slug":"/sect-metadata","permalink":"/sect-metadata","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/sect-metadata.md","tags":[],"version":"current","frontMatter":{"title":"12. Metadata"},"sidebar":"tutorialSidebar","previous":{"title":"11. Consensus","permalink":"/id-consensus"},"next":{"title":"Implementation Guide","permalink":"/Implementation Guide/"}},{"unversionedId":"Support Docs/privacy_policy","id":"Support Docs/privacy_policy","title":"Privacy Policy","description":"Updated December 2022","source":"@site/docs/Support Docs/privacy_policy.md","sourceDirName":"Support Docs","slug":"/Support Docs/privacy_policy","permalink":"/Support Docs/privacy_policy","draft":false,"unlisted":false,"editUrl":"https://github.com/w3f/polkadot-spec/blob/main/docs/Support Docs/privacy_policy.md","tags":[],"version":"current","frontMatter":{}}],"drafts":[],"sidebars":{"tutorialSidebar":[{"type":"doc","label":"Protocol","id":"id-polkadot-protocol","translatable":true},{"type":"category","label":"Host","collapsed":false,"link":{"type":"doc","id":"part-polkadot-host"},"items":[{"type":"doc","label":"1. Overview","id":"chap-overview","translatable":true},{"type":"doc","label":"2. States and Transitions","id":"chap-state","translatable":true},{"type":"doc","label":"3. Synchronization","id":"chap-sync","translatable":true},{"type":"doc","label":"4. Networking","id":"chap-networking","translatable":true},{"type":"doc","label":"5. Block Production","id":"sect-block-production","translatable":true},{"type":"doc","label":"6. Finality","id":"sect-finality","translatable":true},{"type":"doc","label":"7. Light Clients","id":"sect-lightclient","translatable":true},{"type":"doc","label":"8. Availability & Validity","id":"chapter-anv","translatable":true}],"collapsible":true},{"type":"category","label":"Runtime","collapsed":false,"link":{"type":"doc","id":"part-polkadot-runtime"},"items":[{"type":"doc","label":"9. Extrinsics","id":"id-extrinsics","translatable":true},{"type":"doc","label":"10. Weights","id":"id-weights","translatable":true},{"type":"doc","label":"11. Consensus","id":"id-consensus","translatable":true},{"type":"doc","label":"12. Metadata","id":"sect-metadata","translatable":true}],"collapsible":true},{"type":"category","label":"Implementation Guide","collapsed":false,"link":{"type":"doc","id":"Implementation Guide/index"},"items":[{"type":"doc","label":"FAQ","id":"Implementation Guide/faq","translatable":true}],"collapsible":true},{"type":"doc","label":"Appendix A: Cryptography & Encoding","id":"id-cryptography-encoding","translatable":true},{"type":"doc","label":"Appendix B: Host API","id":"chap-host-api","translatable":true},{"type":"doc","label":"Appendix C: Runtime API","id":"chap-runtime-api","translatable":true},{"type":"doc","label":"Glossary","id":"id-glossary","translatable":true}]}}]}},"docusaurus-plugin-content-pages":{"default":[{"type":"jsx","permalink":"/","source":"@site/src/pages/index.tsx"}]},"docusaurus-plugin-debug":{},"docusaurus-plugin-sitemap":{},"docusaurus-theme-classic":{},"docusaurus-theme-search-algolia":{},"addLocationChangeEvent":{},"resizeSvg":{},"highlightBibLinks":{},"injectGlossaryCss":{},"fixAlgoCounters":{},"checkBrokenInternalLinks":{},"redirectOldLinks":{},"navbarActiveItem":{},"docusaurus-theme-mermaid":{},"docusaurus-bootstrap-plugin":{},"docusaurus-mdx-fallback-plugin":{}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.f3cb9084.js b/assets/js/935f2afb.5d2656e1.js similarity index 66% rename from assets/js/935f2afb.f3cb9084.js rename to assets/js/935f2afb.5d2656e1.js index 980e19b03..7601f14df 100644 --- a/assets/js/935f2afb.f3cb9084.js +++ b/assets/js/935f2afb.5d2656e1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkspec_website=self.webpackChunkspec_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Protocol","href":"/id-polkadot-protocol","docId":"id-polkadot-protocol","unlisted":false},{"type":"category","label":"Host","collapsed":false,"items":[{"type":"link","label":"1. Overview","href":"/chap-overview","docId":"chap-overview","unlisted":false},{"type":"link","label":"2. States and Transitions","href":"/chap-state","docId":"chap-state","unlisted":false},{"type":"link","label":"3. Synchronization","href":"/chap-sync","docId":"chap-sync","unlisted":false},{"type":"link","label":"4. Networking","href":"/chap-networking","docId":"chap-networking","unlisted":false},{"type":"link","label":"5. Block Production","href":"/sect-block-production","docId":"sect-block-production","unlisted":false},{"type":"link","label":"6. Finality","href":"/sect-finality","docId":"sect-finality","unlisted":false},{"type":"link","label":"7. Light Clients","href":"/sect-lightclient","docId":"sect-lightclient","unlisted":false},{"type":"link","label":"8. Availability & Validity","href":"/chapter-anv","docId":"chapter-anv","unlisted":false}],"collapsible":true,"href":"/part-polkadot-host"},{"type":"category","label":"Runtime","collapsed":false,"items":[{"type":"link","label":"9. Extrinsics","href":"/id-extrinsics","docId":"id-extrinsics","unlisted":false},{"type":"link","label":"10. Weights","href":"/id-weights","docId":"id-weights","unlisted":false},{"type":"link","label":"11. Consensus","href":"/id-consensus","docId":"id-consensus","unlisted":false},{"type":"link","label":"12. Metadata","href":"/sect-metadata","docId":"sect-metadata","unlisted":false}],"collapsible":true,"href":"/part-polkadot-runtime"},{"type":"category","label":"Implementation Guide","collapsed":false,"items":[{"type":"link","label":"FAQ","href":"/Implementation Guide/faq","docId":"Implementation Guide/faq","unlisted":false}],"collapsible":true,"href":"/Implementation Guide/"},{"type":"link","label":"Appendix A: Cryptography & Encoding","href":"/id-cryptography-encoding","docId":"id-cryptography-encoding","unlisted":false},{"type":"link","label":"Appendix B: Host API","href":"/chap-host-api","docId":"chap-host-api","unlisted":false},{"type":"link","label":"Appendix C: Runtime API","href":"/chap-runtime-api","docId":"chap-runtime-api","unlisted":false},{"type":"link","label":"Glossary","href":"/id-glossary","docId":"id-glossary","unlisted":false}]},"docs":{"chap-host-api":{"id":"chap-host-api","title":"Appendix B: Host API","description":"Description of the expected environment available for import by the Polkadot Runtime","sidebar":"tutorialSidebar"},"chap-networking":{"id":"chap-networking","title":"4. Networking","description":"This chapter, in its current form, is incomplete and considered work in progress. Authors appreciate receiving requests for clarification or any reports regarding deviation from the current Polkadot network protocol. This can be done by filing an issue in Polkadot Specification repository.","sidebar":"tutorialSidebar"},"chap-overview":{"id":"chap-overview","title":"1. Overview","description":"The Polkadot Protocol differentiates between different classes of Polkadot Hosts. Each class differs in its trust roots and how active or passively they interact with the network.","sidebar":"tutorialSidebar"},"chap-runtime-api":{"id":"chap-runtime-api","title":"Appendix C: Runtime API","description":"Description of how to interact with the Runtime through its exported functions","sidebar":"tutorialSidebar"},"chap-state":{"id":"chap-state","title":"2. States and Transitions","description":"2.1. Introduction","sidebar":"tutorialSidebar"},"chap-sync":{"id":"chap-sync","title":"3. Synchronization","description":"Many applications that interact with the Polkadot network, to some extent, must be able to retrieve certain information about the network. Depending on the utility, this includes validators that interact with Polkadot\u2019s consensus and need access to the full state, either from the past or just the most up-to-date state, or light clients that are only interested in the minimum information required in order to verify some claims about the state of the network, such as the balance of a specific account. To allow implementations to quickly retrieve the required information, different types of synchronization protocols are available, respectively Full, Fast, and Warp sync suited for different needs.","sidebar":"tutorialSidebar"},"chapter-anv":{"id":"chapter-anv","title":"8. Availability & Validity","description":"Polkadot serves as a replicated shared-state machine designed to resolve scalability issues and interoperability among blockchains. The validators of Polkadot execute transactions and participate in the consensus of Polkadots primary chain, the so-called relay chain. Parachains are independent networks that maintain their own state and are connected to the relay chain. Those parachains can take advantage of the relay chain consensus mechanism, including sending and receiving messages to and from other parachains. Parachain nodes that send parachain blocks, known as candidates, to the validators in order to be included in relay chain are referred to as collators.","sidebar":"tutorialSidebar"},"id-consensus":{"id":"id-consensus","title":"11. Consensus","description":"11.1. BABE digest messages","sidebar":"tutorialSidebar"},"id-cryptography-encoding":{"id":"id-cryptography-encoding","title":"Appendix A: Cryptography & Encoding","description":"The appendix chapter contains various protocol details.","sidebar":"tutorialSidebar"},"id-extrinsics":{"id":"id-extrinsics","title":"9. Extrinsics","description":"9.1. Introduction","sidebar":"tutorialSidebar"},"id-glossary":{"id":"id-glossary","title":"Glossary","description":"$_{{n}}$","sidebar":"tutorialSidebar"},"id-polkadot-protocol":{"id":"id-polkadot-protocol","title":"Polkadot Protocol","description":"This specification is Work-In-Progress and any content, structure, design and/or hyper/anchor-link is subject to change.","sidebar":"tutorialSidebar"},"id-weights":{"id":"id-weights","title":"10. Weights","description":"10.1. Motivation","sidebar":"tutorialSidebar"},"Implementation Guide/faq":{"id":"Implementation Guide/faq","title":"FAQ","description":"WIP","sidebar":"tutorialSidebar"},"Implementation Guide/index":{"id":"Implementation Guide/index","title":"Implementation Guide","description":"This is the Implementation Guide [WIP!].","sidebar":"tutorialSidebar"},"part-polkadot-host":{"id":"part-polkadot-host","title":"Polkadot Host","description":"With the current document, we aim to specify the Polkadot Host part of the Polkadot protocol as a replicated state machine. After defining the different types of hosts in Chapter 1, we proceed to specify the representation of a valid state of the Protocol in Chapter 2. We also identify the protocol states by explaining the Polkadot state transition and discussing the detail based on which the Polkadot Host interacts with the state transition function, i.e., Runtime, in the same chapter. Following, we specify the input messages triggering the state transition and the system behavior. In Chapter 4, we specify the communication protocols and network messages required for the Polkadot Host to communicate with other nodes in the network, such as exchanging blocks and consensus messages. In Chapter 5 and Chapter 6, we specify the consensus protocol, which is responsible for keeping all the replicas in the same state. Finally, the initial state of the machine is identified and discussed in Section A.3.3.. A Polkadot Host implementation that conforms with this part of the specification should successfully be able to sync its states with the Polkadot network.","sidebar":"tutorialSidebar"},"part-polkadot-runtime":{"id":"part-polkadot-runtime","title":"Polkadot Runtime","description":"Description of various useful Runtime internals","sidebar":"tutorialSidebar"},"sect-block-production":{"id":"sect-block-production","title":"5. Block Production","description":"5.1. Introduction","sidebar":"tutorialSidebar"},"sect-finality":{"id":"sect-finality","title":"6. Finality","description":"6.1. Introduction","sidebar":"tutorialSidebar"},"sect-lightclient":{"id":"sect-lightclient","title":"7. Light Clients","description":"7.1. Requirements for Light Clients","sidebar":"tutorialSidebar"},"sect-metadata":{"id":"sect-metadata","title":"12. Metadata","description":"The runtime metadata structure contains all the information necessary on how to interact with the Polkadot runtime. Considering that Polkadot runtimes are upgradable and, therefore, any interfaces are subject to change, the metadata allows developers to structure any extrinsics or storage entries accordingly.","sidebar":"tutorialSidebar"},"Support Docs/privacy_policy":{"id":"Support Docs/privacy_policy","title":"Privacy Policy","description":"Updated December 2022"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkspec_website=self.webpackChunkspec_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Protocol","href":"/id-polkadot-protocol","docId":"id-polkadot-protocol","unlisted":false},{"type":"category","label":"Host","collapsed":false,"items":[{"type":"link","label":"1. Overview","href":"/chap-overview","docId":"chap-overview","unlisted":false},{"type":"link","label":"2. States and Transitions","href":"/chap-state","docId":"chap-state","unlisted":false},{"type":"link","label":"3. Synchronization","href":"/chap-sync","docId":"chap-sync","unlisted":false},{"type":"link","label":"4. Networking","href":"/chap-networking","docId":"chap-networking","unlisted":false},{"type":"link","label":"5. Block Production","href":"/sect-block-production","docId":"sect-block-production","unlisted":false},{"type":"link","label":"6. Finality","href":"/sect-finality","docId":"sect-finality","unlisted":false},{"type":"link","label":"7. Light Clients","href":"/sect-lightclient","docId":"sect-lightclient","unlisted":false},{"type":"link","label":"8. Availability & Validity","href":"/chapter-anv","docId":"chapter-anv","unlisted":false}],"collapsible":true,"href":"/part-polkadot-host"},{"type":"category","label":"Runtime","collapsed":false,"items":[{"type":"link","label":"9. Extrinsics","href":"/id-extrinsics","docId":"id-extrinsics","unlisted":false},{"type":"link","label":"10. Weights","href":"/id-weights","docId":"id-weights","unlisted":false},{"type":"link","label":"11. Consensus","href":"/id-consensus","docId":"id-consensus","unlisted":false},{"type":"link","label":"12. Metadata","href":"/sect-metadata","docId":"sect-metadata","unlisted":false}],"collapsible":true,"href":"/part-polkadot-runtime"},{"type":"category","label":"Implementation Guide","collapsed":false,"items":[{"type":"link","label":"FAQ","href":"/Implementation Guide/faq","docId":"Implementation Guide/faq","unlisted":false}],"collapsible":true,"href":"/Implementation Guide/"},{"type":"link","label":"Appendix A: Cryptography & Encoding","href":"/id-cryptography-encoding","docId":"id-cryptography-encoding","unlisted":false},{"type":"link","label":"Appendix B: Host API","href":"/chap-host-api","docId":"chap-host-api","unlisted":false},{"type":"link","label":"Appendix C: Runtime API","href":"/chap-runtime-api","docId":"chap-runtime-api","unlisted":false},{"type":"link","label":"Glossary","href":"/id-glossary","docId":"id-glossary","unlisted":false}]},"docs":{"chap-host-api":{"id":"chap-host-api","title":"Appendix B: Host API","description":"Description of the expected environment available for import by the Polkadot Runtime","sidebar":"tutorialSidebar"},"chap-networking":{"id":"chap-networking","title":"4. Networking","description":"This chapter, in its current form, is incomplete and considered work in progress. Authors appreciate receiving requests for clarification or any reports regarding deviation from the current Polkadot network protocol. This can be done by filing an issue in Polkadot Specification repository.","sidebar":"tutorialSidebar"},"chap-overview":{"id":"chap-overview","title":"1. Overview","description":"The Polkadot Protocol differentiates between different classes of Polkadot Hosts. Each class differs in its trust roots and how active or passively they interact with the network.","sidebar":"tutorialSidebar"},"chap-runtime-api":{"id":"chap-runtime-api","title":"Appendix C: Runtime API","description":"Description of how to interact with the Runtime through its exported functions","sidebar":"tutorialSidebar"},"chap-state":{"id":"chap-state","title":"2. States and Transitions","description":"2.1. Introduction","sidebar":"tutorialSidebar"},"chap-sync":{"id":"chap-sync","title":"3. Synchronization","description":"Many applications that interact with the Polkadot network, to some extent, must be able to retrieve certain information about the network. Depending on the utility, this includes validators that interact with Polkadot\u2019s consensus and need access to the full state, either from the past or just the most up-to-date state, or light clients that are only interested in the minimum information required in order to verify some claims about the state of the network, such as the balance of a specific account. To allow implementations to quickly retrieve the required information, different types of synchronization protocols are available, respectively Full, Fast, and Warp sync suited for different needs.","sidebar":"tutorialSidebar"},"chapter-anv":{"id":"chapter-anv","title":"8. Availability & Validity","description":"Polkadot serves as a replicated shared-state machine designed to resolve scalability issues and interoperability among blockchains. The validators of Polkadot execute transactions and participate in the consensus of Polkadots primary chain, the so-called relay chain. Parachains are independent networks that maintain their own state and are connected to the relay chain. Those parachains can take advantage of the relay chain consensus mechanism, including sending and receiving messages to and from other parachains. Parachain nodes that send parachain blocks, known as candidates, to the validators in order to be included in relay chain are referred to as collators.","sidebar":"tutorialSidebar"},"id-consensus":{"id":"id-consensus","title":"11. Consensus","description":"11.1. BABE digest messages","sidebar":"tutorialSidebar"},"id-cryptography-encoding":{"id":"id-cryptography-encoding","title":"Appendix A: Cryptography & Encoding","description":"The appendix chapter contains various protocol details.","sidebar":"tutorialSidebar"},"id-extrinsics":{"id":"id-extrinsics","title":"9. Extrinsics","description":"9.1. Introduction","sidebar":"tutorialSidebar"},"id-glossary":{"id":"id-glossary","title":"Glossary","description":"$_{{n}}$","sidebar":"tutorialSidebar"},"id-polkadot-protocol":{"id":"id-polkadot-protocol","title":"Polkadot Protocol","description":"The specifications are not actively maintained by the Web3 Foundation as of 02/10/2024. Please follow the RCF Process for latest protocol updates.","sidebar":"tutorialSidebar"},"id-weights":{"id":"id-weights","title":"10. Weights","description":"10.1. Motivation","sidebar":"tutorialSidebar"},"Implementation Guide/faq":{"id":"Implementation Guide/faq","title":"FAQ","description":"WIP","sidebar":"tutorialSidebar"},"Implementation Guide/index":{"id":"Implementation Guide/index","title":"Implementation Guide","description":"This is the Implementation Guide [WIP!].","sidebar":"tutorialSidebar"},"part-polkadot-host":{"id":"part-polkadot-host","title":"Polkadot Host","description":"With the current document, we aim to specify the Polkadot Host part of the Polkadot protocol as a replicated state machine. After defining the different types of hosts in Chapter 1, we proceed to specify the representation of a valid state of the Protocol in Chapter 2. We also identify the protocol states by explaining the Polkadot state transition and discussing the detail based on which the Polkadot Host interacts with the state transition function, i.e., Runtime, in the same chapter. Following, we specify the input messages triggering the state transition and the system behavior. In Chapter 4, we specify the communication protocols and network messages required for the Polkadot Host to communicate with other nodes in the network, such as exchanging blocks and consensus messages. In Chapter 5 and Chapter 6, we specify the consensus protocol, which is responsible for keeping all the replicas in the same state. Finally, the initial state of the machine is identified and discussed in Section A.3.3.. A Polkadot Host implementation that conforms with this part of the specification should successfully be able to sync its states with the Polkadot network.","sidebar":"tutorialSidebar"},"part-polkadot-runtime":{"id":"part-polkadot-runtime","title":"Polkadot Runtime","description":"Description of various useful Runtime internals","sidebar":"tutorialSidebar"},"sect-block-production":{"id":"sect-block-production","title":"5. Block Production","description":"5.1. Introduction","sidebar":"tutorialSidebar"},"sect-finality":{"id":"sect-finality","title":"6. Finality","description":"6.1. Introduction","sidebar":"tutorialSidebar"},"sect-lightclient":{"id":"sect-lightclient","title":"7. Light Clients","description":"7.1. Requirements for Light Clients","sidebar":"tutorialSidebar"},"sect-metadata":{"id":"sect-metadata","title":"12. Metadata","description":"The runtime metadata structure contains all the information necessary on how to interact with the Polkadot runtime. Considering that Polkadot runtimes are upgradable and, therefore, any interfaces are subject to change, the metadata allows developers to structure any extrinsics or storage entries accordingly.","sidebar":"tutorialSidebar"},"Support Docs/privacy_policy":{"id":"Support Docs/privacy_policy","title":"Privacy Policy","description":"Updated December 2022"}}}')}}]); \ No newline at end of file diff --git a/assets/js/d2c8857d.7c941d50.js b/assets/js/d2c8857d.7c941d50.js deleted file mode 100644 index e25d9c86f..000000000 --- a/assets/js/d2c8857d.7c941d50.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkspec_website=self.webpackChunkspec_website||[]).push([[620],{3905:(e,t,o)=>{o.d(t,{Zo:()=>p,kt:()=>m});var n=o(7294);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 l=n.createContext({}),s=function(e){var t=n.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=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)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(o),h=r,m=d["".concat(l,".").concat(h)]||d[h]||u[h]||a;return o?n.createElement(m,i(i({ref:t},p),{},{components:o})):n.createElement(m,i({ref:t},p))}));function m(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 c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[d]="string"==typeof e?e:r,i[1]=c;for(var s=2;s{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>s});var n=o(7462),r=(o(7294),o(3905));const a={title:"Polkadot Protocol"},i=void 0,c={unversionedId:"id-polkadot-protocol",id:"id-polkadot-protocol",title:"Polkadot Protocol",description:"This specification is Work-In-Progress and any content, structure, design and/or hyper/anchor-link is subject to change.",source:"@site/docs/id-polkadot-protocol.md",sourceDirName:".",slug:"/id-polkadot-protocol",permalink:"/id-polkadot-protocol",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-spec/blob/main/docs/id-polkadot-protocol.md",tags:[],version:"current",frontMatter:{title:"Polkadot Protocol"},sidebar:"tutorialSidebar",next:{title:"Polkadot Host",permalink:"/part-polkadot-host"}},l={},s=[],p={toc:s},d="wrapper";function u(e){let{components:t,...o}=e;return(0,r.kt)(d,(0,n.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"This specification is ",(0,r.kt)("strong",{parentName:"p"},"Work-In-Progress")," and any content, structure, design and/or hyper/anchor-link ",(0,r.kt)("strong",{parentName:"p"},"is subject to change"),".")),(0,r.kt)("p",null,"Formally, Polkadot is a replicated sharded state machine designed to resolve the scalability and interoperability among blockchains. In Polkadot vocabulary, shards are called ",(0,r.kt)("em",{parentName:"p"},"parachains")," and Polkadot ",(0,r.kt)("em",{parentName:"p"},"relay chain")," is part of the protocol ensuring global consensus among all the parachains. The Polkadot relay chain protocol, henceforward called ",(0,r.kt)("em",{parentName:"p"},"Polkadot protocol"),", can itself be considered as a replicated state machine on its own. As such, the protocol can be specified by identifying the state machine and the replication strategy."),(0,r.kt)("p",null,"From a more technical point of view, the Polkadot protocol has been divided into two parts, the ",(0,r.kt)("a",{parentName:"p",href:"part-polkadot-runtime"},"Polkadot Runtime")," and the ",(0,r.kt)("a",{parentName:"p",href:"part-polkadot-host"},"Polkadot Host"),". The Runtime comprises the state transition logic for the Polkadot protocol and is designed and be upgradable via the consensus engine without requiring hard forks of the blockchain. The Polkadot Host provides the necessary functionality for the Runtime to execute its state transition logic, such as an execution environment, I/O, consensus and network interoperability between parachains. The Polkadot Host is planned to be stable and mostly static for the lifetime duration of the Polkadot protocol, the goal being that most changes to the protocol are primarily conducted by applying Runtime updates and not having to coordinate with network participants on manual software updates."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d2c8857d.af16c09e.js b/assets/js/d2c8857d.af16c09e.js new file mode 100644 index 000000000..d5d2dc441 --- /dev/null +++ b/assets/js/d2c8857d.af16c09e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkspec_website=self.webpackChunkspec_website||[]).push([[620],{3905:(e,t,o)=>{o.d(t,{Zo:()=>p,kt:()=>h});var a=o(7294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var c=a.createContext({}),s=function(e){var t=a.useContext(c),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(o),f=n,h=d["".concat(c,".").concat(f)]||d[f]||u[f]||r;return o?a.createElement(h,i(i({ref:t},p),{},{components:o})):a.createElement(h,i({ref:t},p))}));function h(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,i=new Array(r);i[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var a=o(7462),n=(o(7294),o(3905));const r={title:"Polkadot Protocol"},i=void 0,l={unversionedId:"id-polkadot-protocol",id:"id-polkadot-protocol",title:"Polkadot Protocol",description:"The specifications are not actively maintained by the Web3 Foundation as of 02/10/2024. Please follow the RCF Process for latest protocol updates.",source:"@site/docs/id-polkadot-protocol.md",sourceDirName:".",slug:"/id-polkadot-protocol",permalink:"/id-polkadot-protocol",draft:!1,unlisted:!1,editUrl:"https://github.com/w3f/polkadot-spec/blob/main/docs/id-polkadot-protocol.md",tags:[],version:"current",frontMatter:{title:"Polkadot Protocol"},sidebar:"tutorialSidebar",next:{title:"Polkadot Host",permalink:"/part-polkadot-host"}},c={},s=[],p={toc:s},d="wrapper";function u(e){let{components:t,...o}=e;return(0,n.kt)(d,(0,a.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"The specifications are not actively maintained by the Web3 Foundation as of 02/10/2024. Please follow the ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/RFCs"},"RCF Process")," for latest protocol updates. ")),(0,n.kt)("p",null,"Formally, Polkadot is a replicated sharded state machine designed to resolve the scalability and interoperability among blockchains. In Polkadot vocabulary, shards are called ",(0,n.kt)("em",{parentName:"p"},"parachains")," and Polkadot ",(0,n.kt)("em",{parentName:"p"},"relay chain")," is part of the protocol ensuring global consensus among all the parachains. The Polkadot relay chain protocol, henceforward called ",(0,n.kt)("em",{parentName:"p"},"Polkadot protocol"),", can itself be considered as a replicated state machine on its own. As such, the protocol can be specified by identifying the state machine and the replication strategy."),(0,n.kt)("p",null,"From a more technical point of view, the Polkadot protocol has been divided into two parts, the ",(0,n.kt)("a",{parentName:"p",href:"part-polkadot-runtime"},"Polkadot Runtime")," and the ",(0,n.kt)("a",{parentName:"p",href:"part-polkadot-host"},"Polkadot Host"),". The Runtime comprises the state transition logic for the Polkadot protocol and is designed and be upgradable via the consensus engine without requiring hard forks of the blockchain. The Polkadot Host provides the necessary functionality for the Runtime to execute its state transition logic, such as an execution environment, I/O, consensus and network interoperability between parachains. The Polkadot Host is planned to be stable and mostly static for the lifetime duration of the Polkadot protocol, the goal being that most changes to the protocol are primarily conducted by applying Runtime updates and not having to coordinate with network participants on manual software updates."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.31288950.js b/assets/js/runtime~main.1ea3ebbc.js similarity index 93% rename from assets/js/runtime~main.31288950.js rename to assets/js/runtime~main.1ea3ebbc.js index 998e2ac6d..a44c43288 100644 --- a/assets/js/runtime~main.31288950.js +++ b/assets/js/runtime~main.1ea3ebbc.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,a,f,r,d={},c={};function b(e){var t=c[e];if(void 0!==t)return t.exports;var a=c[e]={exports:{}};return d[e].call(a.exports,a,a.exports,b),a.exports}b.m=d,e=[],b.O=(t,a,f,r)=>{if(!a){var d=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](a[o])))?a.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[a,f,r]},b.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return b.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var d={};t=t||[null,a({}),a([]),a(a)];for(var c=2&f&&e;"object"==typeof c&&!~t.indexOf(c);c=a(c))Object.getOwnPropertyNames(c).forEach((t=>d[t]=()=>e[t]));return d.default=()=>e,b.d(r,d),r},b.d=(e,t)=>{for(var a in t)b.o(t,a)&&!b.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((t,a)=>(b.f[a](e,t),t)),[])),b.u=e=>"assets/js/"+({6:"3fc5deb0",39:"8806c109",53:"935f2afb",102:"6794d4cd",127:"ede3a018",128:"be9e4987",179:"d5f7a977",224:"def72480",237:"1df93b7f",277:"99343f5e",284:"42f94a72",285:"246f2c6f",308:"3db6f709",360:"8178bf32",368:"a94703ab",400:"fa02638f",450:"3e3590b7",511:"b6b2a0fe",513:"1e5ed2e1",514:"7e93ca54",518:"a7bd4aaa",557:"a7d18364",559:"cef840d9",578:"fe5a5a35",608:"610fbc17",616:"946bd85a",620:"d2c8857d",627:"23abe487",661:"5e95c892",695:"2fadb683",809:"6ef3e587",835:"97b0291c",843:"68e633d4",849:"41d3bc71",870:"a9dcf2ff",918:"17896441",927:"013f92d8",983:"ba8b3534"}[e]||e)+"."+{6:"ce695520",39:"489f5357",53:"f3cb9084",102:"73eab9f4",119:"74d93b00",127:"c1310bd4",128:"33869631",179:"cecdba09",224:"b614bb06",237:"5a6ec51a",277:"a332a31b",284:"5d437acf",285:"7e4923a0",308:"241ccd10",316:"ab7985ce",360:"9b911e99",368:"0a5571cd",400:"ef33da4f",426:"14afb5a3",450:"c9eefdea",487:"f0cc0621",511:"b9f6c27e",513:"549cab21",514:"478e1a74",518:"c65a6d46",557:"6c531830",559:"91721e6d",578:"6d201c2a",608:"837c256e",616:"5706d008",620:"7c941d50",627:"4924619b",645:"01d166e4",661:"2bba9759",695:"852b7483",724:"8e26f72d",772:"3d8c0c43",809:"d8ee9ab0",835:"79d73cad",843:"b74daa08",849:"4154c397",870:"1e2ff1a5",894:"33bf68f8",918:"c18f9ce0",927:"700c0f83",945:"724fb0c3",983:"32635c8d"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),f={},r="spec-website:",b.l=(e,t,a,d)=>{if(f[e])f[e].push(t);else{var c,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(a))),t)return t(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"918","3fc5deb0":"6","8806c109":"39","935f2afb":"53","6794d4cd":"102",ede3a018:"127",be9e4987:"128",d5f7a977:"179",def72480:"224","1df93b7f":"237","99343f5e":"277","42f94a72":"284","246f2c6f":"285","3db6f709":"308","8178bf32":"360",a94703ab:"368",fa02638f:"400","3e3590b7":"450",b6b2a0fe:"511","1e5ed2e1":"513","7e93ca54":"514",a7bd4aaa:"518",a7d18364:"557",cef840d9:"559",fe5a5a35:"578","610fbc17":"608","946bd85a":"616",d2c8857d:"620","23abe487":"627","5e95c892":"661","2fadb683":"695","6ef3e587":"809","97b0291c":"835","68e633d4":"843","41d3bc71":"849",a9dcf2ff:"870","013f92d8":"927",ba8b3534:"983"}[e]||e,b.p+b.u(e)},(()=>{var e={303:0,532:0};b.f.j=(t,a)=>{var f=b.o(e,t)?e[t]:void 0;if(0!==f)if(f)a.push(f[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var r=new Promise(((a,r)=>f=e[t]=[a,r]));a.push(f[2]=r);var d=b.p+b.u(t),c=new Error;b.l(d,(a=>{if(b.o(e,t)&&(0!==(f=e[t])&&(e[t]=void 0),f)){var r=a&&("load"===a.type?"missing":a.type),d=a&&a.target&&a.target.src;c.message="Loading chunk "+t+" failed.\n("+r+": "+d+")",c.name="ChunkLoadError",c.type=r,c.request=d,f[1](c)}}),"chunk-"+t,t)}},b.O.j=t=>0===e[t];var t=(t,a)=>{var f,r,d=a[0],c=a[1],o=a[2],n=0;if(d.some((t=>0!==e[t]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(t&&t(a);n{"use strict";var e,t,a,f,r,d={},c={};function b(e){var t=c[e];if(void 0!==t)return t.exports;var a=c[e]={exports:{}};return d[e].call(a.exports,a,a.exports,b),a.exports}b.m=d,e=[],b.O=(t,a,f,r)=>{if(!a){var d=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](a[o])))?a.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[a,f,r]},b.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return b.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var d={};t=t||[null,a({}),a([]),a(a)];for(var c=2&f&&e;"object"==typeof c&&!~t.indexOf(c);c=a(c))Object.getOwnPropertyNames(c).forEach((t=>d[t]=()=>e[t]));return d.default=()=>e,b.d(r,d),r},b.d=(e,t)=>{for(var a in t)b.o(t,a)&&!b.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((t,a)=>(b.f[a](e,t),t)),[])),b.u=e=>"assets/js/"+({6:"3fc5deb0",39:"8806c109",53:"935f2afb",102:"6794d4cd",127:"ede3a018",128:"be9e4987",179:"d5f7a977",224:"def72480",237:"1df93b7f",277:"99343f5e",284:"42f94a72",285:"246f2c6f",308:"3db6f709",360:"8178bf32",368:"a94703ab",400:"fa02638f",450:"3e3590b7",511:"b6b2a0fe",513:"1e5ed2e1",514:"7e93ca54",518:"a7bd4aaa",557:"a7d18364",559:"cef840d9",578:"fe5a5a35",608:"610fbc17",616:"946bd85a",620:"d2c8857d",627:"23abe487",661:"5e95c892",695:"2fadb683",809:"6ef3e587",835:"97b0291c",843:"68e633d4",849:"41d3bc71",870:"a9dcf2ff",918:"17896441",927:"013f92d8",983:"ba8b3534"}[e]||e)+"."+{6:"ce695520",39:"489f5357",53:"5d2656e1",102:"73eab9f4",119:"74d93b00",127:"c1310bd4",128:"33869631",179:"cecdba09",224:"b614bb06",237:"3331f28b",277:"a332a31b",284:"5d437acf",285:"4dc9d461",308:"241ccd10",316:"ab7985ce",360:"9b911e99",368:"0a5571cd",400:"ef33da4f",426:"14afb5a3",450:"c9eefdea",487:"f0cc0621",511:"b9f6c27e",513:"549cab21",514:"478e1a74",518:"c65a6d46",557:"6c531830",559:"91721e6d",578:"6d201c2a",608:"837c256e",616:"5706d008",620:"af16c09e",627:"4924619b",645:"01d166e4",661:"2bba9759",695:"852b7483",724:"8e26f72d",772:"3d8c0c43",809:"d8ee9ab0",835:"79d73cad",843:"b74daa08",849:"4154c397",870:"1e2ff1a5",894:"33bf68f8",918:"c18f9ce0",927:"700c0f83",945:"724fb0c3",983:"32635c8d"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),f={},r="spec-website:",b.l=(e,t,a,d)=>{if(f[e])f[e].push(t);else{var c,o;if(void 0!==a)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(a))),t)return t(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"918","3fc5deb0":"6","8806c109":"39","935f2afb":"53","6794d4cd":"102",ede3a018:"127",be9e4987:"128",d5f7a977:"179",def72480:"224","1df93b7f":"237","99343f5e":"277","42f94a72":"284","246f2c6f":"285","3db6f709":"308","8178bf32":"360",a94703ab:"368",fa02638f:"400","3e3590b7":"450",b6b2a0fe:"511","1e5ed2e1":"513","7e93ca54":"514",a7bd4aaa:"518",a7d18364:"557",cef840d9:"559",fe5a5a35:"578","610fbc17":"608","946bd85a":"616",d2c8857d:"620","23abe487":"627","5e95c892":"661","2fadb683":"695","6ef3e587":"809","97b0291c":"835","68e633d4":"843","41d3bc71":"849",a9dcf2ff:"870","013f92d8":"927",ba8b3534:"983"}[e]||e,b.p+b.u(e)},(()=>{var e={303:0,532:0};b.f.j=(t,a)=>{var f=b.o(e,t)?e[t]:void 0;if(0!==f)if(f)a.push(f[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var r=new Promise(((a,r)=>f=e[t]=[a,r]));a.push(f[2]=r);var d=b.p+b.u(t),c=new Error;b.l(d,(a=>{if(b.o(e,t)&&(0!==(f=e[t])&&(e[t]=void 0),f)){var r=a&&("load"===a.type?"missing":a.type),d=a&&a.target&&a.target.src;c.message="Loading chunk "+t+" failed.\n("+r+": "+d+")",c.name="ChunkLoadError",c.type=r,c.request=d,f[1](c)}}),"chunk-"+t,t)}},b.O.j=t=>0===e[t];var t=(t,a)=>{var f,r,d=a[0],c=a[1],o=a[2],n=0;if(d.some((t=>0!==e[t]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(t&&t(a);nAppendix B: Host API | Polkadot Protocol Specification - + diff --git a/chap-networking.html b/chap-networking.html index f5cb05d4b..7d19ad8f8 100644 --- a/chap-networking.html +++ b/chap-networking.html @@ -6,7 +6,7 @@ 4. Networking | Polkadot Protocol Specification - + diff --git a/chap-overview.html b/chap-overview.html index 54e83e64e..51effc0f4 100644 --- a/chap-overview.html +++ b/chap-overview.html @@ -6,7 +6,7 @@ 1. Overview | Polkadot Protocol Specification - + diff --git a/chap-runtime-api.html b/chap-runtime-api.html index a682d929c..48a73a81f 100644 --- a/chap-runtime-api.html +++ b/chap-runtime-api.html @@ -6,7 +6,7 @@ Appendix C: Runtime API | Polkadot Protocol Specification - + diff --git a/chap-state.html b/chap-state.html index 2410efa94..7ca1bc0b4 100644 --- a/chap-state.html +++ b/chap-state.html @@ -6,7 +6,7 @@ 2. States and Transitions | Polkadot Protocol Specification - + diff --git a/chap-sync.html b/chap-sync.html index 49f15826f..ee04fe074 100644 --- a/chap-sync.html +++ b/chap-sync.html @@ -6,7 +6,7 @@ 3. Synchronization | Polkadot Protocol Specification - + diff --git a/chapter-anv.html b/chapter-anv.html index f8d22ca3f..2eb2b4068 100644 --- a/chapter-anv.html +++ b/chapter-anv.html @@ -6,7 +6,7 @@ 8. Availability & Validity | Polkadot Protocol Specification - + diff --git a/id-consensus.html b/id-consensus.html index c34e924f2..58d8b9077 100644 --- a/id-consensus.html +++ b/id-consensus.html @@ -6,7 +6,7 @@ 11. Consensus | Polkadot Protocol Specification - + diff --git a/id-cryptography-encoding.html b/id-cryptography-encoding.html index 49f0ba304..a8ead67e3 100644 --- a/id-cryptography-encoding.html +++ b/id-cryptography-encoding.html @@ -6,7 +6,7 @@ Appendix A: Cryptography & Encoding | Polkadot Protocol Specification - + diff --git a/id-extrinsics.html b/id-extrinsics.html index 20b5c215b..269341764 100644 --- a/id-extrinsics.html +++ b/id-extrinsics.html @@ -6,7 +6,7 @@ 9. Extrinsics | Polkadot Protocol Specification - + diff --git a/id-glossary.html b/id-glossary.html index c9dea6db5..d40b6a5d2 100644 --- a/id-glossary.html +++ b/id-glossary.html @@ -6,7 +6,7 @@ Glossary | Polkadot Protocol Specification - + diff --git a/id-polkadot-protocol.html b/id-polkadot-protocol.html index 4d0bfba98..566115942 100644 --- a/id-polkadot-protocol.html +++ b/id-polkadot-protocol.html @@ -3,15 +3,15 @@ -Polkadot Protocol | Polkadot Protocol Specification +Polkadot Protocol | Polkadot Protocol Specification - +
-

Polkadot Protocol

caution

This specification is Work-In-Progress and any content, structure, design and/or hyper/anchor-link is subject to change.

Formally, Polkadot is a replicated sharded state machine designed to resolve the scalability and interoperability among blockchains. In Polkadot vocabulary, shards are called parachains and Polkadot relay chain is part of the protocol ensuring global consensus among all the parachains. The Polkadot relay chain protocol, henceforward called Polkadot protocol, can itself be considered as a replicated state machine on its own. As such, the protocol can be specified by identifying the state machine and the replication strategy.

From a more technical point of view, the Polkadot protocol has been divided into two parts, the Polkadot Runtime and the Polkadot Host. The Runtime comprises the state transition logic for the Polkadot protocol and is designed and be upgradable via the consensus engine without requiring hard forks of the blockchain. The Polkadot Host provides the necessary functionality for the Runtime to execute its state transition logic, such as an execution environment, I/O, consensus and network interoperability between parachains. The Polkadot Host is planned to be stable and mostly static for the lifetime duration of the Polkadot protocol, the goal being that most changes to the protocol are primarily conducted by applying Runtime updates and not having to coordinate with network participants on manual software updates.

+

Polkadot Protocol

note

The specifications are not actively maintained by the Web3 Foundation as of 02/10/2024. Please follow the RCF Process for latest protocol updates.

Formally, Polkadot is a replicated sharded state machine designed to resolve the scalability and interoperability among blockchains. In Polkadot vocabulary, shards are called parachains and Polkadot relay chain is part of the protocol ensuring global consensus among all the parachains. The Polkadot relay chain protocol, henceforward called Polkadot protocol, can itself be considered as a replicated state machine on its own. As such, the protocol can be specified by identifying the state machine and the replication strategy.

From a more technical point of view, the Polkadot protocol has been divided into two parts, the Polkadot Runtime and the Polkadot Host. The Runtime comprises the state transition logic for the Polkadot protocol and is designed and be upgradable via the consensus engine without requiring hard forks of the blockchain. The Polkadot Host provides the necessary functionality for the Runtime to execute its state transition logic, such as an execution environment, I/O, consensus and network interoperability between parachains. The Polkadot Host is planned to be stable and mostly static for the lifetime duration of the Polkadot protocol, the goal being that most changes to the protocol are primarily conducted by applying Runtime updates and not having to coordinate with network participants on manual software updates.

diff --git a/id-weights.html b/id-weights.html index b14e45382..e12542fb0 100644 --- a/id-weights.html +++ b/id-weights.html @@ -6,7 +6,7 @@ 10. Weights | Polkadot Protocol Specification - + diff --git a/index.html b/index.html index 216fcb180..26d286699 100644 --- a/index.html +++ b/index.html @@ -6,12 +6,12 @@ Polkadot Protocol Specification | Polkadot Protocol Specification - +
-

Polkadot

Enabling Implementers - Version 0.3.1-beta

+

Polkadot

Enabling Implementers - Version 0.3.1-beta

diff --git a/part-polkadot-host.html b/part-polkadot-host.html index da96ba470..22da0a2fd 100644 --- a/part-polkadot-host.html +++ b/part-polkadot-host.html @@ -6,7 +6,7 @@ Polkadot Host | Polkadot Protocol Specification - + diff --git a/part-polkadot-runtime.html b/part-polkadot-runtime.html index d5ee08088..7ab181692 100644 --- a/part-polkadot-runtime.html +++ b/part-polkadot-runtime.html @@ -6,7 +6,7 @@ Polkadot Runtime | Polkadot Protocol Specification - + diff --git a/sect-block-production.html b/sect-block-production.html index cd7095222..f97baeb9c 100644 --- a/sect-block-production.html +++ b/sect-block-production.html @@ -6,7 +6,7 @@ 5. Block Production | Polkadot Protocol Specification - + diff --git a/sect-finality.html b/sect-finality.html index b9888de16..5a6cce34a 100644 --- a/sect-finality.html +++ b/sect-finality.html @@ -6,7 +6,7 @@ 6. Finality | Polkadot Protocol Specification - + diff --git a/sect-lightclient.html b/sect-lightclient.html index 1c175e8f4..8f4651e0d 100644 --- a/sect-lightclient.html +++ b/sect-lightclient.html @@ -6,7 +6,7 @@ 7. Light Clients | Polkadot Protocol Specification - + diff --git a/sect-metadata.html b/sect-metadata.html index fb54b732d..c6af36b59 100644 --- a/sect-metadata.html +++ b/sect-metadata.html @@ -6,7 +6,7 @@ 12. Metadata | Polkadot Protocol Specification - +