diff --git a/develop/404.html b/develop/404.html index 69ccda5..9203c7e 100644 --- a/develop/404.html +++ b/develop/404.html @@ -4,13 +4,13 @@ Page Not Found | XDC Subnet - +
Skip to main content

Page Not Found

We could not find what you were looking for.

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

- + \ No newline at end of file diff --git a/develop/assets/js/00b375aa.584eef9a.js b/develop/assets/js/00b375aa.584eef9a.js new file mode 100644 index 0000000..e2b95ce --- /dev/null +++ b/develop/assets/js/00b375aa.584eef9a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkxdc_subnet_docs=self.webpackChunkxdc_subnet_docs||[]).push([[475],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>v});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(n),m=a,v=s["".concat(u,".").concat(m)]||s[m]||c[m]||l;return n?r.createElement(v,o(o({ref:t},d),{},{components:n})):r.createElement(v,o({ref:t},d))}));function v(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:a,o[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const l={sidebar_label:"Subnet Deployment Generator Changelog",sidebar_position:5},o="Subnet Deployment Generator Changelog",i={unversionedId:"deployment/subnet_deployment_generator_changelog",id:"deployment/subnet_deployment_generator_changelog",title:"Subnet Deployment Generator Changelog",description:"v1.0.0 - 2024/10/03",source:"@site/docs/deployment/6_subnet_deployment_generator_changelog.md",sourceDirName:"deployment",slug:"/deployment/subnet_deployment_generator_changelog",permalink:"/xdc-subnet-docs/develop/deployment/subnet_deployment_generator_changelog",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_label:"Subnet Deployment Generator Changelog",sidebar_position:5},sidebar:"defaultSidebar",previous:{title:"4. FAQ",permalink:"/xdc-subnet-docs/develop/deployment/faq"},next:{title:"Using the Subnet",permalink:"/xdc-subnet-docs/develop/category/using-the-subnet"}},u={},p=[{value:"v1.0.0 - 2024/10/03",id:"v100---20241003",level:3},{value:"v0.3.2 - 2024/08/15",id:"v032---20240815",level:3},{value:"v0.3.1 - 2024/07/24",id:"v031---20240724",level:3},{value:"v0.2.1 - 2024/01/09",id:"v021---20240109",level:3},{value:"v0.1.6",id:"v016",level:3},{value:"v0.1.5",id:"v015",level:3},{value:"v0.1.4",id:"v014",level:3}],d={toc:p},s="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(s,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"subnet-deployment-generator-changelog"},"Subnet Deployment Generator Changelog"),(0,a.kt)("h3",{id:"v100---20241003"},"v1.0.0 - 2024/10/03"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Added Configuration Generator UI"),(0,a.kt)("li",{parentName:"ul"},"Added XDC-Zero configuration generation"),(0,a.kt)("li",{parentName:"ul"},"Added Faucet and Faucet Server"),(0,a.kt)("li",{parentName:"ul"},"Added helper scripts"),(0,a.kt)("li",{parentName:"ul"},"Changed default ports of components to prevent clashing",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Stats Server - port 5213"),(0,a.kt)("li",{parentName:"ul"},"Frontend - port 5214"),(0,a.kt)("li",{parentName:"ul"},"Relayer - port 5215"),(0,a.kt)("li",{parentName:"ul"},"Faucet Server - port 5211"),(0,a.kt)("li",{parentName:"ul"},"Generator UI - port 5210"))),(0,a.kt)("li",{parentName:"ul"},"Documentation update",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"added Subnet setup video walkthrough"),(0,a.kt)("li",{parentName:"ul"},"added FAQ section"),(0,a.kt)("li",{parentName:"ul"},"added Contact section"))),(0,a.kt)("li",{parentName:"ul"},"Minor bug fixes")),(0,a.kt)("h3",{id:"v032---20240815"},"v0.3.2 - 2024/08/15"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Changed frontend default due to clashing from 5000 to 5555")),(0,a.kt)("h3",{id:"v031---20240724"},"v0.3.1 - 2024/07/24"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Use testnet by default"),(0,a.kt)("li",{parentName:"ul"},"Remove admin api by default"),(0,a.kt)("li",{parentName:"ul"},"Added PUBLIC_IP optional config in deployment-generator"),(0,a.kt)("li",{parentName:"ul"},"Bump component versions")),(0,a.kt)("h3",{id:"v021---20240109"},"v0.2.1 - 2024/01/09"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"New generation style, pulls script from github to run multiple docker images instead of generating from single image."),(0,a.kt)("li",{parentName:"ul"},"New Checkpoint Smart Contract (CSC) deployment image"),(0,a.kt)("li",{parentName:"ul"},"Supports upgradable CSC"),(0,a.kt)("li",{parentName:"ul"},"Bump components versions"),(0,a.kt)("li",{parentName:"ul"},"Fix bugs"),(0,a.kt)("li",{parentName:"ul"},"Code refactor, optimization")),(0,a.kt)("h3",{id:"v016"},"v0.1.6"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Bump relayer version to support gas fee changes")),(0,a.kt)("h3",{id:"v015"},"v0.1.5"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Added OS=mac option in 'docker.env'. This option is intended for single machine testing environment only.")),(0,a.kt)("h3",{id:"v014"},"v0.1.4"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Added custom keys functionality\n'docker.env' now accepts GRANDMASTER_PK and SUBNETS_PK. Where SUBNETS_PK can have multiple keys separated by a comma ','. Number of subnet keys must equal NUM_SUBNET. Keys are randomized if not provided."),(0,a.kt)("li",{parentName:"ul"},"Added RELAYER_MODE in 'docker.env', CSC deployment will select from 'full' or 'lite' smart contract, default 'full'."),(0,a.kt)("li",{parentName:"ul"},"Automate CHECKPOINT_CONTRACT copy-paste step (manual action no longer required)."),(0,a.kt)("li",{parentName:"ul"},"PARENTCHAIN_WALLET is no longer required in 'docker.env', the address will be derived from PARENTCHAIN_WALLET_PK. "),(0,a.kt)("li",{parentName:"ul"},"Disabled parentchain observer in docker-compose.yml, unused for now (due to long startup time)."),(0,a.kt)("li",{parentName:"ul"},"Bump default subnet components stable versions")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/develop/assets/js/00b375aa.5ce5c7a0.js b/develop/assets/js/00b375aa.5ce5c7a0.js deleted file mode 100644 index 39be41a..0000000 --- a/develop/assets/js/00b375aa.5ce5c7a0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkxdc_subnet_docs=self.webpackChunkxdc_subnet_docs||[]).push([[475],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>v});var r=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var u=r.createContext({}),p=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=p(e.components);return r.createElement(u.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,l=e.mdxType,o=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(n),m=l,v=s["".concat(u,".").concat(m)]||s[m]||c[m]||o;return n?r.createElement(v,a(a({ref:t},d),{},{components:n})):r.createElement(v,a({ref:t},d))}));function v(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=n.length,a=new Array(o);a[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:l,a[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var r=n(7462),l=(n(7294),n(3905));const o={sidebar_label:"Subnet Deployment Generator Changelog",sidebar_position:5},a="Subnet Deployment Generator Changelog",i={unversionedId:"deployment/subnet_deployment_generator_changelog",id:"deployment/subnet_deployment_generator_changelog",title:"Subnet Deployment Generator Changelog",description:"v0.1.0 - 2024/09/28",source:"@site/docs/deployment/6_subnet_deployment_generator_changelog.md",sourceDirName:"deployment",slug:"/deployment/subnet_deployment_generator_changelog",permalink:"/xdc-subnet-docs/develop/deployment/subnet_deployment_generator_changelog",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_label:"Subnet Deployment Generator Changelog",sidebar_position:5},sidebar:"defaultSidebar",previous:{title:"4. FAQ",permalink:"/xdc-subnet-docs/develop/deployment/faq"},next:{title:"Using the Subnet",permalink:"/xdc-subnet-docs/develop/category/using-the-subnet"}},u={},p=[{value:"v0.1.0 - 2024/09/28",id:"v010---20240928",level:3},{value:"v0.3.2 - 2024/08/15",id:"v032---20240815",level:3},{value:"v0.3.1 - 2024/07/24",id:"v031---20240724",level:3},{value:"v0.2.1 - 2024/01/09",id:"v021---20240109",level:3},{value:"v0.1.6",id:"v016",level:3},{value:"v0.1.5",id:"v015",level:3},{value:"v0.1.4",id:"v014",level:3}],d={toc:p},s="wrapper";function c(e){let{components:t,...n}=e;return(0,l.kt)(s,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"subnet-deployment-generator-changelog"},"Subnet Deployment Generator Changelog"),(0,l.kt)("h3",{id:"v010---20240928"},"v0.1.0 - 2024/09/28"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"WIP")),(0,l.kt)("h3",{id:"v032---20240815"},"v0.3.2 - 2024/08/15"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Changed frontend default due to clashing from 5000 to 5555")),(0,l.kt)("h3",{id:"v031---20240724"},"v0.3.1 - 2024/07/24"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Use testnet by default"),(0,l.kt)("li",{parentName:"ul"},"Remove admin api by default"),(0,l.kt)("li",{parentName:"ul"},"Added PUBLIC_IP optional config in deployment-generator"),(0,l.kt)("li",{parentName:"ul"},"Bump component versions")),(0,l.kt)("h3",{id:"v021---20240109"},"v0.2.1 - 2024/01/09"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"New generation style, pulls script from github to run multiple docker images instead of generating from single image."),(0,l.kt)("li",{parentName:"ul"},"New Checkpoint Smart Contract (CSC) deployment image"),(0,l.kt)("li",{parentName:"ul"},"Supports upgradable CSC"),(0,l.kt)("li",{parentName:"ul"},"Bump components versions"),(0,l.kt)("li",{parentName:"ul"},"Fix bugs"),(0,l.kt)("li",{parentName:"ul"},"Code refactor, optimization")),(0,l.kt)("h3",{id:"v016"},"v0.1.6"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Bump relayer version to support gas fee changes")),(0,l.kt)("h3",{id:"v015"},"v0.1.5"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Added OS=mac option in 'docker.env'. This option is intended for single machine testing environment only.")),(0,l.kt)("h3",{id:"v014"},"v0.1.4"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Added custom keys functionality\n'docker.env' now accepts GRANDMASTER_PK and SUBNETS_PK. Where SUBNETS_PK can have multiple keys separated by a comma ','. Number of subnet keys must equal NUM_SUBNET. Keys are randomized if not provided."),(0,l.kt)("li",{parentName:"ul"},"Added RELAYER_MODE in 'docker.env', CSC deployment will select from 'full' or 'lite' smart contract, default 'full'."),(0,l.kt)("li",{parentName:"ul"},"Automate CHECKPOINT_CONTRACT copy-paste step (manual action no longer required)."),(0,l.kt)("li",{parentName:"ul"},"PARENTCHAIN_WALLET is no longer required in 'docker.env', the address will be derived from PARENTCHAIN_WALLET_PK. "),(0,l.kt)("li",{parentName:"ul"},"Disabled parentchain observer in docker-compose.yml, unused for now (due to long startup time)."),(0,l.kt)("li",{parentName:"ul"},"Bump default subnet components stable versions")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/develop/assets/js/935f2afb.0776790d.js b/develop/assets/js/935f2afb.6c53d6c2.js similarity index 99% rename from develop/assets/js/935f2afb.0776790d.js rename to develop/assets/js/935f2afb.6c53d6c2.js index 28c91c7..c4592c5 100644 --- a/develop/assets/js/935f2afb.0776790d.js +++ b/develop/assets/js/935f2afb.6c53d6c2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkxdc_subnet_docs=self.webpackChunkxdc_subnet_docs||[]).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":{"defaultSidebar":[{"type":"link","label":"Welcome","href":"/xdc-subnet-docs/develop/","docId":"intro"},{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Motivation & Design Rationale","href":"/xdc-subnet-docs/develop/introduction/intro","docId":"introduction/intro"},{"type":"link","label":"Architecture","href":"/xdc-subnet-docs/develop/introduction/architecture","docId":"introduction/architecture"}],"href":"/xdc-subnet-docs/develop/category/introduction"},{"type":"category","label":"Components","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Subnet Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Design","href":"/xdc-subnet-docs/develop/components/subnet/design","docId":"components/subnet/design"},{"type":"link","label":"API","href":"/xdc-subnet-docs/develop/components/subnet/api","docId":"components/subnet/api"}],"href":"/xdc-subnet-docs/develop/category/subnet-chain"},{"type":"category","label":"Checkpoint Smart Contract","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Design","href":"/xdc-subnet-docs/develop/components/checkpoint_smart_contract/design","docId":"components/checkpoint_smart_contract/design"},{"type":"link","label":"Specs","href":"/xdc-subnet-docs/develop/components/checkpoint_smart_contract/spec","docId":"components/checkpoint_smart_contract/spec"}],"href":"/xdc-subnet-docs/develop/category/checkpoint-smart-contract"},{"type":"category","label":"Relayer","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Design","href":"/xdc-subnet-docs/develop/components/relayer/design","docId":"components/relayer/design"},{"type":"link","label":"Relayer Mode","href":"/xdc-subnet-docs/develop/components/relayer/relayer_mode","docId":"components/relayer/relayer_mode"}],"href":"/xdc-subnet-docs/develop/category/relayer"},{"type":"category","label":"API Library","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Specs","href":"/xdc-subnet-docs/develop/components/API_library/api","docId":"components/API_library/api"}],"href":"/xdc-subnet-docs/develop/category/api-library"}],"href":"/xdc-subnet-docs/develop/category/components"},{"type":"category","label":"Deployment Guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"1. Launch a Subnet","href":"/xdc-subnet-docs/develop/deployment/launch_subnet","docId":"deployment/launch_subnet"},{"type":"link","label":"2. Configs Explanation","href":"/xdc-subnet-docs/develop/deployment/configs_explanation","docId":"deployment/configs_explanation"},{"type":"link","label":"3. Common Issues and Troubleshooting","href":"/xdc-subnet-docs/develop/deployment/troubleshooting","docId":"deployment/troubleshooting"},{"type":"link","label":"4. FAQ","href":"/xdc-subnet-docs/develop/deployment/faq","docId":"deployment/faq"},{"type":"link","label":"Subnet Deployment Generator Changelog","href":"/xdc-subnet-docs/develop/deployment/subnet_deployment_generator_changelog","docId":"deployment/subnet_deployment_generator_changelog"}],"href":"/xdc-subnet-docs/develop/category/deployment-guide"},{"type":"category","label":"Using the Subnet","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"UI Usage Guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Homepage","href":"/xdc-subnet-docs/develop/usage/ui/homepage","docId":"usage/ui/homepage"},{"type":"link","label":"Confirmation Checker","href":"/xdc-subnet-docs/develop/usage/ui/confirmation_checker","docId":"usage/ui/confirmation_checker"},{"type":"link","label":"Subnet Management","href":"/xdc-subnet-docs/develop/usage/ui/management","docId":"usage/ui/management"}],"href":"/xdc-subnet-docs/develop/category/ui-usage-guide"},{"type":"link","label":"Faucet","href":"/xdc-subnet-docs/develop/usage/faucet","docId":"usage/faucet"},{"type":"link","label":"Blockchain Explorer","href":"/xdc-subnet-docs/develop/usage/explorer","docId":"usage/explorer"}],"href":"/xdc-subnet-docs/develop/category/using-the-subnet"},{"type":"link","label":"Contact","href":"/xdc-subnet-docs/develop/contact","docId":"contact"}]},"docs":{"components/API_library/api":{"id":"components/API_library/api","title":"Specifications","description":"TBW","sidebar":"defaultSidebar"},"components/checkpoint_smart_contract/design":{"id":"components/checkpoint_smart_contract/design","title":"Design","description":"Overview","sidebar":"defaultSidebar"},"components/checkpoint_smart_contract/spec":{"id":"components/checkpoint_smart_contract/spec","title":"spec","description":"APIs","sidebar":"defaultSidebar"},"components/relayer/design":{"id":"components/relayer/design","title":"Design","description":"Background","sidebar":"defaultSidebar"},"components/relayer/relayer_mode":{"id":"components/relayer/relayer_mode","title":"Relayer Mode","description":"There are 2 relayer modes \'Full\' and \'Lite\' where the default mode is \'Full\'. In the full mode, all subnet block headers are checkpointed to the parent chain. In the lite mode, only the Epoch and Epoch gap subnet block headers are checkpointed in the parent chain (blocks 451,900,1351,1800, and so on). The Epoch and Epoch gap blocks stores important information regarding subnet validators selection. For further reading please check Checkpoint Smart Contract.","sidebar":"defaultSidebar"},"components/subnet/api":{"id":"components/subnet/api","title":"API","description":"Subnet-specific APIs","sidebar":"defaultSidebar"},"components/subnet/design":{"id":"components/subnet/design","title":"Design","description":"XDC subnet is a blockchain network tailored for private and consortium use cases. It is powered by XDC2.0, which is the core engine of XDC network and enables state-of-the-art security against Byzantine attacks with forensics, fast transaction confirmation, and low energy consumption. It is also designed to enable secure checkpointing to XDC mainnet, so that it can harness the security, finality, and accountability of mainnet.","sidebar":"defaultSidebar"},"contact":{"id":"contact","title":"Contact Us","description":"For feedback, bug report, request, or general Subnet discussion please feel free to make a post on XDC Forum or GitHub Issues","sidebar":"defaultSidebar"},"deployment/configs_explanation":{"id":"deployment/configs_explanation","title":"Configs Explanation","description":"Files under \'generated\' directory","sidebar":"defaultSidebar"},"deployment/faq":{"id":"deployment/faq","title":"Frequently Asked Questions","description":"- How many Subnet nodes should I have?","sidebar":"defaultSidebar"},"deployment/launch_subnet":{"id":"deployment/launch_subnet","title":"Launch a Subnet","description":"Requirements","sidebar":"defaultSidebar"},"deployment/subnet_deployment_generator_changelog":{"id":"deployment/subnet_deployment_generator_changelog","title":"Subnet Deployment Generator Changelog","description":"v0.1.0 - 2024/09/28","sidebar":"defaultSidebar"},"deployment/troubleshooting":{"id":"deployment/troubleshooting","title":"Common Issues and Troubleshooting","description":"Common Issues","sidebar":"defaultSidebar"},"intro":{"id":"intro","title":"Welcome","description":"Welcome to the technical documentation site of XDC enterprise private subnet! We are continuously adding materials to it.","sidebar":"defaultSidebar"},"introduction/architecture":{"id":"introduction/architecture","title":"Architecture","description":"The architecture consists of the following four main components owned by the customer:","sidebar":"defaultSidebar"},"introduction/intro":{"id":"introduction/intro","title":"Motivation & Design Rationale","description":"As a leading Layer-1 (L1) public blockchain, XDC network has attrated many enterprise and institutional customers. Besides the high performance and high security that XDC already offers, these customers also demand privacy, meaning that their transactions and ledger should not be disclosed to the public. This requirement prohibits them from directly submitting transactions to XDC. Instead, they should only checkpoint snapshots of their ledger to XDC in order to extract XDC\'s security.","sidebar":"defaultSidebar"},"usage/explorer":{"id":"usage/explorer","title":"Blockchain Explorer","description":"You may optionally use an external blocks explorer if you require verbose browsing such as block detail, accounts browsing, contracts browsing. We can recommend Chainlens-free as one of the solution. Please follow the instructions as the previous link. You only need to pass one of the Subnet\'s RPC as a variable in the docker-compose command, which will most likely be NODEENDPOINT=http8545 or NODEENDPOINT=http8545.","sidebar":"defaultSidebar"},"usage/faucet":{"id":"usage/faucet","title":"Faucet","description":"In Subnets, all native tokens are initially assigned to the Grandmaster Wallet. To allow users to use the Subnet, we have to distribute the tokens out of the Grandmaster. We have provided convenient scripts for you to easily share Subnet tokens to your users.","sidebar":"defaultSidebar"},"usage/ui/confirmation_checker":{"id":"usage/ui/confirmation_checker","title":"Confirmation Checker","description":"After navigating with the left menu bar to the Confirmation Checker of the Subnet, this will be shown.","sidebar":"defaultSidebar"},"usage/ui/homepage":{"id":"usage/ui/homepage","title":"Homepage","description":"Once subnet is successfully deployed. The homepage will show the following.","sidebar":"defaultSidebar"},"usage/ui/management":{"id":"usage/ui/management","title":"Subnet Management","description":"WIP","sidebar":"defaultSidebar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkxdc_subnet_docs=self.webpackChunkxdc_subnet_docs||[]).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":{"defaultSidebar":[{"type":"link","label":"Welcome","href":"/xdc-subnet-docs/develop/","docId":"intro"},{"type":"category","label":"Introduction","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Motivation & Design Rationale","href":"/xdc-subnet-docs/develop/introduction/intro","docId":"introduction/intro"},{"type":"link","label":"Architecture","href":"/xdc-subnet-docs/develop/introduction/architecture","docId":"introduction/architecture"}],"href":"/xdc-subnet-docs/develop/category/introduction"},{"type":"category","label":"Components","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Subnet Chain","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Design","href":"/xdc-subnet-docs/develop/components/subnet/design","docId":"components/subnet/design"},{"type":"link","label":"API","href":"/xdc-subnet-docs/develop/components/subnet/api","docId":"components/subnet/api"}],"href":"/xdc-subnet-docs/develop/category/subnet-chain"},{"type":"category","label":"Checkpoint Smart Contract","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Design","href":"/xdc-subnet-docs/develop/components/checkpoint_smart_contract/design","docId":"components/checkpoint_smart_contract/design"},{"type":"link","label":"Specs","href":"/xdc-subnet-docs/develop/components/checkpoint_smart_contract/spec","docId":"components/checkpoint_smart_contract/spec"}],"href":"/xdc-subnet-docs/develop/category/checkpoint-smart-contract"},{"type":"category","label":"Relayer","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Design","href":"/xdc-subnet-docs/develop/components/relayer/design","docId":"components/relayer/design"},{"type":"link","label":"Relayer Mode","href":"/xdc-subnet-docs/develop/components/relayer/relayer_mode","docId":"components/relayer/relayer_mode"}],"href":"/xdc-subnet-docs/develop/category/relayer"},{"type":"category","label":"API Library","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Specs","href":"/xdc-subnet-docs/develop/components/API_library/api","docId":"components/API_library/api"}],"href":"/xdc-subnet-docs/develop/category/api-library"}],"href":"/xdc-subnet-docs/develop/category/components"},{"type":"category","label":"Deployment Guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"1. Launch a Subnet","href":"/xdc-subnet-docs/develop/deployment/launch_subnet","docId":"deployment/launch_subnet"},{"type":"link","label":"2. Configs Explanation","href":"/xdc-subnet-docs/develop/deployment/configs_explanation","docId":"deployment/configs_explanation"},{"type":"link","label":"3. Common Issues and Troubleshooting","href":"/xdc-subnet-docs/develop/deployment/troubleshooting","docId":"deployment/troubleshooting"},{"type":"link","label":"4. FAQ","href":"/xdc-subnet-docs/develop/deployment/faq","docId":"deployment/faq"},{"type":"link","label":"Subnet Deployment Generator Changelog","href":"/xdc-subnet-docs/develop/deployment/subnet_deployment_generator_changelog","docId":"deployment/subnet_deployment_generator_changelog"}],"href":"/xdc-subnet-docs/develop/category/deployment-guide"},{"type":"category","label":"Using the Subnet","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"UI Usage Guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Homepage","href":"/xdc-subnet-docs/develop/usage/ui/homepage","docId":"usage/ui/homepage"},{"type":"link","label":"Confirmation Checker","href":"/xdc-subnet-docs/develop/usage/ui/confirmation_checker","docId":"usage/ui/confirmation_checker"},{"type":"link","label":"Subnet Management","href":"/xdc-subnet-docs/develop/usage/ui/management","docId":"usage/ui/management"}],"href":"/xdc-subnet-docs/develop/category/ui-usage-guide"},{"type":"link","label":"Faucet","href":"/xdc-subnet-docs/develop/usage/faucet","docId":"usage/faucet"},{"type":"link","label":"Blockchain Explorer","href":"/xdc-subnet-docs/develop/usage/explorer","docId":"usage/explorer"}],"href":"/xdc-subnet-docs/develop/category/using-the-subnet"},{"type":"link","label":"Contact","href":"/xdc-subnet-docs/develop/contact","docId":"contact"}]},"docs":{"components/API_library/api":{"id":"components/API_library/api","title":"Specifications","description":"TBW","sidebar":"defaultSidebar"},"components/checkpoint_smart_contract/design":{"id":"components/checkpoint_smart_contract/design","title":"Design","description":"Overview","sidebar":"defaultSidebar"},"components/checkpoint_smart_contract/spec":{"id":"components/checkpoint_smart_contract/spec","title":"spec","description":"APIs","sidebar":"defaultSidebar"},"components/relayer/design":{"id":"components/relayer/design","title":"Design","description":"Background","sidebar":"defaultSidebar"},"components/relayer/relayer_mode":{"id":"components/relayer/relayer_mode","title":"Relayer Mode","description":"There are 2 relayer modes \'Full\' and \'Lite\' where the default mode is \'Full\'. In the full mode, all subnet block headers are checkpointed to the parent chain. In the lite mode, only the Epoch and Epoch gap subnet block headers are checkpointed in the parent chain (blocks 451,900,1351,1800, and so on). The Epoch and Epoch gap blocks stores important information regarding subnet validators selection. For further reading please check Checkpoint Smart Contract.","sidebar":"defaultSidebar"},"components/subnet/api":{"id":"components/subnet/api","title":"API","description":"Subnet-specific APIs","sidebar":"defaultSidebar"},"components/subnet/design":{"id":"components/subnet/design","title":"Design","description":"XDC subnet is a blockchain network tailored for private and consortium use cases. It is powered by XDC2.0, which is the core engine of XDC network and enables state-of-the-art security against Byzantine attacks with forensics, fast transaction confirmation, and low energy consumption. It is also designed to enable secure checkpointing to XDC mainnet, so that it can harness the security, finality, and accountability of mainnet.","sidebar":"defaultSidebar"},"contact":{"id":"contact","title":"Contact Us","description":"For feedback, bug report, request, or general Subnet discussion please feel free to make a post on XDC Forum or GitHub Issues","sidebar":"defaultSidebar"},"deployment/configs_explanation":{"id":"deployment/configs_explanation","title":"Configs Explanation","description":"Files under \'generated\' directory","sidebar":"defaultSidebar"},"deployment/faq":{"id":"deployment/faq","title":"Frequently Asked Questions","description":"- How many Subnet nodes should I have?","sidebar":"defaultSidebar"},"deployment/launch_subnet":{"id":"deployment/launch_subnet","title":"Launch a Subnet","description":"Requirements","sidebar":"defaultSidebar"},"deployment/subnet_deployment_generator_changelog":{"id":"deployment/subnet_deployment_generator_changelog","title":"Subnet Deployment Generator Changelog","description":"v1.0.0 - 2024/10/03","sidebar":"defaultSidebar"},"deployment/troubleshooting":{"id":"deployment/troubleshooting","title":"Common Issues and Troubleshooting","description":"Common Issues","sidebar":"defaultSidebar"},"intro":{"id":"intro","title":"Welcome","description":"Welcome to the technical documentation site of XDC enterprise private subnet! We are continuously adding materials to it.","sidebar":"defaultSidebar"},"introduction/architecture":{"id":"introduction/architecture","title":"Architecture","description":"The architecture consists of the following four main components owned by the customer:","sidebar":"defaultSidebar"},"introduction/intro":{"id":"introduction/intro","title":"Motivation & Design Rationale","description":"As a leading Layer-1 (L1) public blockchain, XDC network has attrated many enterprise and institutional customers. Besides the high performance and high security that XDC already offers, these customers also demand privacy, meaning that their transactions and ledger should not be disclosed to the public. This requirement prohibits them from directly submitting transactions to XDC. Instead, they should only checkpoint snapshots of their ledger to XDC in order to extract XDC\'s security.","sidebar":"defaultSidebar"},"usage/explorer":{"id":"usage/explorer","title":"Blockchain Explorer","description":"You may optionally use an external blocks explorer if you require verbose browsing such as block detail, accounts browsing, contracts browsing. We can recommend Chainlens-free as one of the solution. Please follow the instructions as the previous link. You only need to pass one of the Subnet\'s RPC as a variable in the docker-compose command, which will most likely be NODEENDPOINT=http8545 or NODEENDPOINT=http8545.","sidebar":"defaultSidebar"},"usage/faucet":{"id":"usage/faucet","title":"Faucet","description":"In Subnets, all native tokens are initially assigned to the Grandmaster Wallet. To allow users to use the Subnet, we have to distribute the tokens out of the Grandmaster. We have provided convenient scripts for you to easily share Subnet tokens to your users.","sidebar":"defaultSidebar"},"usage/ui/confirmation_checker":{"id":"usage/ui/confirmation_checker","title":"Confirmation Checker","description":"After navigating with the left menu bar to the Confirmation Checker of the Subnet, this will be shown.","sidebar":"defaultSidebar"},"usage/ui/homepage":{"id":"usage/ui/homepage","title":"Homepage","description":"Once subnet is successfully deployed. The homepage will show the following.","sidebar":"defaultSidebar"},"usage/ui/management":{"id":"usage/ui/management","title":"Subnet Management","description":"WIP","sidebar":"defaultSidebar"}}}')}}]); \ No newline at end of file diff --git a/develop/assets/js/runtime~main.c60bdfa1.js b/develop/assets/js/runtime~main.323479a6.js similarity index 97% rename from develop/assets/js/runtime~main.c60bdfa1.js rename to develop/assets/js/runtime~main.323479a6.js index 02b9bb4..e054564 100644 --- a/develop/assets/js/runtime~main.c60bdfa1.js +++ b/develop/assets/js/runtime~main.323479a6.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,t,d,r,o={},c={};function f(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={id:e,loaded:!1,exports:{}};return o[e].call(t.exports,t,t.exports,f),t.loaded=!0,t.exports}f.m=o,f.c=c,e=[],f.O=(a,t,d,r)=>{if(!t){var o=1/0;for(i=0;i=r)&&Object.keys(f.O).every((e=>f.O[e](t[n])))?t.splice(n--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[t,d,r]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var r=Object.create(null);f.r(r);var o={};a=a||[null,t({}),t([]),t(t)];for(var c=2&d&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>o[a]=()=>e[a]));return o.default=()=>e,f.d(r,o),r},f.d=(e,a)=>{for(var t in a)f.o(a,t)&&!f.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,t)=>(f.f[t](e,a),a)),[])),f.u=e=>"assets/js/"+({53:"935f2afb",80:"c9bae7e8",83:"32dd35a8",85:"1f391b9e",98:"97f28a37",140:"f5e9ed0e",151:"5a8a92cd",163:"70ba180a",176:"9ca9f017",225:"1ecd2180",302:"a84fd5c2",310:"1c689dd1",314:"942f0ed8",338:"21a6d315",355:"61bbba59",372:"ed831e70",414:"393be207",416:"01a9496d",444:"f882ddaa",473:"b0a6d0fa",475:"00b375aa",492:"345593d9",514:"1be78505",582:"7abd7638",586:"344489b7",671:"0e384e19",725:"23338855",743:"f8551aab",817:"14eb3368",846:"a4d5c170",865:"0385815d",876:"03181aef",885:"4042ced8",918:"17896441",941:"fd37dc9a",955:"341d1452",974:"4c6dd52e",977:"70e9807b",985:"c1845702",986:"67f39d73"}[e]||e)+"."+{53:"0776790d",80:"f3aee6fc",83:"2ab33936",85:"223778a2",98:"00e56dbd",140:"0ec332d5",151:"be1ea511",163:"958c357c",176:"9ba5dc59",225:"cb957fc8",302:"4c819046",310:"b832298e",314:"1039f0a7",338:"2d747db0",355:"b6f33744",372:"05c391d0",414:"33908906",416:"4c342a6b",444:"794906e5",473:"8a318f48",475:"5ce5c7a0",492:"19393172",514:"08d54c61",582:"d6509a97",586:"f473a272",666:"7c9539e4",671:"1c299727",725:"6ba7dd39",743:"e9901e47",817:"de3fdfd7",846:"0c93a72c",865:"9f0285fd",876:"c6534095",885:"ba3eaa63",918:"0fc9f395",941:"9eb5a989",955:"ded3c8ef",972:"9334dfaa",974:"7f1f76cd",977:"c44055f8",985:"6fdc7451",986:"54e5b570"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},r="xdc-subnet-docs:",f.l=(e,a,t,o)=>{if(d[e])d[e].push(a);else{var c,n;if(void 0!==t)for(var b=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(t))),a)return a(t)},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),n&&document.head.appendChild(c)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/xdc-subnet-docs/develop/",f.gca=function(e){return e={17896441:"918",23338855:"725","935f2afb":"53",c9bae7e8:"80","32dd35a8":"83","1f391b9e":"85","97f28a37":"98",f5e9ed0e:"140","5a8a92cd":"151","70ba180a":"163","9ca9f017":"176","1ecd2180":"225",a84fd5c2:"302","1c689dd1":"310","942f0ed8":"314","21a6d315":"338","61bbba59":"355",ed831e70:"372","393be207":"414","01a9496d":"416",f882ddaa:"444",b0a6d0fa:"473","00b375aa":"475","345593d9":"492","1be78505":"514","7abd7638":"582","344489b7":"586","0e384e19":"671",f8551aab:"743","14eb3368":"817",a4d5c170:"846","0385815d":"865","03181aef":"876","4042ced8":"885",fd37dc9a:"941","341d1452":"955","4c6dd52e":"974","70e9807b":"977",c1845702:"985","67f39d73":"986"}[e]||e,f.p+f.u(e)},(()=>{var e={303:0,532:0};f.f.j=(a,t)=>{var d=f.o(e,a)?e[a]:void 0;if(0!==d)if(d)t.push(d[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var r=new Promise(((t,r)=>d=e[a]=[t,r]));t.push(d[2]=r);var o=f.p+f.u(a),c=new Error;f.l(o,(t=>{if(f.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+o+")",c.name="ChunkLoadError",c.type=r,c.request=o,d[1](c)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,t)=>{var d,r,o=t[0],c=t[1],n=t[2],b=0;if(o.some((a=>0!==e[a]))){for(d in c)f.o(c,d)&&(f.m[d]=c[d]);if(n)var i=n(f)}for(a&&a(t);b{"use strict";var e,a,t,d,r,o={},c={};function f(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={id:e,loaded:!1,exports:{}};return o[e].call(t.exports,t,t.exports,f),t.loaded=!0,t.exports}f.m=o,f.c=c,e=[],f.O=(a,t,d,r)=>{if(!t){var o=1/0;for(i=0;i=r)&&Object.keys(f.O).every((e=>f.O[e](t[n])))?t.splice(n--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[t,d,r]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var r=Object.create(null);f.r(r);var o={};a=a||[null,t({}),t([]),t(t)];for(var c=2&d&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>o[a]=()=>e[a]));return o.default=()=>e,f.d(r,o),r},f.d=(e,a)=>{for(var t in a)f.o(a,t)&&!f.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,t)=>(f.f[t](e,a),a)),[])),f.u=e=>"assets/js/"+({53:"935f2afb",80:"c9bae7e8",83:"32dd35a8",85:"1f391b9e",98:"97f28a37",140:"f5e9ed0e",151:"5a8a92cd",163:"70ba180a",176:"9ca9f017",225:"1ecd2180",302:"a84fd5c2",310:"1c689dd1",314:"942f0ed8",338:"21a6d315",355:"61bbba59",372:"ed831e70",414:"393be207",416:"01a9496d",444:"f882ddaa",473:"b0a6d0fa",475:"00b375aa",492:"345593d9",514:"1be78505",582:"7abd7638",586:"344489b7",671:"0e384e19",725:"23338855",743:"f8551aab",817:"14eb3368",846:"a4d5c170",865:"0385815d",876:"03181aef",885:"4042ced8",918:"17896441",941:"fd37dc9a",955:"341d1452",974:"4c6dd52e",977:"70e9807b",985:"c1845702",986:"67f39d73"}[e]||e)+"."+{53:"6c53d6c2",80:"f3aee6fc",83:"2ab33936",85:"223778a2",98:"00e56dbd",140:"0ec332d5",151:"be1ea511",163:"958c357c",176:"9ba5dc59",225:"cb957fc8",302:"4c819046",310:"b832298e",314:"1039f0a7",338:"2d747db0",355:"b6f33744",372:"05c391d0",414:"33908906",416:"4c342a6b",444:"794906e5",473:"8a318f48",475:"584eef9a",492:"19393172",514:"08d54c61",582:"d6509a97",586:"f473a272",666:"7c9539e4",671:"1c299727",725:"6ba7dd39",743:"e9901e47",817:"de3fdfd7",846:"0c93a72c",865:"9f0285fd",876:"c6534095",885:"ba3eaa63",918:"0fc9f395",941:"9eb5a989",955:"ded3c8ef",972:"9334dfaa",974:"7f1f76cd",977:"c44055f8",985:"6fdc7451",986:"54e5b570"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},r="xdc-subnet-docs:",f.l=(e,a,t,o)=>{if(d[e])d[e].push(a);else{var c,n;if(void 0!==t)for(var b=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(t))),a)return a(t)},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),n&&document.head.appendChild(c)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/xdc-subnet-docs/develop/",f.gca=function(e){return e={17896441:"918",23338855:"725","935f2afb":"53",c9bae7e8:"80","32dd35a8":"83","1f391b9e":"85","97f28a37":"98",f5e9ed0e:"140","5a8a92cd":"151","70ba180a":"163","9ca9f017":"176","1ecd2180":"225",a84fd5c2:"302","1c689dd1":"310","942f0ed8":"314","21a6d315":"338","61bbba59":"355",ed831e70:"372","393be207":"414","01a9496d":"416",f882ddaa:"444",b0a6d0fa:"473","00b375aa":"475","345593d9":"492","1be78505":"514","7abd7638":"582","344489b7":"586","0e384e19":"671",f8551aab:"743","14eb3368":"817",a4d5c170:"846","0385815d":"865","03181aef":"876","4042ced8":"885",fd37dc9a:"941","341d1452":"955","4c6dd52e":"974","70e9807b":"977",c1845702:"985","67f39d73":"986"}[e]||e,f.p+f.u(e)},(()=>{var e={303:0,532:0};f.f.j=(a,t)=>{var d=f.o(e,a)?e[a]:void 0;if(0!==d)if(d)t.push(d[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var r=new Promise(((t,r)=>d=e[a]=[t,r]));t.push(d[2]=r);var o=f.p+f.u(a),c=new Error;f.l(o,(t=>{if(f.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+o+")",c.name="ChunkLoadError",c.type=r,c.request=o,d[1](c)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,t)=>{var d,r,o=t[0],c=t[1],n=t[2],b=0;if(o.some((a=>0!==e[a]))){for(d in c)f.o(c,d)&&(f.m[d]=c[d]);if(n)var i=n(f)}for(a&&a(t);b API Library | XDC Subnet - +

API Library

This section specifies the API library we develop for the subnet users to confirm subnet transactions.

- + \ No newline at end of file diff --git a/develop/category/checkpoint-smart-contract/index.html b/develop/category/checkpoint-smart-contract/index.html index 134e58f..2d5ddb9 100644 --- a/develop/category/checkpoint-smart-contract/index.html +++ b/develop/category/checkpoint-smart-contract/index.html @@ -4,13 +4,13 @@ Checkpoint Smart Contract | XDC Subnet - +

Checkpoint Smart Contract

This section specifies the Checkpoint Smart Contract in the parent chain that protects the child chain.

- + \ No newline at end of file diff --git a/develop/category/components/index.html b/develop/category/components/index.html index 50264ed..6b7db8c 100644 --- a/develop/category/components/index.html +++ b/develop/category/components/index.html @@ -4,13 +4,13 @@ Components | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/category/deployment-guide/index.html b/develop/category/deployment-guide/index.html index 4a26eba..3c21007 100644 --- a/develop/category/deployment-guide/index.html +++ b/develop/category/deployment-guide/index.html @@ -4,13 +4,13 @@ Deployment Guide | XDC Subnet - + - + + \ No newline at end of file diff --git a/develop/category/introduction/index.html b/develop/category/introduction/index.html index de10f0a..aa42b12 100644 --- a/develop/category/introduction/index.html +++ b/develop/category/introduction/index.html @@ -4,13 +4,13 @@ Introduction | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/category/relayer/index.html b/develop/category/relayer/index.html index ea7aed2..3dce251 100644 --- a/develop/category/relayer/index.html +++ b/develop/category/relayer/index.html @@ -4,13 +4,13 @@ Relayer | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/category/subnet-chain/index.html b/develop/category/subnet-chain/index.html index 7c94808..03271fe 100644 --- a/develop/category/subnet-chain/index.html +++ b/develop/category/subnet-chain/index.html @@ -4,13 +4,13 @@ Subnet Chain | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/category/ui-usage-guide/index.html b/develop/category/ui-usage-guide/index.html index 7868599..1e9ef28 100644 --- a/develop/category/ui-usage-guide/index.html +++ b/develop/category/ui-usage-guide/index.html @@ -4,13 +4,13 @@ UI Usage Guide | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/category/using-the-subnet/index.html b/develop/category/using-the-subnet/index.html index 138d10b..603a4d6 100644 --- a/develop/category/using-the-subnet/index.html +++ b/develop/category/using-the-subnet/index.html @@ -4,13 +4,13 @@ Using the Subnet | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/components/API_library/api/index.html b/develop/components/API_library/api/index.html index adce6eb..de3ac99 100644 --- a/develop/components/API_library/api/index.html +++ b/develop/components/API_library/api/index.html @@ -4,13 +4,13 @@ Specifications | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/components/checkpoint_smart_contract/design/index.html b/develop/components/checkpoint_smart_contract/design/index.html index a32b93f..3ee4315 100644 --- a/develop/components/checkpoint_smart_contract/design/index.html +++ b/develop/components/checkpoint_smart_contract/design/index.html @@ -4,13 +4,13 @@ Design | XDC Subnet - +

Design

Overview

The primary function of the parent chain smart contract is to receive block data from the subnet node, verify it, and store it.

Noteworthy aspects:

  • Every block data received will be verified to ensure the signature is signed by validators and has passed with 2/3 of the votes.

  • In the gap block occurring in the middle of each epoch, a next may appear, which will be selected for temporary storage.

  • In each epoch block, a current may appear, which will choose the next selected during the gap as validators from the current block to the next epoch.

  • Only three consecutive blocks of roundNumber can confirm the previous block, and mainnetNum will change from -1 to block.number once the block is committed.

Overview

Specifics

Checkpoint

The Checkpoint contract implements a blockchain checkpoint system, which verifies and stores block header information for subnetworks. Here are some key functions and features:

  • The contract defines several data structures, such as Header, HeaderInfo, Validators and BlockLite. These structures are used to store block header information, validator information, and more.

  • The contract employs several mappings and other variables to track the current block header tree, committed blocks, validator set, latest block, and so forth.

  • The contract's constructor receives the initial validator set, the genesis block header, the first block header, etc., as parameters and initializes the contract state based on these.

  • The receiveHeader function allows users to submit new block headers. This function will verify the meta information of the block header (like block number, parent block hash, etc.), the signature certificate, and update the block's submission status when specific conditions are met.

  • Functions such as setLookup, setCommittedStatus, checkUniqueness, and checkCommittedStatus are used to update or check the contract's internal status.

  • Functions like getHeader, getHeaderByNumber, getLatestBlocks and getCurrentValidators enable users to query block header information, validator sets, etc.

  • The splitSignature and recoverSigner functions are used to recover the signer's address from the signature, which is necessary for verifying the block header signature.

Logic Flow:

  1. Checkpoint uses the following parameters for contract construction:

    • address[] initial_validator_set : List of initial validator addresses
    • bytes genesis_header: block0HexRLP
    • bytes block1_header: block1HexRLP
    • uint64 gap: GAP block number on public chain
    • uint64 epoch: EPOCH block number on public chain
  2. Relayers need to fetch every block data from the subnet node.

  3. Users can retrieve the information of each block using methods such as getHeader.

Checkpoint

Lite Checkpoint

Lite Checkpoint is a lightweight block header checkpoint. It implements several functions, including:

  • Setting the initial validator set and related parameters during contract initialization.
  • Checking whether the submitted block header meets the requirements.
  • Receiving and processing submitted block headers.
  • Submitting the block header and block header by block number.
  • Retrieving uncommitted block header information.
  • Accessing specific block header information.
  • Fetching the current and next round of epoch blocks according to the index.
  • Getting the latest block information.
  • Accessing the current set of validators.

Logic Flow:

  1. Lite Checkpoint uses the following parameters for contract construction:

    • address[] initialValidatorSet : List of initial validator addresses
    • bytes block1: block1HexRLP
    • uint64 gap: GAP block number on public chain
    • uint64 epoch: EPOCH block number on public chain
  2. Relayers only need to fetch gap/epoch block data and fetch the following consecutive roundNumber blocks to confirm the signed gap/epoch block from the subnet node.

  3. Users can get gap/epoch block information from methods such as getHeader.

Lite Checkpoint

Upgradeable module

The Upgradeable module mainly revolves around the concept of transparent proxies and the ability to upgrade the underlying logic contracts without changing the contract's address.

ProxyGateway Smart Contract

The ProxyGateway smart contract plays a central role in this module. It inherits from ProxyAdmin and primarily serves the purpose of creating and managing transparent upgradeable proxies (TransparentUpgradeableProxy).

Key Components and Functionalities:

  • cscProxies:

    • A mapping used to store two types of transparent upgradeable proxies.
      • 0 represents "full"
      • 1 represents "lite"
  • CreateProxy Event:

    • Emitted whenever a new transparent upgradeable proxy is created.
  • createProxy Function:

    • Creates a new TransparentUpgradeableProxy.
    • Emits the CreateProxy event upon creation.
  • createFullProxy Function:

    • Specifically designed for creating a transparent upgradeable proxy of type "full".
    • Checks if a "full" type proxy already exists.
    • Ensures the provided logic contract has a MODE function that returns "full".
  • createLiteProxy Function:

    • Designed for creating proxies of type "lite".
    • Checks if a "lite" type proxy already exists.
    • Ensures the provided logic contract has a MODE function that returns "lite".

Alt text

Logic Flow:

  1. Initialization:

    The process begins with the ProxyGateway contract, which serves as a central hub for creating transparent upgradeable proxies. The contract owner has the capability to create either "full" or "lite" proxies.

  2. Proxy Creation:

    • The owner calls either the createFullProxy or createLiteProxy function based on the desired type of proxy.
    • The specified logic contract's MODE is checked to ensure it matches the desired proxy type.
    • A new TransparentUpgradeableProxy is created with the specified logic contract, the ProxyGateway as the admin, and any necessary initialization data.
    • The new proxy's address is stored in the cscProxies mapping under its corresponding type.
    • The CreateProxy event is emitted to log the creation of the new proxy.
  3. Upgrading the Proxy:

    When there's a need to upgrade the underlying logic of the proxy (for instance, to introduce new features or fix bugs):

    • A new logic contract version is deployed to the network.
    • The owner (or authorized entity) of the ProxyGateway contract calls the inherited upgrade function from ProxyAdmin to point the proxy to the new logic contract.
    • The proxy now delegates all calls to the new logic contract, while still retaining all its previous storage and state.
    • This enables the system to evolve and implement new functionalities without migrating to a new contract address or affecting the contract's stored data.
  4. Interacting with the Proxy:

    Users and other contracts can interact with the proxy just as they would with a regular contract. However, behind the scenes, all function calls and data accesses are delegated to the current logic contract that the proxy points to.

  5. Querying and Data Access:

    Users and contracts can still query data, access functions, or invoke transactions on the proxy's address. The proxy transparently delegates these to the underlying logic contract, ensuring continuity of operations.

  6. Advanced Management:

    Through the ProxyAdmin functionality, the owner can further manage the proxy, such as changing the admin or even downgrading to a previous version of the logic contract if needed.

Alt text

- + \ No newline at end of file diff --git a/develop/components/checkpoint_smart_contract/spec/index.html b/develop/components/checkpoint_smart_contract/spec/index.html index 3c8f5b3..2803e46 100644 --- a/develop/components/checkpoint_smart_contract/spec/index.html +++ b/develop/components/checkpoint_smart_contract/spec/index.html @@ -4,13 +4,13 @@ spec | XDC Subnet - +

spec

APIs

  • Functions that have access restriction to authorized client

    • reviseValidatorSet(address[], int, int): Update subnet block header signer list at destined height
    • receiveHeader(bytes[]): Validate and store subnet headers
  • Functions that open for public access

    • getHeader(byte32): Return entire block header in RLP encoding format
    • getHeaderByNumber(int): Return block hash and number at input height
    • getHeaderConfirmationStatus(byte32): Return block committing status
    • getMainnetBlockNumber(byte32): Return mainnet block number that processed the subnet block header
    • getLatestBlocks(): Return latest committed block and submitted block

Algorithms and Rules

Block header verification follows two principle rules:

  1. Received block should have consistent round number and block number associated with its parent block.
  2. Received block should have enough certificates signed by the list of block signers.

Once a block header is checked and stored, the contract will examine whether there are 3 consecutive blocks that have 3 consetive round number. If that is the case, all of the direct ancestor blocks that are prior to these 3 consecutive blocks will be committed.

- + \ No newline at end of file diff --git a/develop/components/relayer/design/index.html b/develop/components/relayer/design/index.html index 193bb04..e95098c 100644 --- a/develop/components/relayer/design/index.html +++ b/develop/components/relayer/design/index.html @@ -4,13 +4,13 @@ Design | XDC Subnet - +

Design

Background

There is a strong demand from the banking industry to adopt XDC. One of the key requirements to enter the field is the ability to support subnets so that banks are able to keep the sensitive transactions within their own domain (privacy concern) but at the same time, have the ability to continuously audit the result (hash) of the subnet transactions on the XDC mainnet (security concern).

Since the mainnet and subnets will be running as two independent node cluster, we will need to figure out a method to bridge them together to perform the auditing feature mentioned above. This is where “relayer” is coming into play.

High-level architectural diagram

At high level, the relayer is able to:

  1. Pull necessary data from both subnet and mainnet
  2. Process and submit subnet block data as smart contract transactions into mainnet
  3. When subnet masternodes list changes, report the new list and change height to the mainnet using grand-master account.

architectural-diagram

- + \ No newline at end of file diff --git a/develop/components/relayer/relayer_mode/index.html b/develop/components/relayer/relayer_mode/index.html index 2e9ff9c..217e7f1 100644 --- a/develop/components/relayer/relayer_mode/index.html +++ b/develop/components/relayer/relayer_mode/index.html @@ -4,13 +4,13 @@ Relayer Mode | XDC Subnet - +

Relayer Mode

There are 2 relayer modes 'Full' and 'Lite' where the default mode is 'Full'. In the full mode, all subnet block headers are checkpointed to the parent chain. In the lite mode, only the Epoch and Epoch gap subnet block headers are checkpointed in the parent chain (blocks 451,900,1351,1800, and so on). The Epoch and Epoch gap blocks stores important information regarding subnet validators selection. For further reading please check Checkpoint Smart Contract.

Choosing Full or Lite Relayer

The Full mode has the advantage of being more 'complete' and more 'current' as blocks are getting confirmed in the parent chain almost immediately. The Lite mode has the advantage of using lower parent chain gas fee as the Relayer is only submitting to once every 450 blocks.

Deployment

In the deployment RELAYER_MODE config is only relevant for Checkpoint Smart Contract (CSC) deployment. The relayer itself is able to detect the CSC type automatically and push block headers accordingly.

- + \ No newline at end of file diff --git a/develop/components/subnet/api/index.html b/develop/components/subnet/api/index.html index 01fc8af..181dd53 100644 --- a/develop/components/subnet/api/index.html +++ b/develop/components/subnet/api/index.html @@ -4,13 +4,13 @@ API | XDC Subnet - + - + \ No newline at end of file diff --git a/develop/components/subnet/design/index.html b/develop/components/subnet/design/index.html index 3e0e58d..c127742 100644 --- a/develop/components/subnet/design/index.html +++ b/develop/components/subnet/design/index.html @@ -4,13 +4,13 @@ Design | XDC Subnet - +

Design

XDC subnet is a blockchain network tailored for private and consortium use cases. It is powered by XDC2.0, which is the core engine of XDC network and enables state-of-the-art security against Byzantine attacks with forensics, fast transaction confirmation, and low energy consumption. It is also designed to enable secure checkpointing to XDC mainnet, so that it can harness the security, finality, and accountability of mainnet.

XDC2.0 Protocol

As the core engine of both XDC mainnet and subnet, XDC2.0 maintains the consistency of the blockchain with strong security and performance guarantees. The Delegated Proof-of-Stake subprotocol elects a committee of masternodes. The masternodes run the state-of-the-art HotStuff consensus subprotocol to settle block generation and verification and confirm transactions. Besides, XDC2.0 protocol enables its unique feature, namely forensic monitoring. When the adversary corrupts more than 1/3 masternodes and violates safety, forensic monitoring can detect those actions and report irrefutable evidence of the culprits.

The distinction between XDC2.0 for subnet and mainnet is that for subnet the masternodes are permissioned whereas for mainnet they are permissionless.

Your Own Blockchain Network

XDC subnet is completely owned by you. You, the owner of the subnet, are capable of controlling several aspects of the subnet.

First, the owner regulates the master node list. More specifically, the join/retire of mater nodes is done by smart contract calls that only the owner has access to. Also, underperforming or misbehaving masternodes could be expelled by the owner. This is in contrast with XDC mainnet, where masternodes join or leave willingly as long as they follow the rule enforced by the protocol.

Second, the blockchain genesis can be configured by the owner. The owner is able to distribute initial tokens and create accounts, as well as deploy system-level smart contracts on the blockchain.

Last, the owner can customize blockchain parameters, such as epoch length, max masternode number, the quorum certificate threshold, the reward per epoch, etc.

Integrating with XDC mainnet

Integrating with XDC mainnet will enable subnet to harness the security, finality, and accountability of XDC mainnet. This requires the subnet owner to deploy a smart contract (XDC will provide) to XDC mainnet and report block headers and masternode changes to the smart contract.

As long as the mainnet is secure, the block header information of the subnet is securely stored on the mainnet. Users can also query the mainnet for finality to enhance the confidence that the subnet transaction is indeed finalized. The subnet can also report the culprits to the forensic server of XDC mainnet when its forensic monitor module detects safety violations. When the culprit report is validated, necessary measurements should be taken by the owner to reestablish the security of the subnet.

It is worth noting that the subnet can be deployed as a standalone, independent blockchain network without integrating with XDC mainnet. The choice is up to the owner whether to harness the advantages of XDC mainnet.

- + \ No newline at end of file diff --git a/develop/contact/index.html b/develop/contact/index.html index 0683543..f50472f 100644 --- a/develop/contact/index.html +++ b/develop/contact/index.html @@ -4,13 +4,13 @@ Contact Us | XDC Subnet - +

Contact Us

For feedback, bug report, request, or general Subnet discussion please feel free to make a post on XDC Forum or GitHub Issues

For troubleshooting, you can talk to us at Telegram Support Group and we will check as soon as possible.

- + \ No newline at end of file diff --git a/develop/deployment/configs_explanation/index.html b/develop/deployment/configs_explanation/index.html index 1d28ca8..1188091 100644 --- a/develop/deployment/configs_explanation/index.html +++ b/develop/deployment/configs_explanation/index.html @@ -4,13 +4,13 @@ Configs Explanation | XDC Subnet - +

Configs Explanation

Files under 'generated' directory

After the generator has succesfully run, all generated files will be under 'generated' directory. These files can be edited if you would like to further customize your subnet. Below is a description of each generated file and how it is used.

  • commands.txt - The generated instructions to launch the subnet.
  • common.env - The config parameters for Subnet services.
  • contract_deploy.env - The config file used for CSC deployment.
  • subnet*.env - The config parameters for each Subnet node.
  • genesis.json - The 'block 0' of the Subnet. Initializes the blockchain for subnet nodes.
  • genesis_input.yml - An intermediate file used in config generation.
  • keys.json - Generated keypairs or custom keypairs by user input. Please be mindful to keep the credentials secure.
  • docker-compose.yml - The main deployment file. Includes docker images versions, startup commands, network configurations.
  • docker-compose.env - The config injection path that docker uses to point to other *.env files.

common.env

  • PARENTNET_URL - RPC of the parentnet
  • SUBNET_URL - RPC of the Subnet
  • PARENTNET_WALLET - Public key of the Relayer wallet
  • PARENTNET_WALLET_PK - Private key of the Relayer wallet
  • VITE_SUBNET_URL - URL of stats server backend that is passed to your local browser
  • VITE_SUBNET_RPC - URL of the Subnet RPC that is passed to your local browser
  • CHECKPOINT_CONTRACT - Checkpoint Smart Contract address
  • STATS_SECRET - Secret used by stats server backend
  • EXTIP - Configured IP of bootnode
  • BOOTNODE_PORT - Configured port of bootnode

subnet*.env

  • INSTANCE_NAME - Subnet node name
  • PRIVATE_KEY - Subnet node private key
  • BOOTNODES - Subnet bootnode to connect and discover other Subnet nodes
  • NETWORK_ID - Subnet network ID
  • SYNC_MODE - Node operation mode (full or archive)
  • RPC_API - enabled api's scheme such as eth, xdpos, debug, net
  • STATS_SERVICE_ADDRESS - Stats server backend URL
  • STATS_SECRET - Secret to authenticate with Stats server
  • PORT - Subnet node port for communication with other Subnet nodes
  • RPCPORT - Subnet node port for accepting RPC calls
  • WSPORT - Subnet node port for accepting Websocket connections
  • LOG_LEVEL - Desired logging level. 2=Warn, 3=Info, 4=Debug.

Subnet Ports

  1. Subnet Nodes - 3 ports are used per each subnet, RPC port, WS port, and Peering port. The port number is incremented by 1 for the next subnet node. For example subnet1's RPC is 8545, subnet2's RPC will be 8546 and so on.
  • RPC PORT - 8545, 8546, 8547, ... This is the API port, for outside chain communication to issue transaction or query chaindata.
  • WS PORT - 9555, 9556, 9557, ... This is not used currently.
  • Peering port - 20303, 20304, 20305, ... This is used for subnet nodes and bootnode peering and communication.
  • Subnet ports config can be changed in subnetX.env for each individual subnet.
  1. Bootnode - port 20301
  • Bootnode port can be changed at BOOTNODE_PORT under common.env. Also in each subnetX.env, BOOTNODES port has to be changed.
  1. Stats Server (UI backend) - port 5213.
  2. UI Frontend - port 5214.
  3. Relayer UI - port 5215.
  4. Faucet Server - port 5211
  5. Generator UI - port 5210.

Updating Configs

Upgrading Subnet Deployment

Create a Subnet backup

  1. Shutdown the subnet

  2. Make a copy of xdcchain directory

Update Subnet Versions

  1. Go to docker-compose.yml under generated directory.
  2. Change the docker image tag of your desired component(s).
  3. Run:
  docker compose --env-file docker-compose.env --profile machine1 up -d
docker compose --env-file docker-compose.env --profile services up -d

Using latest tag is not recommended since not all components version are not guaranteed to be compatible.

Updating Services Configs

  1. Shut down subnet services
docker compose --env-file docker-compose.env --profile services down
  1. Update configuration (usually ENVs inside common.env file)

  2. Start subnet services

docker compose --env-file docker-compose.env --profile services up -d
- + \ No newline at end of file diff --git a/develop/deployment/faq/index.html b/develop/deployment/faq/index.html index 5ebe189..a5eeb23 100644 --- a/develop/deployment/faq/index.html +++ b/develop/deployment/faq/index.html @@ -4,14 +4,14 @@ Frequently Asked Questions | XDC Subnet - +

Frequently Asked Questions

  • How many Subnet nodes should I have?

    Even one node is enough to start the Subnet blockchain! However, for better decantralized security, 3+ nodes is recommended. At least 2/3 of all nodes must be online and honest to mine blocks.

  • For testing, should I checkpoint the Subnet to devnet or testnet?

    Testnet, devnet will be less stable due to frequent development changes.

  • Where are all the Subnet tokens, how do I use the Subnet?

    In XDC-Subnet all initial tokens are assigned to the Grandmaster wallet (check keys.json). You can transfer them to any wallet address. Check Faucet.

  • How can I manage Subnet tokens?

    1. Check here for how you can use the Subnet Faucet to easily transfer Subnet tokens to your users.
    2. You can use any web3 wallet and connect to the Subnet RPC as a custom network, then transfer to other addresses.
  • How can I easily give out Subnet tokens to my users?

    We have provided a Faucet server for you to deploy under generated/scripts/faucet-server.sh. Anyone with access to the faucet page can request for tokens. Please check (faucet page)

  • Which files contain sensitive data and private keys?

    common.env, contract_deploy.env, keys.json, and subnet*.env. Please make sure these files are kept securely.

  • This function didn't work/I have encoutered an unexpected bug

    For troubleshooting we can help you at Telegram Support Group and we will check as soon as possible.

    Other channels for suggestions/requests include XDC Forum and GitHub Issues

  • How do I change the Relayer Wallet/Parentchain Wallet?

    You can update services configs in common.env to change the Relayer key

- + \ No newline at end of file diff --git a/develop/deployment/launch_subnet/index.html b/develop/deployment/launch_subnet/index.html index b6bfa76..fd03ff4 100644 --- a/develop/deployment/launch_subnet/index.html +++ b/develop/deployment/launch_subnet/index.html @@ -4,7 +4,7 @@ Launch a Subnet | XDC Subnet - + @@ -12,7 +12,7 @@

Launch a Subnet

Requirements

Video Walkthrough

Generate Subnet Configs With UI

  1. Pull generator.sh script from the generator Github repo

    curl -O https://raw.githubusercontent.com/XinFinOrg/XinFin-Node/generator-ui-concept/subnet/deployment-generator/scripts/generate.sh
  2. Run the configuration generator, this will start a local webserver

    chmod +x generate.sh
    ./generate.sh
    cd generated
  3. Go to http://localhost:5210/ in your browser.

    If you are running this on a remote server.

    first use ssh tunnel: ssh -N -L localhost:5210:localhost:5210 USERNAME@IP_ADDRESS -i SERVER_KEY_FILE

  1. Config the Subnet options per your requirement. UI

  2. follow the generated instructions in commands.txt. In general, the steps are:

    • start Subnet Nodes
    • deploy CSC
    • deploy XDC-Zero (optional)
    • start Subnet Services (relayer, stats-server, frontend)
  3. Once successfully deployed, you can check out UI usage guide

Removing Subnet

Shutdown Subnet

Under generated directory

docker compose --env-file docker-compose.env --profile services down 
docker compose --env-file docker-compose.env --profile machine1 down

Deleting Subnet

Remove xdcchain*, bootnodes, and stats-service directories Warning: this cannot be undone

rm -rf xdcchain* bootnodes stats-service
- + \ No newline at end of file diff --git a/develop/deployment/subnet_deployment_generator_changelog/index.html b/develop/deployment/subnet_deployment_generator_changelog/index.html index 27f64f6..d7bf02e 100644 --- a/develop/deployment/subnet_deployment_generator_changelog/index.html +++ b/develop/deployment/subnet_deployment_generator_changelog/index.html @@ -3,15 +3,15 @@ -Subnet Deployment Generator Changelog | XDC Subnet - +Subnet Deployment Generator Changelog | XDC Subnet +
-

Subnet Deployment Generator Changelog

v0.1.0 - 2024/09/28

  • WIP

v0.3.2 - 2024/08/15

  • Changed frontend default due to clashing from 5000 to 5555

v0.3.1 - 2024/07/24

  • Use testnet by default
  • Remove admin api by default
  • Added PUBLIC_IP optional config in deployment-generator
  • Bump component versions

v0.2.1 - 2024/01/09

  • New generation style, pulls script from github to run multiple docker images instead of generating from single image.
  • New Checkpoint Smart Contract (CSC) deployment image
  • Supports upgradable CSC
  • Bump components versions
  • Fix bugs
  • Code refactor, optimization

v0.1.6

  • Bump relayer version to support gas fee changes

v0.1.5

  • Added OS=mac option in 'docker.env'. This option is intended for single machine testing environment only.

v0.1.4

  • Added custom keys functionality -'docker.env' now accepts GRANDMASTER_PK and SUBNETS_PK. Where SUBNETS_PK can have multiple keys separated by a comma ','. Number of subnet keys must equal NUM_SUBNET. Keys are randomized if not provided.
  • Added RELAYER_MODE in 'docker.env', CSC deployment will select from 'full' or 'lite' smart contract, default 'full'.
  • Automate CHECKPOINT_CONTRACT copy-paste step (manual action no longer required).
  • PARENTCHAIN_WALLET is no longer required in 'docker.env', the address will be derived from PARENTCHAIN_WALLET_PK.
  • Disabled parentchain observer in docker-compose.yml, unused for now (due to long startup time).
  • Bump default subnet components stable versions
- +

Subnet Deployment Generator Changelog

v1.0.0 - 2024/10/03

  • Added Configuration Generator UI
  • Added XDC-Zero configuration generation
  • Added Faucet and Faucet Server
  • Added helper scripts
  • Changed default ports of components to prevent clashing
    • Stats Server - port 5213
    • Frontend - port 5214
    • Relayer - port 5215
    • Faucet Server - port 5211
    • Generator UI - port 5210
  • Documentation update
    • added Subnet setup video walkthrough
    • added FAQ section
    • added Contact section
  • Minor bug fixes

v0.3.2 - 2024/08/15

  • Changed frontend default due to clashing from 5000 to 5555

v0.3.1 - 2024/07/24

  • Use testnet by default
  • Remove admin api by default
  • Added PUBLIC_IP optional config in deployment-generator
  • Bump component versions

v0.2.1 - 2024/01/09

  • New generation style, pulls script from github to run multiple docker images instead of generating from single image.
  • New Checkpoint Smart Contract (CSC) deployment image
  • Supports upgradable CSC
  • Bump components versions
  • Fix bugs
  • Code refactor, optimization

v0.1.6

  • Bump relayer version to support gas fee changes

v0.1.5

  • Added OS=mac option in 'docker.env'. This option is intended for single machine testing environment only.

v0.1.4

  • Added custom keys functionality +'docker.env' now accepts GRANDMASTER_PK and SUBNETS_PK. Where SUBNETS_PK can have multiple keys separated by a comma ','. Number of subnet keys must equal NUM_SUBNET. Keys are randomized if not provided.
  • Added RELAYER_MODE in 'docker.env', CSC deployment will select from 'full' or 'lite' smart contract, default 'full'.
  • Automate CHECKPOINT_CONTRACT copy-paste step (manual action no longer required).
  • PARENTCHAIN_WALLET is no longer required in 'docker.env', the address will be derived from PARENTCHAIN_WALLET_PK.
  • Disabled parentchain observer in docker-compose.yml, unused for now (due to long startup time).
  • Bump default subnet components stable versions
+ \ No newline at end of file diff --git a/develop/deployment/troubleshooting/index.html b/develop/deployment/troubleshooting/index.html index 248d0a8..45544ef 100644 --- a/develop/deployment/troubleshooting/index.html +++ b/develop/deployment/troubleshooting/index.html @@ -4,13 +4,13 @@ Common Issues and Troubleshooting | XDC Subnet - +

Common Issues and Troubleshooting

Common Issues

  • Subnet blocks are not being mined.

    1. First confirm that the Subnet nodes are able to communicate with each other through the network layer. Run the check peer script generated/scripts/check-peers.sh the number of peers should be one less than number of subnet nodes. For example, if there are 3 Subnet nodes in total, each node should have 2 peers.

    2. If the nodes are peering but still not mining, it could be a low memory issue. In Docker configs you can try to increase memory or swap. Then, in case of fresh Subnet, delete data and start the nodes again. Docker Memory Config

    3. Docker engine in Mac OS can be inconsistent after long-running or high-load. It could help to restart the machine and hard reset the subnet to get it running.

  • Subnet node does not boot with error log Fatal: Error starting protocol stack: listen unix /work/xdcchain/XDC.ipc: bind: invalid argument

    This is due to the volume mount path being too long. The mounth path is your current directory (also can check with pwd command). Please move the generated folder to a shorter path and try again.

  • Docker image startup fails with SIGKILL or Error code: 137 found in logs. (Issue found in Frontend image)

    This error occurs because Docker ran Out Of Memory (OOM). You can increase the memory limit in Docker settings

Troubleshooting Scripts

  • generated/scripts/check-mining.sh

    This will check your current block in Subnet

  • generated/scripts/check-peers.sh

    This will check the number of peers of your Subnet node

Telegram Troubleshooting Support Group

https://t.me/+jvkX6LaLEEthZWM1

- + \ No newline at end of file diff --git a/develop/index.html b/develop/index.html index 086bc6a..8e9190c 100644 --- a/develop/index.html +++ b/develop/index.html @@ -4,13 +4,13 @@ Welcome | XDC Subnet - +

Welcome

Welcome to the technical documentation site of XDC enterprise private subnet! We are continuously adding materials to it.

- + \ No newline at end of file diff --git a/develop/introduction/architecture/index.html b/develop/introduction/architecture/index.html index 029818b..075463b 100644 --- a/develop/introduction/architecture/index.html +++ b/develop/introduction/architecture/index.html @@ -4,13 +4,13 @@ Architecture | XDC Subnet - +

Architecture

The architecture consists of the following four main components owned by the customer:

  1. a subnet driven by the XDC2.0 consensus engine, with configurable parameters
  2. a relayer program that checkpoints subnet block headers to the XDC mainnet
  3. a smart contract in the XDC mainnet that verifies and records the checkpoints and maintain the subnet header chain
  4. an API library for the wallet, which enables additional protection of subnet transactions through extra confirmation in the XDC mainnet

Docs Version Dropdown

- + \ No newline at end of file diff --git a/develop/introduction/intro/index.html b/develop/introduction/intro/index.html index 49f0e60..4bd5b65 100644 --- a/develop/introduction/intro/index.html +++ b/develop/introduction/intro/index.html @@ -4,13 +4,13 @@ Motivation & Design Rationale | XDC Subnet - +

Motivation & Design Rationale

As a leading Layer-1 (L1) public blockchain, XDC network has attrated many enterprise and institutional customers. Besides the high performance and high security that XDC already offers, these customers also demand privacy, meaning that their transactions and ledger should not be disclosed to the public. This requirement prohibits them from directly submitting transactions to XDC. Instead, they should only checkpoint snapshots of their ledger to XDC in order to extract XDC's security.

From a system perspective, "security via checkpointing" is achieved via Layer-2 (L2) techniques, such as rollups and subnets. The most popular rollup technique, namely optimistic rollup, is not suitable for our use case. This is because while transaction execution is offloaded to L2, all these L2 transactions are still submitted to L1 as a record. Another popular rollup called zero-knowledge (ZK) rollup solves this problem. But ZK computation is slow, and the type of use cases it can currently support is very limited (such as token transfers), which cannot fulfill the diverse business needs of XDC's enterprise and institutional customers.

On the other hand, subnet is a perfect solution. By subnet, the customer runs a blockchain and checkpoints its critical consensus data to the parent chain. This way, not only is privacy preserved, the subnet can have its own security and resiliency besides those provided by the parent chain. This is particularly useful to enterprise and institutional customers who may collaborate with untrusted partners. A common criticism against subnet solutions is the high entry bar and operational cost of running a blockchain. However, in XDC's case, this is indeed welcomed becomes enterprise and institutional customers prefer owning the infrastructure in a private and isolated domain.

Motivated by this opportunity, XDC's core protocol team has tailor-designed a subnet solution for XDC's enterprise and institutional customers. It has the following main features:

  1. the subnet will be a sovereign, permissioned, and high-performing blockchain wholly owned by the customer.
  2. the subnet will be driven by XDC2.0, the most advanced and secure consensus engine originally-built for XDC in-house, and will be deployed to the XDC mainnet, too.
  3. a security level equivalent to the sum security of the subnet AND XDC mainnet.
  4. native EVM smart contract support.
  5. total privacy (i.e., no visibility) of the subset transactions on the XDC mainnet.
  6. full access and compatibility to XDC's abundant SDK and tools, such as the explorer and forensic monitoring system.
- + \ No newline at end of file diff --git a/develop/markdown-page/index.html b/develop/markdown-page/index.html index 91d9017..734f479 100644 --- a/develop/markdown-page/index.html +++ b/develop/markdown-page/index.html @@ -4,13 +4,13 @@ Markdown page example | XDC Subnet - +

Markdown page example

You don't need React to write simple standalone pages.

- + \ No newline at end of file diff --git a/develop/my-markdown-page/index.html b/develop/my-markdown-page/index.html index c579e0b..be874a0 100644 --- a/develop/my-markdown-page/index.html +++ b/develop/my-markdown-page/index.html @@ -4,13 +4,13 @@ My Markdown page | XDC Subnet - +

My Markdown page

This is a Markdown page

- + \ No newline at end of file diff --git a/develop/my-react-page/index.html b/develop/my-react-page/index.html index aa23764..eaf63df 100644 --- a/develop/my-react-page/index.html +++ b/develop/my-react-page/index.html @@ -4,13 +4,13 @@ XDC Subnet - +

My React page

This is a React page

- + \ No newline at end of file diff --git a/develop/usage/explorer/index.html b/develop/usage/explorer/index.html index 9fc173c..1ab83ec 100644 --- a/develop/usage/explorer/index.html +++ b/develop/usage/explorer/index.html @@ -4,13 +4,13 @@ Blockchain Explorer | XDC Subnet - +

Blockchain Explorer

You may optionally use an external blocks explorer if you require verbose browsing such as block detail, accounts browsing, contracts browsing. We can recommend Chainlens-free as one of the solution. Please follow the instructions as the previous link. You only need to pass one of the Subnet's RPC as a variable in the docker-compose command, which will most likely be NODE_ENDPOINT=http://localhost:8545 or NODE_ENDPOINT=http://<MAIN_IP>:8545.

- + \ No newline at end of file diff --git a/develop/usage/faucet/index.html b/develop/usage/faucet/index.html index 68bd155..a246df4 100644 --- a/develop/usage/faucet/index.html +++ b/develop/usage/faucet/index.html @@ -4,7 +4,7 @@ Faucet | XDC Subnet - + @@ -12,7 +12,7 @@

Faucet

In Subnets, all native tokens are initially assigned to the Grandmaster Wallet. To allow users to use the Subnet, we have to distribute the tokens out of the Grandmaster. We have provided convenient scripts for you to easily share Subnet tokens to your users.

One-time Transfer

Under generated directory run the Faucet script.

./scripts/faucet.sh

The script will ask for your source wallet private key. You can use the Grandmaster Wallet(check keys.json file for the private key). Then input the destination wallet and the transfer amount.

Example

Faucet Server

Under generated directory run the Faucet server script.

./scripts/faucet-server.sh

The script will ask for your source wallet private key. you can use the Grandmaster Wallet(check keys.json for the private key). By default, the server is hosted on port 5211 of your machine. Then, on your browser, visit the url: http://127.0.0.1:5211

Example

Input your destination wallet or feel free to generate a random wallet via Address Generator.

Example

Submit and wait for confirmation.

Example

You can host this on any server and allow users to make token requests by themselves.

Transfer Subnet Funds Without Faucet

The Faucet is not neccessary needed for funds transfer, most Ethereum compatible web3 wallet will also work.

First import a new wallet with the Grandmaster private key. Then add a custom network pointing to your Subnet RPC URL. Finally, use the web3 wallet for tokens transfer.

Faucet Source Code

Please feel free to check the below repositories for the Subnet Faucet source code.

https://github.com/XinFinOrg/XinFin-Node/tree/master/subnet/deployment-generator/scripts

https://github.com/XinFinOrg/XinFin-Node/tree/master/subnet/deployment-generator/src/faucet.js

- + \ No newline at end of file diff --git a/develop/usage/ui/confirmation_checker/index.html b/develop/usage/ui/confirmation_checker/index.html index 35861ab..2267028 100644 --- a/develop/usage/ui/confirmation_checker/index.html +++ b/develop/usage/ui/confirmation_checker/index.html @@ -4,13 +4,13 @@ Confirmation Checker | XDC Subnet - +

Confirmation Checker

After navigating with the left menu bar to the Confirmation Checker of the Subnet, this will be shown.

Confirmation Checker 1

The input box accepts Block height, Block hash, and even TX hash.

After your input, the search engine will traverse the chain and display the info accodingly. Below is an example of Block height search.

Confirmation Checker 2

  1. Confirmation status of the block (or the block that TX belongs to)
  2. The block detailed information
  3. The Parentchain block where the Subnet block was recorded

Next is another example of a Block hash search.

Confirmation Checker 3

  1. Confirmation status of the block (or the block that TX belongs to)
  2. The block detailed information
  3. As the Subnet block has not been checkpointed in the Parentchain, the UI is displaying height 0.
- + \ No newline at end of file diff --git a/develop/usage/ui/homepage/index.html b/develop/usage/ui/homepage/index.html index 0b5d82d..f5ca479 100644 --- a/develop/usage/ui/homepage/index.html +++ b/develop/usage/ui/homepage/index.html @@ -4,13 +4,13 @@ Homepage | XDC Subnet - +

Homepage

Once subnet is successfully deployed. The homepage will show the following.

Homepage 1

  1. The Subnet blockchain state. You can see the current 'Not Confirmed' and 'Confirmed' blocks. 'Confirmed' or 'committed' blocks should be 3 blocks behind latest blocks.
  2. The Subnet blockchain AS KNOWN by the Parentchain. The Relayer periodically calls the Checkpoint Smart Contract to update the Subnet status (default every 2 minutes).
  3. The Network Info card shows the Subnet throughput state, by default Blocktime should be every 2 seconds. It also indicates the Parentchain network
  4. The Relayer Info card shows the Relayer status. Which Checkpoint Smart Contract (CSC) it calls, Subnet blocks in the backlog, and the remaining wallet funds.
  5. The Masternodes Info card shows the Subnet nodes status. By default, all Subnet nodes are Masternodes and all should be active.

In the lower half of the homepage there are more information as shown.

Homepage 2

  1. This card shows further details of subnet blocks, including their height, hash, proposer, and confirmation status. The left side of 'confirmation status' shows the block being committed in the Subnet chain and the right side shows the block hash being recorded in the Parent chain.

  2. This card shows a detailed view of the subnet nodes including their address. The status also differrentiates inactive nodes to 'penalty' or 'standby'

  3. Additionally, you can select the UI theme (light or dark) by toggling this button.

- + \ No newline at end of file diff --git a/develop/usage/ui/management/index.html b/develop/usage/ui/management/index.html index eb3d252..ee6518d 100644 --- a/develop/usage/ui/management/index.html +++ b/develop/usage/ui/management/index.html @@ -4,13 +4,13 @@ Subnet Management | XDC Subnet - + - + \ No newline at end of file