1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7348],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>g});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function o(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),m=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},u=function(t){var e=m(t.components);return n.createElement(p.Provider,{value:e},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),s=m(a),k=r,g=s["".concat(p,".").concat(k)]||s[k]||d[k]||l;return a?n.createElement(g,i(i({ref:e},u),{},{components:a})):n.createElement(g,i({ref:e},u))}));function g(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=k;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[s]="string"==typeof t?t:r,i[1]=o;for(var m=2;m<l;m++)i[m]=a[m];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}k.displayName="MDXCreateElement"},8374:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>p,default:()=>g,frontMatter:()=>o,metadata:()=>m,toc:()=>s});var n=a(7462),r=a(3366),l=(a(7294),a(3905)),i=["components"],o={title:"Validator Requirements"},p=void 0,m={unversionedId:"nodes/requirements",id:"nodes/requirements",title:"Validator Requirements",description:"Elastos Supernodes are responsible for validating blocks produced by Bitcoin merge miners via the bonded proof-of-stake (BPoS) consensus model, as part of the mainchains overarching Elastic Consensus design.",source:"@site/../docs/5.nodes/requirements.md",sourceDirName:"5.nodes",slug:"/nodes/requirements",permalink:"/nodes/requirements",draft:!1,editUrl:"https://github.com/elastos/Elastos.Wiki/edit/master/website/../docs/5.nodes/requirements.md",tags:[],version:"current",lastUpdatedBy:"racollette",lastUpdatedAt:1681318925,formattedLastUpdatedAt:"Apr 12, 2023",frontMatter:{title:"Validator Requirements"},sidebar:"nodesSidebar",previous:{title:"Nodes Overview",permalink:"/nodes/overview"},next:{title:"BPoS Node Registration Guide",permalink:"/nodes/registration-guide"}},u={},s=[{value:"User Requirements",id:"user-requirements",level:2},{value:"Minimum Hardware Configuration",id:"minimum-hardware-configuration",level:2},{value:"Reference Configurations",id:"reference-configurations",level:3},{value:"Mainchain Only (Community Validators)",id:"mainchain-only-community-validators",level:4},{value:"All Services (Only CR Council Members)",id:"all-services-only-cr-council-members",level:4},{value:"Server Software Requirements",id:"server-software-requirements",level:2},{value:"Public Network Requirements",id:"public-network-requirements",level:2},{value:"Server Security Rules",id:"server-security-rules",level:2}],d={toc:s},k="wrapper";function g(t){var e=t.components,a=(0,r.Z)(t,i);return(0,l.kt)(k,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Elastos Supernodes are responsible for validating blocks produced by ",(0,l.kt)("a",{parentName:"p",href:"/learn/mainchain/auxpow"},"Bitcoin merge miners")," via the ",(0,l.kt)("a",{parentName:"p",href:"/learn/mainchain/bpos"},"bonded proof-of-stake (BPoS)")," consensus model, as part of the mainchains overarching ",(0,l.kt)("a",{parentName:"p",href:"/learn/mainchain/intro/#elastic-consensus"},"Elastic Consensus")," design."),(0,l.kt)("p",null,"For a detailed description of BPoS mechanics, please visit ",(0,l.kt)("a",{parentName:"p",href:"/learn/mainchain/bpos"},"here"),"."),(0,l.kt)("p",null,"For a better understanding of Elastos' economics, please visit the ",(0,l.kt)("a",{parentName:"p",href:"/start/economics"},"economics")," page."),(0,l.kt)("admonition",{title:"Attention!",type:"warning"},(0,l.kt)("p",{parentName:"admonition"},"Only ",(0,l.kt)("a",{parentName:"p",href:"/start/governance/#council"},"Cyber Republic Council")," members are required to run all services! Regular ",(0,l.kt)("a",{parentName:"p",href:"/learn/mainchain/bpos"},"BPoS")," operators can simply run the mainchain, which requires far fewer computational resources. Check the hardware ",(0,l.kt)("a",{parentName:"p",href:"/nodes/requirements/#minimum-hardware-configuration"},"requirements")," for more information.")),(0,l.kt)("h2",{id:"user-requirements"},"User Requirements"),(0,l.kt)("p",null,"This guide is mostly intended for the user who:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Feels ",(0,l.kt)("strong",{parentName:"li"},"comfortable with Linux")," or similar ",(0,l.kt)("strong",{parentName:"li"},"POSIX shell environment")),(0,l.kt)("li",{parentName:"ul"},"Has the budget to access ",(0,l.kt)("strong",{parentName:"li"},"cloud computing")," or ",(0,l.kt)("strong",{parentName:"li"},"virtual private server")," resources, or has the ability to stand up their own server")),(0,l.kt)("h2",{id:"minimum-hardware-configuration"},"Minimum Hardware Configuration"),(0,l.kt)("p",null,"If you are a ",(0,l.kt)("strong",{parentName:"p"},"community validator"),", only the ELA (mainchain) service needs to be installed:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"CPU"),": ",(0,l.kt)("strong",{parentName:"li"},"2 cores")," or more"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"RAM"),": ",(0,l.kt)("strong",{parentName:"li"},"8 GB")," or more"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"Storage"),": ",(0,l.kt)("strong",{parentName:"li"},"100 GB")," or more (total size as of March 2023 is ~50 GB)")),(0,l.kt)("p",null,"If you are a ",(0,l.kt)("strong",{parentName:"p"},"CR Council member"),", all services (ELA, ESC, EID, oracles, and arbiter) must be installed:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"CPU"),": ",(0,l.kt)("strong",{parentName:"li"},"4 cores")," or more"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"RAM"),": ",(0,l.kt)("strong",{parentName:"li"},"32 GB")," or more"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"Storage"),": ",(0,l.kt)("strong",{parentName:"li"},"400 GB")," or more (total size as of March 2023 is ~200 GB)")),(0,l.kt)("p",null,"A solid-state drive (SSD) is generally preferred but not a must. A hard drive (HDD) should be OK, especially to just run the mainchain."),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"The disk usage will always increase because the blockchains are growing. You should keep an eye on your disk to make sure it is big enough to hold all the programs.")),(0,l.kt)("h3",{id:"reference-configurations"},"Reference Configurations"),(0,l.kt)("p",null,"There are many options to choose from when selecting a hosting provider. Several instance options along with hardware specs and rough pricing estimates are tabulated below. These lists are intended only as a means of comparison and are not inteded to be an exhaustive index of all possible server solutions."),(0,l.kt)("h4",{id:"mainchain-only-community-vali
1dators"},"Mainchain Only (Community Validators)"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Provider"),(0,l.kt)("th",{parentName:"tr",align:null},"Type"),(0,l.kt)("th",{parentName:"tr",align:null},"Model"),(0,l.kt)("th",{parentName:"tr",align:null},"CPUs"),(0,l.kt)("th",{parentName:"tr",align:null},"RAM (GB)"),(0,l.kt)("th",{parentName:"tr",align:null},"SSD Storage (GB)"),(0,l.kt)("th",{parentName:"tr",align:null},"Price (Month) USD"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"AWS"),(0,l.kt)("td",{parentName:"tr",align:null},"Cloud"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://aws.amazon.com/ec2/instance-types/t3/"},"t3.large")),(0,l.kt)("td",{parentName:"tr",align:null},"2"),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"100","*"),(0,l.kt)("td",{parentName:"tr",align:null},"~$100")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Tencent"),(0,l.kt)("td",{parentName:"tr",align:null},"Cloud"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.tencentcloud.com/pricing"},"S6.MEDIUM8")),(0,l.kt)("td",{parentName:"tr",align:null},"2"),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"100"),(0,l.kt)("td",{parentName:"tr",align:null},"~$80")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Alibaba"),(0,l.kt)("td",{parentName:"tr",align:null},"Cloud"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.alibabacloud.com/product"},"ecs.g7a.large")),(0,l.kt)("td",{parentName:"tr",align:null},"2"),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"100"),(0,l.kt)("td",{parentName:"tr",align:null},"~$60")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Digital Ocean"),(0,l.kt)("td",{parentName:"tr",align:null},"Cloud"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.digitalocean.com/pricing/droplets"},"Basic Droplet")),(0,l.kt)("td",{parentName:"tr",align:null},"2"),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"160"),(0,l.kt)("td",{parentName:"tr",align:null},"~$48")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Hetzner"),(0,l.kt)("td",{parentName:"tr",align:null},"VPS"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.hetzner.com/cloud"},"CPX31")),(0,l.kt)("td",{parentName:"tr",align:null},"2"),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"80"),(0,l.kt)("td",{parentName:"tr",align:null},"~$13")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Netcup"),(0,l.kt)("td",{parentName:"tr",align:null},"VPS"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.netcup.eu/bestellen/produkt.php?produkt=2996"},"VPS 1000 G10")),(0,l.kt)("td",{parentName:"tr",align:null},"6"),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"160"),(0,l.kt)("td",{parentName:"tr",align:null},"~$11")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Contabo"),(0,l.kt)("td",{parentName:"tr",align:null},"VPS"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://contabo.com/en/vps/vps-s-ssd/?image=ubuntu.267&qty=1&contract=1&storage-type=vps-s-200-gb-ssd"},"Cloud VPS S")),(0,l.kt)("td",{parentName:"tr",align:null},"4"),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"200"),(0,l.kt)("td",{parentName:"tr",align:null},"~$6")))),(0,l.kt)("admonition",{title:"Some providers are more economical than others!",type:"caution"},(0,l.kt)("p",{parentName:"admonition"},"It is recommended operators explore other providers in addition to the ones listed to ensure that the network does not become overly reliant on a single hosting solution.")),(0,l.kt)("h4",{id:"all-services-only-cr-council-members"},"All Services (Only CR Council Members)"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Provider"),(0,l.kt)("th",{parentName:"tr",align:null},"Type"),(0,l.kt)("th",{parentName:"tr",align:null},"Model"),(0,l.kt)("th",{parentName:"tr",align:null},"CPUs"),(0,l.kt)("th",{parentName:"tr",align:null},"RAM (GB)"),(0,l.kt)("th",{parentName:"tr",align:null},"SSD Storage (GB)"),(0,l.kt)("th",{parentName:"tr",align:null},"Price (Month) USD"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"AWS"),(0,l.kt)("td",{parentName:"tr",align:null},"Cloud"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://aws.amazon.com/ec2/instance-types/t3/"},"t3.2xlarge")),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"32"),(0,l.kt)("td",{parentName:"tr",align:null},"400","*"),(0,l.kt)("td",{parentName:"tr",align:null},"~$280")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Tencent"),(0,l.kt)("td",{parentName:"tr",align:null},"Cloud"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.tencentcloud.com/pricing"},"S6.2XLARGE32")),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"32"),(0,l.kt)("td",{parentName:"tr",align:null},"400","*"),(0,l.kt)("td",{parentName:"tr",align:null},"~$275")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Alibaba"),(0,l.kt)("td",{parentName:"tr",align:null},"Cloud"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.alibabacloud.com/product"},"ecs.g7a.2xlarge")),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"32"),(0,l.kt)("td",{parentName:"tr",align:null},"400","*"),(0,l.kt)("td",{parentName:"tr",align:null},"~$250")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"OVH"),(0,l.kt)("td",{parentName:"tr",align:null},"Dedicated"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.ovhcloud.com/en/bare-metal/rise/rise-1/"},"Rise-1")),(0,l.kt)("td",{parentName:"tr",align:null},"6"),(0,l.kt)("td",{parentName:"tr",align:null},"32"),(0,l.kt)("td",{parentName:"tr",align:null},"1000","*"),(0,l.kt)("td",{parentName:"tr",align:null},"~$85")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Hetzner"),(0,l.kt)("td",{parentName:"tr",align:null},"VPS"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.hetzner.com/cloud"},"CX51")),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"32"),(0,l.kt)("td",{parentName:"tr",align:null},"440","*"),(0,l.kt)("td",{parentName:"tr",align:null},"~$60")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Netcup"),(0,l.kt)("td",{parentName:"tr",align:null},"VPS"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.netcup.eu/vserver/vps.php"},"VPS 6000 G10")),(0,l.kt)("td",{parentName:"tr",align:null},"14"),(0,l.kt)("td",{parentName:"tr",align:null},"36"),(0,l.kt)("td",{parentName:"tr",align:null},"960"),(0,l.kt)("td",{parentName:"tr",align:null},"~$40")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Contabo"),(0,l.kt)("td",{parentName:"tr",align:null},"VPS"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://contabo.com/en/vps/vps-l-ssd/?image=ubuntu.267&qty=1&contract=1&storage-type=vps-m-400-gb-ssd"},"Cloud VPS L")),(0,l.kt)("td",{parentName:"tr",align:null},"8"),(0,l.kt)("td",{parentName:"tr",align:null},"30"),(0,l.kt)("td",{parentName:"tr",align:null},"800"),(0,l.kt)("td",{parentName:"tr",align:null},"~$25")))),(0,l.kt)("p",null,(0,l.kt)("em",{parentName:"p"},"*"," Additional storage needs to be configured when ordering")),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"If you're unclear on the differences between Cloud hosting and VPS (Virtual Private Server) hosting, ",(0,l.kt)("a",{parentName:"p",href:"https://www.cloudways.com/blog/cloud-vs-vps-hosting/"},"this article")," has you covered. Both are viable options, but they come with some tradeoffs for operators that are worth being aware of.")),(0,l.kt)("h2",{id:"server-software-requirements"},"Server Software Requirements"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"OS"),": ",(0,l.kt)("strong",{parentName:"li"},"Ubuntu 20.04 LTS")," 64 Bit (Intel x86_64) or newer",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"Ubuntu")," is the recommended as the Elastos blockchain developers use macOS and Ubuntu to do the development and testing, but the nodes should run on other distributions as well."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"LTS")," is better because LTS has a longer product life than the ",(0,l.kt)("strong",{parentName:"li"},"non-LTS")," version. (See ",(0,l.kt)("a",{parentName:"li",href:"https://wiki.ubuntu.com/Releases"},"Ubuntu Releases"),")"),(0,l.kt)("li",{parentName:"ul"},"The script prefers a ",(0,l.kt)("strong",{parentName:"li"},"freshly installed")," OS because it reduces conflicts with the old setup. It is t
1ime-consuming to debug such conflicts and do the related support work.")))),(0,l.kt)("h2",{id:"public-network-requirements"},"Public Network Requirements"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Use the ",(0,l.kt)("strong",{parentName:"li"},"non-metered connection")," to prevent a high usage billing"),(0,l.kt)("li",{parentName:"ul"},"A Public IP")),(0,l.kt)("h2",{id:"server-security-rules"},"Server Security Rules"),(0,l.kt)("p",null,"The following ports need to be publicly accessible from anywhere (0.0.0.0/0). For a cloud server, please modify the inbound rules."),(0,l.kt)("p",null,"If you do not need all the chains, please find a required subset by the chain name."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Chain or Program Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Protocol and Port Range"),(0,l.kt)("th",{parentName:"tr",align:null},"Purpose"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ELA"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP 20338"),(0,l.kt)("td",{parentName:"tr",align:null},"ELA P2P")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ELA"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP 20339"),(0,l.kt)("td",{parentName:"tr",align:null},"ELA DPoS")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"DID"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP 20608"),(0,l.kt)("td",{parentName:"tr",align:null},"DID P2P")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ESC"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP+UDP 20638"),(0,l.kt)("td",{parentName:"tr",align:null},"ESC P2P")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ESC"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP 20639"),(0,l.kt)("td",{parentName:"tr",align:null},"ESC DPoS")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"EID"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP+UDP 20648"),(0,l.kt)("td",{parentName:"tr",align:null},"EID P2P")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"EID"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP 20649"),(0,l.kt)("td",{parentName:"tr",align:null},"EID DPoS")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Arbiter"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP 20538"),(0,l.kt)("td",{parentName:"tr",align:null},"Arbiter P2P")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Carrier"),(0,l.kt)("td",{parentName:"tr",align:null},"UDP 3478"),(0,l.kt)("td",{parentName:"tr",align:null},"Carrier P2P")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Carrier"),(0,l.kt)("td",{parentName:"tr",align:null},"TCP 33445"),(0,l.kt)("td",{parentName:"tr",align:null},"Carrier TCP Relay")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Carrier"),(0,l.kt)("td",{parentName:"tr",align:null},"UDP 33445"),(0,l.kt)("td",{parentName:"tr",align:null},"Carrier P2P")))))}g.isMDXComponent=!0}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.