Lodestar Documentation
-
+
diff --git a/assets/js/0916e813.837d04d4.js b/assets/js/0916e813.837d04d4.js
new file mode 100644
index 000000000000..ce426277ba6e
--- /dev/null
+++ b/assets/js/0916e813.837d04d4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_lodestar_docs=self.webpackChunk_lodestar_docs||[]).push([[3632],{3870:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>a,frontMatter:()=>s,metadata:()=>c,toc:()=>t});var i=d(4848),r=d(8453);const s={title:"CLI Reference"},l="dev CLI Command",c={id:"contribution/dev-cli",title:"CLI Reference",description:"Quickly bootstrap a beacon node and multiple validators. Use for development and testing",source:"@site/pages/contribution/dev-cli.md",sourceDirName:"contribution",slug:"/contribution/dev-cli",permalink:"/lodestar/contribution/dev-cli",draft:!1,unlisted:!1,editUrl:"https://github.com/ChainSafe/lodestar/tree/unstable/docs/pages/contribution/dev-cli.md",tags:[],version:"current",frontMatter:{title:"CLI Reference"},sidebar:"tutorialSidebar",previous:{title:"Dependency Graph",permalink:"/lodestar/contribution/depgraph"},next:{title:"Debugging",permalink:"/lodestar/contribution/tools/debugging"}},o={},t=[{value:"Examples",id:"examples",level:2},{value:"dev Options",id:"dev-options",level:2},{value:"--dataDir",id:"--datadir",level:4},{value:"--network",id:"--network",level:4},{value:"--paramsFile",id:"--paramsfile",level:4},{value:"--terminal-total-difficulty-override",id:"--terminal-total-difficulty-override",level:4},{value:"--terminal-block-hash-override",id:"--terminal-block-hash-override",level:4},{value:"--terminal-block-hash-epoch-override",id:"--terminal-block-hash-epoch-override",level:4},{value:"--checkpointSyncUrl",id:"--checkpointsyncurl",level:4},{value:"--checkpointState",id:"--checkpointstate",level:4},{value:"--wssCheckpoint",id:"--wsscheckpoint",level:4},{value:"--forceCheckpointSync",id:"--forcecheckpointsync",level:4},{value:"--private",id:"--private",level:4},{value:"--validatorMonitorLogs",id:"--validatormonitorlogs",level:4},{value:"--disableLightClientServer",id:"--disablelightclientserver",level:4},{value:"--logLevel",id:"--loglevel",level:4},{value:"--logFile",id:"--logfile",level:4},{value:"--logFileLevel",id:"--logfilelevel",level:4},{value:"--logFileDailyRotate",id:"--logfiledailyrotate",level:4},{value:"--rest",id:"--rest",level:4},{value:"--rest.namespace",id:"--restnamespace",level:4},{value:"--rest.cors",id:"--restcors",level:4},{value:"--rest.address",id:"--restaddress",level:4},{value:"--rest.port",id:"--restport",level:4},{value:"--rest.swaggerUI",id:"--restswaggerui",level:4},{value:"--suggestedFeeRecipient",id:"--suggestedfeerecipient",level:4},{value:"--emitPayloadAttributes",id:"--emitpayloadattributes",level:4},{value:"--chain.archiveBlobEpochs",id:"--chainarchiveblobepochs",level:4},{value:"--eth1",id:"--eth1",level:4},{value:"--eth1.providerUrls",id:"--eth1providerurls",level:4},{value:"--execution.urls",id:"--executionurls",level:4},{value:"--execution.timeout",id:"--executiontimeout",level:4},{value:"--execution.retries",id:"--executionretries",level:4},{value:"--execution.retryDelay",id:"--executionretrydelay",level:4},{value:"--execution.engineMock",id:"--executionenginemock",level:4},{value:"--jwtSecret",id:"--jwtsecret",level:4},{value:"--jwtId",id:"--jwtid",level:4},{value:"--builder",id:"--builder",level:4},{value:"--builder.url",id:"--builderurl",level:4},{value:"--builder.timeout",id:"--buildertimeout",level:4},{value:"--builder.faultInspectionWindow",id:"--builderfaultinspectionwindow",level:4},{value:"--builder.allowedFaults",id:"--builderallowedfaults",level:4},{value:"--metrics",id:"--metrics",level:4},{value:"--metrics.port",id:"--metricsport",level:4},{value:"--metrics.address",id:"--metricsaddress",level:4},{value:"--monitoring.endpoint",id:"--monitoringendpoint",level:4},{value:"--monitoring.interval",id:"--monitoringinterval",level:4},{value:"--discv5",id:"--discv5",level:4},{value:"--listenAddress",id:"--listenaddress",level:4},{value:"--port",id:"--port",level:4},{value:"--discoveryPort",id:"--discoveryport",level:4},{value:"--listenAddress6",id:"--listenaddress6",level:4},{value:"--port6",id:"--port6",level:4},{value:"--discoveryPort6",id:"--discoveryport6",level:4},{value:"--bootnodes",id:"--bootnodes",level:4},{value:"--targetPeers",id:"--targetpeers",level:4},{value:"--subscribeAllSubnets",id:"--subscribeallsubnets",level:4},{value:"--disablePeerScoring",id:"--disablepeerscoring",level:4},{value:"--mdns",id:"--mdns",level:4},{value:"--enr.ip",id:"--enrip",level:4},{value:"--enr.tcp",id:"--enrtcp",level:4},{value:"--enr.udp",id:"--enrudp",level:4},{value:"--enr.ip6",id:"--enrip6",level:4},{value:"--enr.tcp6",id:"--enrtcp6",level:4},{value:"--enr.udp6",id:"--enrudp6",level:4},{value:"--nat",id:"--nat",level:4},{value:"--keymanager",id:"--keymanager",level:4},{value:"--keymanager.auth",id:"--keymanagerauth",level:4},{value:"--keymanager.tokenFile",id:"--keymanagertokenfile",level:4},{value:"--keymanager.port",id:"--keymanagerport",level:4},{value:"--keymanager.address",id:"--keymanageraddress",level:4},{value:"--keymanager.cors",id:"--keymanagercors",level:4},{value:"--beaconNodes",id:"--beaconnodes",level:4},{value:"--force",id:"--force",level:4},{value:"--graffiti",id:"--graffiti",level:4},{value:"--proposerSettingsFile",id:"--proposersettingsfile",level:4},{value:"--strictFeeRecipientCheck",id:"--strictfeerecipientcheck",level:4},{value:"--defaultGasLimit",id:"--defaultgaslimit",level:4},{value:"--builder.selection",id:"--builderselection",level:4},{value:"--builder.boostFactor",id:"--builderboostfactor",level:4},{value:"--useProduceBlockV3",id:"--useproduceblockv3",level:4},{value:"--broadcastValidation",id:"--broadcastvalidation",level:4},{value:"--blindedLocal",id:"--blindedlocal",level:4},{value:"--importKeystores",id:"--importkeystores",level:4},{value:"--importKeystoresPassword",id:"--importkeystorespassword",level:4},{value:"--doppelgangerProtection",id:"--doppelgangerprotection",level:4},{value:"--http.requestWireFormat",id:"--httprequestwireformat",level:4},{value:"--http.responseWireFormat",id:"--httpresponsewireformat",level:4},{value:"--externalSigner.url",id:"--externalsignerurl",level:4},{value:"--externalSigner.pubkeys",id:"--externalsignerpubkeys",level:4},{value:"--externalSigner.fetch",id:"--externalsignerfetch",level:4},{value:"--externalSigner.fetchInterval",id:"--externalsignerfetchinterval",level:4},{value:"--distributed",id:"--distributed",level:4},{value:"--genesisEth1Hash",id:"--genesiseth1hash",level:4},{value:"--genesisValidators",id:"--genesisvalidators",level:4},{value:"--startValidators",id:"--startvalidators",level:4},{value:"--genesisTime",id:"--genesistime",level:4},{value:"--reset",id:"--reset",level:4},{value:"--dumpTestnetFiles",id:"--dumptestnetfiles",level:4}];function h(e){const n={code:"code",h1:"h1",h2:"h2",h4:"h4",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.h1,{id:"dev-cli-command",children:[(0,i.jsx)(n.code,{children:"dev"})," CLI Command"]}),"\n",(0,i.jsx)(n.p,{children:"Quickly bootstrap a beacon node and multiple validators. Use for development and testing"}),"\n",(0,i.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(n.p,{children:"Start a single beacon node with 8 interop validators"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"./lodestar dev --genesisValidators 8 --reset\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"dev-options",children:[(0,i.jsx)(n.code,{children:"dev"})," Options"]}),"\n",(0,i.jsx)(n.h4,{id:"--datadir",children:(0,i.jsx)(n.code,{children:"--dataDir"})}),"\n",(0,i.jsx)(n.p,{children:"Lodestar root data directory"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--network",children:(0,i.jsx)(n.code,{children:"--network"})}),"\n",(0,i.jsx)(n.p,{children:"Name of the Ethereum Consensus chain network to join"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "mainnet", "gnosis", "sepolia", "holesky", "chiado", "ephemery", "dev"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"mainnet"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--paramsfile",children:(0,i.jsx)(n.code,{children:"--paramsFile"})}),"\n",(0,i.jsx)(n.p,{children:"Network configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-total-difficulty-override",children:(0,i.jsx)(n.code,{children:"--terminal-total-difficulty-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block TTD override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-epoch-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-epoch-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override activation epoch"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointsyncurl",children:(0,i.jsx)(n.code,{children:"--checkpointSyncUrl"})}),"\n",(0,i.jsx)(n.p,{children:"Server url hosting Beacon Node APIs to fetch weak subjectivity state. Fetch latest finalized by default, else set --wssCheckpoint"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointstate",children:(0,i.jsx)(n.code,{children:"--checkpointState"})}),"\n",(0,i.jsx)(n.p,{children:"Set a checkpoint state to start syncing from"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--wsscheckpoint",children:(0,i.jsx)(n.code,{children:"--wssCheckpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Start beacon node off a state at the provided weak subjectivity checkpoint, to be supplied in : format. For example, 0x1234:100 will sync and start off from the weak subjectivity state at checkpoint of epoch 100 with block root 0x1234."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--forcecheckpointsync",children:(0,i.jsx)(n.code,{children:"--forceCheckpointSync"})}),"\n",(0,i.jsx)(n.p,{children:"Force syncing from checkpoint state even if db state is within weak subjectivity period. This helps to avoid long sync times after node has been offline for a while."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--private",children:(0,i.jsx)(n.code,{children:"--private"})}),"\n",(0,i.jsx)(n.p,{children:"Do not send implementation details over p2p identify protocol and in builder, execution engine and eth1 requests"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--validatormonitorlogs",children:(0,i.jsx)(n.code,{children:"--validatorMonitorLogs"})}),"\n",(0,i.jsx)(n.p,{children:"Log validator monitor events as info. This requires metrics to be enabled."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--disablelightclientserver",children:(0,i.jsx)(n.code,{children:"--disableLightClientServer"})}),"\n",(0,i.jsx)(n.p,{children:"Disable light client server."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--loglevel",children:(0,i.jsx)(n.code,{children:"--logLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to terminal"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"info"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfile",children:(0,i.jsx)(n.code,{children:"--logFile"})}),"\n",(0,i.jsx)(n.p,{children:"Path to output all logs to a persistent log file, use 'none' to disable"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfilelevel",children:(0,i.jsx)(n.code,{children:"--logFileLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"debug"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfiledailyrotate",children:(0,i.jsx)(n.code,{children:"--logFileDailyRotate"})}),"\n",(0,i.jsx)(n.p,{children:"Daily rotate log files, set to an integer to limit the file count, set to 0 (zero) to disable rotation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5"})]}),"\n",(0,i.jsx)(n.h4,{id:"--rest",children:(0,i.jsx)(n.code,{children:"--rest"})}),"\n",(0,i.jsx)(n.p,{children:"Enable/disable HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restnamespace",children:(0,i.jsx)(n.code,{children:"--rest.namespace"})}),"\n",(0,i.jsx)(n.p,{children:"Pick namespaces to expose for HTTP API. Set to '*' to enable all namespaces"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "beacon", "config", "debug", "events", "lightclient", "lodestar", "node", "proof", "validator", "*"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'["beacon","config","debug","events","node","validator","lightclient"]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restcors",children:(0,i.jsx)(n.code,{children:"--rest.cors"})}),"\n",(0,i.jsx)(n.p,{children:"Configures the Access-Control-Allow-Origin CORS header for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"*"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restaddress",children:(0,i.jsx)(n.code,{children:"--rest.address"})}),"\n",(0,i.jsx)(n.p,{children:"Set host for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restport",children:(0,i.jsx)(n.code,{children:"--rest.port"})}),"\n",(0,i.jsx)(n.p,{children:"Set port for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9596"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restswaggerui",children:(0,i.jsx)(n.code,{children:"--rest.swaggerUI"})}),"\n",(0,i.jsx)(n.p,{children:"Enable Swagger UI for API exploration at http://{address}:{port}/documentation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--suggestedfeerecipient",children:(0,i.jsx)(n.code,{children:"--suggestedFeeRecipient"})}),"\n",(0,i.jsx)(n.p,{children:"Specify fee recipient default for collecting the EL block fees and rewards (a hex string representing 20 bytes address: ^0x[a-fA-F0-9]{40}$). It would be possible (WIP) to override this per validator key using config or key manager API. Only used post merge."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0x0000000000000000000000000000000000000000"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--emitpayloadattributes",children:(0,i.jsx)(n.code,{children:"--emitPayloadAttributes"})}),"\n",(0,i.jsxs)(n.p,{children:["Flag to SSE emit execution ",(0,i.jsx)(n.code,{children:"payloadAttributes"})," before every slot"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--chainarchiveblobepochs",children:(0,i.jsx)(n.code,{children:"--chain.archiveBlobEpochs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of epochs to retain finalized blobs (minimum of MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1",children:(0,i.jsx)(n.code,{children:"--eth1"})}),"\n",(0,i.jsx)(n.p,{children:"Whether to follow the eth1 chain"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1providerurls",children:(0,i.jsx)(n.code,{children:"--eth1.providerUrls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to Eth1 node with enabled rpc. If not explicitly provided and execution endpoint provided via execution.urls, it will use execution.urls. Otherwise will try connecting on the specified default(s)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8545" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionurls",children:(0,i.jsx)(n.code,{children:"--execution.urls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to execution client engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8551" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executiontimeout",children:(0,i.jsx)(n.code,{children:"--execution.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for execution engine API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretries",children:(0,i.jsx)(n.code,{children:"--execution.retries"})}),"\n",(0,i.jsx)(n.p,{children:"Number of retries when calling execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretrydelay",children:(0,i.jsx)(n.code,{children:"--execution.retryDelay"})}),"\n",(0,i.jsx)(n.p,{children:"Delay time in milliseconds between retries when retrying calls to the execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionenginemock",children:(0,i.jsx)(n.code,{children:"--execution.engineMock"})}),"\n",(0,i.jsx)(n.p,{children:"Set the execution engine to mock mode (development only)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtsecret",children:(0,i.jsx)(n.code,{children:"--jwtSecret"})}),"\n",(0,i.jsx)(n.p,{children:"File path to a shared hex-encoded jwt secret which will be used to generate and bundle HS256 encoded jwt tokens for authentication with the EL client's rpc server hosting engine apis. Secret to be exactly same as the one used by the corresponding EL client."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtid",children:(0,i.jsx)(n.code,{children:"--jwtId"})}),"\n",(0,i.jsx)(n.p,{children:"An optional identifier to be set in the id field of the claims included in jwt tokens used for authentication with EL client's rpc server hosting engine apis"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builder",children:(0,i.jsx)(n.code,{children:"--builder"})}),"\n",(0,i.jsxs)(n.p,{children:["An alias for ",(0,i.jsx)(n.code,{children:"--builder.selection default"})," for the builder flow, ignored if ",(0,i.jsx)(n.code,{children:"--builder.selection"})," is explicitly provided"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderurl",children:(0,i.jsx)(n.code,{children:"--builder.url"})}),"\n",(0,i.jsx)(n.p,{children:"Url hosting the builder API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"http://localhost:8661"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--buildertimeout",children:(0,i.jsx)(n.code,{children:"--builder.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for builder API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderfaultinspectionwindow",children:(0,i.jsx)(n.code,{children:"--builder.faultInspectionWindow"})}),"\n",(0,i.jsx)(n.p,{children:"Window to inspect missed slots for enabling/disabling builder circuit breaker"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderallowedfaults",children:(0,i.jsx)(n.code,{children:"--builder.allowedFaults"})}),"\n",(0,i.jsxs)(n.p,{children:["Number of missed slots allowed in the ",(0,i.jsx)(n.code,{children:"faultInspectionWindow"})," for builder circuit"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metrics",children:(0,i.jsx)(n.code,{children:"--metrics"})}),"\n",(0,i.jsx)(n.p,{children:"Enable the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsport",children:(0,i.jsx)(n.code,{children:"--metrics.port"})}),"\n",(0,i.jsx)(n.p,{children:"Listen TCP port for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5064"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsaddress",children:(0,i.jsx)(n.code,{children:"--metrics.address"})}),"\n",(0,i.jsx)(n.p,{children:"Listen address for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringendpoint",children:(0,i.jsx)(n.code,{children:"--monitoring.endpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Enables monitoring service for sending clients stats to the specified endpoint of a remote service (e.g. beaconcha.in)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringinterval",children:(0,i.jsx)(n.code,{children:"--monitoring.interval"})}),"\n",(0,i.jsx)(n.p,{children:"Interval in milliseconds between sending client stats to the remote service"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"60000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discv5",children:(0,i.jsx)(n.code,{children:"--discv5"})}),"\n",(0,i.jsx)(n.p,{children:"Enable discv5"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress",children:(0,i.jsx)(n.code,{children:"--listenAddress"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv4 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0.0.0.0"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--port",children:(0,i.jsx)(n.code,{children:"--port"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport",children:(0,i.jsx)(n.code,{children:"--discoveryPort"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress6",children:(0,i.jsx)(n.code,{children:"--listenAddress6"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv6 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--port6",children:(0,i.jsx)(n.code,{children:"--port6"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort6 flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9090"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport6",children:(0,i.jsx)(n.code,{children:"--discoveryPort6"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsx)(n.h4,{id:"--bootnodes",children:(0,i.jsx)(n.code,{children:"--bootnodes"})}),"\n",(0,i.jsx)(n.p,{children:"Bootnodes for discv5 discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "[]" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--targetpeers",children:(0,i.jsx)(n.code,{children:"--targetPeers"})}),"\n",(0,i.jsx)(n.p,{children:"The target connected peers. Above this number peers will be disconnected"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"100"})]}),"\n",(0,i.jsx)(n.h4,{id:"--subscribeallsubnets",children:(0,i.jsx)(n.code,{children:"--subscribeAllSubnets"})}),"\n",(0,i.jsx)(n.p,{children:"Subscribe to all subnets regardless of validator count"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--disablepeerscoring",children:(0,i.jsx)(n.code,{children:"--disablePeerScoring"})}),"\n",(0,i.jsx)(n.p,{children:"Disable peer scoring, used for testing on devnets"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--mdns",children:(0,i.jsx)(n.code,{children:"--mdns"})}),"\n",(0,i.jsx)(n.p,{children:"Enable mdns local peer discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip",children:(0,i.jsx)(n.code,{children:"--enr.ip"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp",children:(0,i.jsx)(n.code,{children:"--enr.tcp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp",children:(0,i.jsx)(n.code,{children:"--enr.udp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip6",children:(0,i.jsx)(n.code,{children:"--enr.ip6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IPv6 entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp6",children:(0,i.jsx)(n.code,{children:"--enr.tcp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp6",children:(0,i.jsx)(n.code,{children:"--enr.udp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--nat",children:(0,i.jsx)(n.code,{children:"--nat"})}),"\n",(0,i.jsx)(n.p,{children:"Allow configuration of non-local addresses"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanager",children:(0,i.jsx)(n.code,{children:"--keymanager"})}),"\n",(0,i.jsx)(n.p,{children:"Enable key manager API server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagerauth",children:(0,i.jsx)(n.code,{children:"--keymanager.auth"})}),"\n",(0,i.jsx)(n.p,{children:"Enable token bearer authentication for key manager API server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagertokenfile",children:(0,i.jsx)(n.code,{children:"--keymanager.tokenFile"})}),"\n",(0,i.jsx)(n.p,{children:"Path to file containing bearer token used for key manager API authentication"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagerport",children:(0,i.jsx)(n.code,{children:"--keymanager.port"})}),"\n",(0,i.jsx)(n.p,{children:"Set port for key manager API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5062"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanageraddress",children:(0,i.jsx)(n.code,{children:"--keymanager.address"})}),"\n",(0,i.jsx)(n.p,{children:"Set host for key manager API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagercors",children:(0,i.jsx)(n.code,{children:"--keymanager.cors"})}),"\n",(0,i.jsx)(n.p,{children:"Configures the Access-Control-Allow-Origin CORS header for key manager API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"*"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--beaconnodes",children:(0,i.jsx)(n.code,{children:"--beaconNodes"})}),"\n",(0,i.jsx)(n.p,{children:"Addresses to connect to BeaconNode"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://127.0.0.1:9596" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--force",children:(0,i.jsx)(n.code,{children:"--force"})}),"\n",(0,i.jsx)(n.p,{children:"Open validators even if there's a lockfile. Use with caution"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--graffiti",children:(0,i.jsx)(n.code,{children:"--graffiti"})}),"\n",(0,i.jsx)(n.p,{children:"Specify your custom graffiti to be included in blocks (plain UTF8 text, 32 characters max)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--proposersettingsfile",children:(0,i.jsx)(n.code,{children:"--proposerSettingsFile"})}),"\n",(0,i.jsx)(n.p,{children:"A yaml file to specify detailed default and per validator public key customized proposer configs. PS: This feature and its format is in alpha and subject to change"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--strictfeerecipientcheck",children:(0,i.jsx)(n.code,{children:"--strictFeeRecipientCheck"})}),"\n",(0,i.jsxs)(n.p,{children:["Enable strict checking of the validator's ",(0,i.jsx)(n.code,{children:"feeRecipient"})," with the one returned by engine"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--defaultgaslimit",children:(0,i.jsx)(n.code,{children:"--defaultGasLimit"})}),"\n",(0,i.jsx)(n.p,{children:"Suggested gas limit to the engine/builder for building execution payloads. Only used post merge."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"30000000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderselection",children:(0,i.jsx)(n.code,{children:"--builder.selection"})}),"\n",(0,i.jsxs)(n.p,{children:["Builder block selection strategy ",(0,i.jsx)(n.code,{children:"default"}),", ",(0,i.jsx)(n.code,{children:"maxprofit"}),", ",(0,i.jsx)(n.code,{children:"builderalways"}),", ",(0,i.jsx)(n.code,{children:"builderonly"}),", ",(0,i.jsx)(n.code,{children:"executionalways"}),", or ",(0,i.jsx)(n.code,{children:"executiononly"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"executiononly"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderboostfactor",children:(0,i.jsx)(n.code,{children:"--builder.boostFactor"})}),"\n",(0,i.jsxs)(n.p,{children:["Percentage multiplier the block producing beacon node must apply to boost (>100) or dampen (<100) builder block value for selection against execution block. The multiplier is ignored if ",(0,i.jsx)(n.code,{children:"--builder.selection"})," is set to anything other than ",(0,i.jsx)(n.code,{children:"maxprofit"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"100"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--useproduceblockv3",children:(0,i.jsx)(n.code,{children:"--useProduceBlockV3"})}),"\n",(0,i.jsx)(n.p,{children:"Enable/disable usage of produceBlockV3 for block production, is auto enabled on deneb+ blocks"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--broadcastvalidation",children:(0,i.jsx)(n.code,{children:"--broadcastValidation"})}),"\n",(0,i.jsx)(n.p,{children:"Validations to be run by beacon node for the signed block prior to publishing"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"gossip"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--blindedlocal",children:(0,i.jsx)(n.code,{children:"--blindedLocal"})}),"\n",(0,i.jsx)(n.p,{children:"Request fetching local block in blinded format for produceBlockV3"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--importkeystores",children:(0,i.jsx)(n.code,{children:"--importKeystores"})}),"\n",(0,i.jsx)(n.p,{children:"Path(s) to a directory or single file path to validator keystores, i.e. Launchpad validators"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "./keystores/*.json" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--importkeystorespassword",children:(0,i.jsx)(n.code,{children:"--importKeystoresPassword"})}),"\n",(0,i.jsxs)(n.p,{children:["Path to a file with password to decrypt all keystores from ",(0,i.jsx)(n.code,{children:"importKeystores"})," option"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"./password.txt"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--doppelgangerprotection",children:(0,i.jsx)(n.code,{children:"--doppelgangerProtection"})}),"\n",(0,i.jsx)(n.p,{children:"Enables Doppelganger protection"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--httprequestwireformat",children:(0,i.jsx)(n.code,{children:"--http.requestWireFormat"})}),"\n",(0,i.jsxs)(n.p,{children:["Wire format to use in HTTP requests to beacon node. Can be one of ",(0,i.jsx)(n.code,{children:"json"})," or ",(0,i.jsx)(n.code,{children:"ssz"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"json"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--httpresponsewireformat",children:(0,i.jsx)(n.code,{children:"--http.responseWireFormat"})}),"\n",(0,i.jsxs)(n.p,{children:["Preferred wire format for HTTP responses from beacon node. Can be one of ",(0,i.jsx)(n.code,{children:"json"})," or ",(0,i.jsx)(n.code,{children:"ssz"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"ssz"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerurl",children:(0,i.jsx)(n.code,{children:"--externalSigner.url"})}),"\n",(0,i.jsx)(n.p,{children:"URL to connect to an external signing server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerpubkeys",children:(0,i.jsx)(n.code,{children:"--externalSigner.pubkeys"})}),"\n",(0,i.jsx)(n.p,{children:"List of validator public keys used by an external signer. May also provide a single string of comma-separated public keys"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerfetch",children:(0,i.jsx)(n.code,{children:"--externalSigner.fetch"})}),"\n",(0,i.jsxs)(n.p,{children:["Fetch the list of public keys to validate from an external signer. Cannot be used in combination with ",(0,i.jsx)(n.code,{children:"--externalSigner.pubkeys"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerfetchinterval",children:(0,i.jsx)(n.code,{children:"--externalSigner.fetchInterval"})}),"\n",(0,i.jsx)(n.p,{children:"Interval in milliseconds between fetching the list of public keys from external signer, once per epoch by default"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--distributed",children:(0,i.jsx)(n.code,{children:"--distributed"})}),"\n",(0,i.jsx)(n.p,{children:"Enables specific features required to run as part of a distributed validator cluster"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--genesiseth1hash",children:(0,i.jsx)(n.code,{children:"--genesisEth1Hash"})}),"\n",(0,i.jsx)(n.p,{children:"If present it will create genesis with this eth1 hash."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--genesisvalidators",children:(0,i.jsx)(n.code,{children:"--genesisValidators"})}),"\n",(0,i.jsx)(n.p,{children:"If present it will create genesis with interop validators and start chain."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"8"})]}),"\n",(0,i.jsx)(n.h4,{id:"--startvalidators",children:(0,i.jsx)(n.code,{children:"--startValidators"})}),"\n",(0,i.jsx)(n.p,{children:"Start interop validators in inclusive range with notation '0..7'"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--genesistime",children:(0,i.jsx)(n.code,{children:"--genesisTime"})}),"\n",(0,i.jsx)(n.p,{children:"genesis_time to initialize interop genesis state"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"now"})]}),"\n",(0,i.jsx)(n.h4,{id:"--reset",children:(0,i.jsx)(n.code,{children:"--reset"})}),"\n",(0,i.jsx)(n.p,{children:"To delete chain and validator directories"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--dumptestnetfiles",children:(0,i.jsx)(n.code,{children:"--dumpTestnetFiles"})}),"\n",(0,i.jsx)(n.p,{children:"Dump testnet files and exit"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>l,x:()=>c});var i=d(6540);const r={},s=i.createContext(r);function l(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/0916e813.d0c1a966.js b/assets/js/0916e813.d0c1a966.js
deleted file mode 100644
index 5383f0522b9f..000000000000
--- a/assets/js/0916e813.d0c1a966.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_lodestar_docs=self.webpackChunk_lodestar_docs||[]).push([[3632],{3870:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>a,frontMatter:()=>s,metadata:()=>l,toc:()=>t});var i=d(4848),r=d(8453);const s={title:"CLI Reference"},c="dev CLI Command",l={id:"contribution/dev-cli",title:"CLI Reference",description:"Quickly bootstrap a beacon node and multiple validators. Use for development and testing",source:"@site/pages/contribution/dev-cli.md",sourceDirName:"contribution",slug:"/contribution/dev-cli",permalink:"/lodestar/contribution/dev-cli",draft:!1,unlisted:!1,editUrl:"https://github.com/ChainSafe/lodestar/tree/unstable/docs/pages/contribution/dev-cli.md",tags:[],version:"current",frontMatter:{title:"CLI Reference"},sidebar:"tutorialSidebar",previous:{title:"Dependency Graph",permalink:"/lodestar/contribution/depgraph"},next:{title:"Debugging",permalink:"/lodestar/contribution/tools/debugging"}},o={},t=[{value:"Examples",id:"examples",level:2},{value:"dev Options",id:"dev-options",level:2},{value:"--dataDir",id:"--datadir",level:4},{value:"--network",id:"--network",level:4},{value:"--paramsFile",id:"--paramsfile",level:4},{value:"--terminal-total-difficulty-override",id:"--terminal-total-difficulty-override",level:4},{value:"--terminal-block-hash-override",id:"--terminal-block-hash-override",level:4},{value:"--terminal-block-hash-epoch-override",id:"--terminal-block-hash-epoch-override",level:4},{value:"--checkpointSyncUrl",id:"--checkpointsyncurl",level:4},{value:"--checkpointState",id:"--checkpointstate",level:4},{value:"--wssCheckpoint",id:"--wsscheckpoint",level:4},{value:"--forceCheckpointSync",id:"--forcecheckpointsync",level:4},{value:"--private",id:"--private",level:4},{value:"--validatorMonitorLogs",id:"--validatormonitorlogs",level:4},{value:"--logLevel",id:"--loglevel",level:4},{value:"--logFile",id:"--logfile",level:4},{value:"--logFileLevel",id:"--logfilelevel",level:4},{value:"--logFileDailyRotate",id:"--logfiledailyrotate",level:4},{value:"--rest",id:"--rest",level:4},{value:"--rest.namespace",id:"--restnamespace",level:4},{value:"--rest.cors",id:"--restcors",level:4},{value:"--rest.address",id:"--restaddress",level:4},{value:"--rest.port",id:"--restport",level:4},{value:"--rest.swaggerUI",id:"--restswaggerui",level:4},{value:"--suggestedFeeRecipient",id:"--suggestedfeerecipient",level:4},{value:"--emitPayloadAttributes",id:"--emitpayloadattributes",level:4},{value:"--chain.archiveBlobEpochs",id:"--chainarchiveblobepochs",level:4},{value:"--eth1",id:"--eth1",level:4},{value:"--eth1.providerUrls",id:"--eth1providerurls",level:4},{value:"--execution.urls",id:"--executionurls",level:4},{value:"--execution.timeout",id:"--executiontimeout",level:4},{value:"--execution.retries",id:"--executionretries",level:4},{value:"--execution.retryDelay",id:"--executionretrydelay",level:4},{value:"--execution.engineMock",id:"--executionenginemock",level:4},{value:"--jwtSecret",id:"--jwtsecret",level:4},{value:"--jwtId",id:"--jwtid",level:4},{value:"--builder",id:"--builder",level:4},{value:"--builder.url",id:"--builderurl",level:4},{value:"--builder.timeout",id:"--buildertimeout",level:4},{value:"--builder.faultInspectionWindow",id:"--builderfaultinspectionwindow",level:4},{value:"--builder.allowedFaults",id:"--builderallowedfaults",level:4},{value:"--metrics",id:"--metrics",level:4},{value:"--metrics.port",id:"--metricsport",level:4},{value:"--metrics.address",id:"--metricsaddress",level:4},{value:"--monitoring.endpoint",id:"--monitoringendpoint",level:4},{value:"--monitoring.interval",id:"--monitoringinterval",level:4},{value:"--discv5",id:"--discv5",level:4},{value:"--listenAddress",id:"--listenaddress",level:4},{value:"--port",id:"--port",level:4},{value:"--discoveryPort",id:"--discoveryport",level:4},{value:"--listenAddress6",id:"--listenaddress6",level:4},{value:"--port6",id:"--port6",level:4},{value:"--discoveryPort6",id:"--discoveryport6",level:4},{value:"--bootnodes",id:"--bootnodes",level:4},{value:"--targetPeers",id:"--targetpeers",level:4},{value:"--subscribeAllSubnets",id:"--subscribeallsubnets",level:4},{value:"--disablePeerScoring",id:"--disablepeerscoring",level:4},{value:"--mdns",id:"--mdns",level:4},{value:"--enr.ip",id:"--enrip",level:4},{value:"--enr.tcp",id:"--enrtcp",level:4},{value:"--enr.udp",id:"--enrudp",level:4},{value:"--enr.ip6",id:"--enrip6",level:4},{value:"--enr.tcp6",id:"--enrtcp6",level:4},{value:"--enr.udp6",id:"--enrudp6",level:4},{value:"--nat",id:"--nat",level:4},{value:"--keymanager",id:"--keymanager",level:4},{value:"--keymanager.auth",id:"--keymanagerauth",level:4},{value:"--keymanager.tokenFile",id:"--keymanagertokenfile",level:4},{value:"--keymanager.port",id:"--keymanagerport",level:4},{value:"--keymanager.address",id:"--keymanageraddress",level:4},{value:"--keymanager.cors",id:"--keymanagercors",level:4},{value:"--beaconNodes",id:"--beaconnodes",level:4},{value:"--force",id:"--force",level:4},{value:"--graffiti",id:"--graffiti",level:4},{value:"--proposerSettingsFile",id:"--proposersettingsfile",level:4},{value:"--strictFeeRecipientCheck",id:"--strictfeerecipientcheck",level:4},{value:"--defaultGasLimit",id:"--defaultgaslimit",level:4},{value:"--builder.selection",id:"--builderselection",level:4},{value:"--builder.boostFactor",id:"--builderboostfactor",level:4},{value:"--useProduceBlockV3",id:"--useproduceblockv3",level:4},{value:"--broadcastValidation",id:"--broadcastvalidation",level:4},{value:"--blindedLocal",id:"--blindedlocal",level:4},{value:"--importKeystores",id:"--importkeystores",level:4},{value:"--importKeystoresPassword",id:"--importkeystorespassword",level:4},{value:"--doppelgangerProtection",id:"--doppelgangerprotection",level:4},{value:"--http.requestWireFormat",id:"--httprequestwireformat",level:4},{value:"--http.responseWireFormat",id:"--httpresponsewireformat",level:4},{value:"--externalSigner.url",id:"--externalsignerurl",level:4},{value:"--externalSigner.pubkeys",id:"--externalsignerpubkeys",level:4},{value:"--externalSigner.fetch",id:"--externalsignerfetch",level:4},{value:"--externalSigner.fetchInterval",id:"--externalsignerfetchinterval",level:4},{value:"--distributed",id:"--distributed",level:4},{value:"--genesisEth1Hash",id:"--genesiseth1hash",level:4},{value:"--genesisValidators",id:"--genesisvalidators",level:4},{value:"--startValidators",id:"--startvalidators",level:4},{value:"--genesisTime",id:"--genesistime",level:4},{value:"--reset",id:"--reset",level:4},{value:"--dumpTestnetFiles",id:"--dumptestnetfiles",level:4}];function h(e){const n={code:"code",h1:"h1",h2:"h2",h4:"h4",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.h1,{id:"dev-cli-command",children:[(0,i.jsx)(n.code,{children:"dev"})," CLI Command"]}),"\n",(0,i.jsx)(n.p,{children:"Quickly bootstrap a beacon node and multiple validators. Use for development and testing"}),"\n",(0,i.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(n.p,{children:"Start a single beacon node with 8 interop validators"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"./lodestar dev --genesisValidators 8 --reset\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"dev-options",children:[(0,i.jsx)(n.code,{children:"dev"})," Options"]}),"\n",(0,i.jsx)(n.h4,{id:"--datadir",children:(0,i.jsx)(n.code,{children:"--dataDir"})}),"\n",(0,i.jsx)(n.p,{children:"Lodestar root data directory"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--network",children:(0,i.jsx)(n.code,{children:"--network"})}),"\n",(0,i.jsx)(n.p,{children:"Name of the Ethereum Consensus chain network to join"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "mainnet", "gnosis", "sepolia", "holesky", "chiado", "ephemery", "dev"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"mainnet"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--paramsfile",children:(0,i.jsx)(n.code,{children:"--paramsFile"})}),"\n",(0,i.jsx)(n.p,{children:"Network configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-total-difficulty-override",children:(0,i.jsx)(n.code,{children:"--terminal-total-difficulty-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block TTD override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-epoch-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-epoch-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override activation epoch"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointsyncurl",children:(0,i.jsx)(n.code,{children:"--checkpointSyncUrl"})}),"\n",(0,i.jsx)(n.p,{children:"Server url hosting Beacon Node APIs to fetch weak subjectivity state. Fetch latest finalized by default, else set --wssCheckpoint"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointstate",children:(0,i.jsx)(n.code,{children:"--checkpointState"})}),"\n",(0,i.jsx)(n.p,{children:"Set a checkpoint state to start syncing from"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--wsscheckpoint",children:(0,i.jsx)(n.code,{children:"--wssCheckpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Start beacon node off a state at the provided weak subjectivity checkpoint, to be supplied in : format. For example, 0x1234:100 will sync and start off from the weak subjectivity state at checkpoint of epoch 100 with block root 0x1234."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--forcecheckpointsync",children:(0,i.jsx)(n.code,{children:"--forceCheckpointSync"})}),"\n",(0,i.jsx)(n.p,{children:"Force syncing from checkpoint state even if db state is within weak subjectivity period. This helps to avoid long sync times after node has been offline for a while."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--private",children:(0,i.jsx)(n.code,{children:"--private"})}),"\n",(0,i.jsx)(n.p,{children:"Do not send implementation details over p2p identify protocol and in builder, execution engine and eth1 requests"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--validatormonitorlogs",children:(0,i.jsx)(n.code,{children:"--validatorMonitorLogs"})}),"\n",(0,i.jsx)(n.p,{children:"Log validator monitor events as info. This requires metrics to be enabled."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--loglevel",children:(0,i.jsx)(n.code,{children:"--logLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to terminal"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"info"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfile",children:(0,i.jsx)(n.code,{children:"--logFile"})}),"\n",(0,i.jsx)(n.p,{children:"Path to output all logs to a persistent log file, use 'none' to disable"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfilelevel",children:(0,i.jsx)(n.code,{children:"--logFileLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"debug"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfiledailyrotate",children:(0,i.jsx)(n.code,{children:"--logFileDailyRotate"})}),"\n",(0,i.jsx)(n.p,{children:"Daily rotate log files, set to an integer to limit the file count, set to 0 (zero) to disable rotation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5"})]}),"\n",(0,i.jsx)(n.h4,{id:"--rest",children:(0,i.jsx)(n.code,{children:"--rest"})}),"\n",(0,i.jsx)(n.p,{children:"Enable/disable HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restnamespace",children:(0,i.jsx)(n.code,{children:"--rest.namespace"})}),"\n",(0,i.jsx)(n.p,{children:"Pick namespaces to expose for HTTP API. Set to '*' to enable all namespaces"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "beacon", "config", "debug", "events", "lightclient", "lodestar", "node", "proof", "validator", "*"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'["beacon","config","debug","events","node","validator","lightclient"]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restcors",children:(0,i.jsx)(n.code,{children:"--rest.cors"})}),"\n",(0,i.jsx)(n.p,{children:"Configures the Access-Control-Allow-Origin CORS header for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"*"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restaddress",children:(0,i.jsx)(n.code,{children:"--rest.address"})}),"\n",(0,i.jsx)(n.p,{children:"Set host for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restport",children:(0,i.jsx)(n.code,{children:"--rest.port"})}),"\n",(0,i.jsx)(n.p,{children:"Set port for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9596"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restswaggerui",children:(0,i.jsx)(n.code,{children:"--rest.swaggerUI"})}),"\n",(0,i.jsx)(n.p,{children:"Enable Swagger UI for API exploration at http://{address}:{port}/documentation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--suggestedfeerecipient",children:(0,i.jsx)(n.code,{children:"--suggestedFeeRecipient"})}),"\n",(0,i.jsx)(n.p,{children:"Specify fee recipient default for collecting the EL block fees and rewards (a hex string representing 20 bytes address: ^0x[a-fA-F0-9]{40}$). It would be possible (WIP) to override this per validator key using config or key manager API. Only used post merge."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0x0000000000000000000000000000000000000000"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--emitpayloadattributes",children:(0,i.jsx)(n.code,{children:"--emitPayloadAttributes"})}),"\n",(0,i.jsxs)(n.p,{children:["Flag to SSE emit execution ",(0,i.jsx)(n.code,{children:"payloadAttributes"})," before every slot"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--chainarchiveblobepochs",children:(0,i.jsx)(n.code,{children:"--chain.archiveBlobEpochs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of epochs to retain finalized blobs (minimum of MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1",children:(0,i.jsx)(n.code,{children:"--eth1"})}),"\n",(0,i.jsx)(n.p,{children:"Whether to follow the eth1 chain"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1providerurls",children:(0,i.jsx)(n.code,{children:"--eth1.providerUrls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to Eth1 node with enabled rpc. If not explicitly provided and execution endpoint provided via execution.urls, it will use execution.urls. Otherwise will try connecting on the specified default(s)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8545" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionurls",children:(0,i.jsx)(n.code,{children:"--execution.urls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to execution client engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8551" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executiontimeout",children:(0,i.jsx)(n.code,{children:"--execution.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for execution engine API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretries",children:(0,i.jsx)(n.code,{children:"--execution.retries"})}),"\n",(0,i.jsx)(n.p,{children:"Number of retries when calling execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretrydelay",children:(0,i.jsx)(n.code,{children:"--execution.retryDelay"})}),"\n",(0,i.jsx)(n.p,{children:"Delay time in milliseconds between retries when retrying calls to the execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionenginemock",children:(0,i.jsx)(n.code,{children:"--execution.engineMock"})}),"\n",(0,i.jsx)(n.p,{children:"Set the execution engine to mock mode (development only)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtsecret",children:(0,i.jsx)(n.code,{children:"--jwtSecret"})}),"\n",(0,i.jsx)(n.p,{children:"File path to a shared hex-encoded jwt secret which will be used to generate and bundle HS256 encoded jwt tokens for authentication with the EL client's rpc server hosting engine apis. Secret to be exactly same as the one used by the corresponding EL client."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtid",children:(0,i.jsx)(n.code,{children:"--jwtId"})}),"\n",(0,i.jsx)(n.p,{children:"An optional identifier to be set in the id field of the claims included in jwt tokens used for authentication with EL client's rpc server hosting engine apis"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builder",children:(0,i.jsx)(n.code,{children:"--builder"})}),"\n",(0,i.jsxs)(n.p,{children:["An alias for ",(0,i.jsx)(n.code,{children:"--builder.selection default"})," for the builder flow, ignored if ",(0,i.jsx)(n.code,{children:"--builder.selection"})," is explicitly provided"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderurl",children:(0,i.jsx)(n.code,{children:"--builder.url"})}),"\n",(0,i.jsx)(n.p,{children:"Url hosting the builder API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"http://localhost:8661"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--buildertimeout",children:(0,i.jsx)(n.code,{children:"--builder.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for builder API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderfaultinspectionwindow",children:(0,i.jsx)(n.code,{children:"--builder.faultInspectionWindow"})}),"\n",(0,i.jsx)(n.p,{children:"Window to inspect missed slots for enabling/disabling builder circuit breaker"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderallowedfaults",children:(0,i.jsx)(n.code,{children:"--builder.allowedFaults"})}),"\n",(0,i.jsxs)(n.p,{children:["Number of missed slots allowed in the ",(0,i.jsx)(n.code,{children:"faultInspectionWindow"})," for builder circuit"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metrics",children:(0,i.jsx)(n.code,{children:"--metrics"})}),"\n",(0,i.jsx)(n.p,{children:"Enable the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsport",children:(0,i.jsx)(n.code,{children:"--metrics.port"})}),"\n",(0,i.jsx)(n.p,{children:"Listen TCP port for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5064"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsaddress",children:(0,i.jsx)(n.code,{children:"--metrics.address"})}),"\n",(0,i.jsx)(n.p,{children:"Listen address for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringendpoint",children:(0,i.jsx)(n.code,{children:"--monitoring.endpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Enables monitoring service for sending clients stats to the specified endpoint of a remote service (e.g. beaconcha.in)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringinterval",children:(0,i.jsx)(n.code,{children:"--monitoring.interval"})}),"\n",(0,i.jsx)(n.p,{children:"Interval in milliseconds between sending client stats to the remote service"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"60000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discv5",children:(0,i.jsx)(n.code,{children:"--discv5"})}),"\n",(0,i.jsx)(n.p,{children:"Enable discv5"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress",children:(0,i.jsx)(n.code,{children:"--listenAddress"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv4 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0.0.0.0"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--port",children:(0,i.jsx)(n.code,{children:"--port"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport",children:(0,i.jsx)(n.code,{children:"--discoveryPort"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress6",children:(0,i.jsx)(n.code,{children:"--listenAddress6"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv6 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--port6",children:(0,i.jsx)(n.code,{children:"--port6"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort6 flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9090"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport6",children:(0,i.jsx)(n.code,{children:"--discoveryPort6"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsx)(n.h4,{id:"--bootnodes",children:(0,i.jsx)(n.code,{children:"--bootnodes"})}),"\n",(0,i.jsx)(n.p,{children:"Bootnodes for discv5 discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "[]" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--targetpeers",children:(0,i.jsx)(n.code,{children:"--targetPeers"})}),"\n",(0,i.jsx)(n.p,{children:"The target connected peers. Above this number peers will be disconnected"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"100"})]}),"\n",(0,i.jsx)(n.h4,{id:"--subscribeallsubnets",children:(0,i.jsx)(n.code,{children:"--subscribeAllSubnets"})}),"\n",(0,i.jsx)(n.p,{children:"Subscribe to all subnets regardless of validator count"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--disablepeerscoring",children:(0,i.jsx)(n.code,{children:"--disablePeerScoring"})}),"\n",(0,i.jsx)(n.p,{children:"Disable peer scoring, used for testing on devnets"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--mdns",children:(0,i.jsx)(n.code,{children:"--mdns"})}),"\n",(0,i.jsx)(n.p,{children:"Enable mdns local peer discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip",children:(0,i.jsx)(n.code,{children:"--enr.ip"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp",children:(0,i.jsx)(n.code,{children:"--enr.tcp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp",children:(0,i.jsx)(n.code,{children:"--enr.udp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip6",children:(0,i.jsx)(n.code,{children:"--enr.ip6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IPv6 entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp6",children:(0,i.jsx)(n.code,{children:"--enr.tcp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp6",children:(0,i.jsx)(n.code,{children:"--enr.udp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--nat",children:(0,i.jsx)(n.code,{children:"--nat"})}),"\n",(0,i.jsx)(n.p,{children:"Allow configuration of non-local addresses"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanager",children:(0,i.jsx)(n.code,{children:"--keymanager"})}),"\n",(0,i.jsx)(n.p,{children:"Enable key manager API server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagerauth",children:(0,i.jsx)(n.code,{children:"--keymanager.auth"})}),"\n",(0,i.jsx)(n.p,{children:"Enable token bearer authentication for key manager API server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagertokenfile",children:(0,i.jsx)(n.code,{children:"--keymanager.tokenFile"})}),"\n",(0,i.jsx)(n.p,{children:"Path to file containing bearer token used for key manager API authentication"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagerport",children:(0,i.jsx)(n.code,{children:"--keymanager.port"})}),"\n",(0,i.jsx)(n.p,{children:"Set port for key manager API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5062"})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanageraddress",children:(0,i.jsx)(n.code,{children:"--keymanager.address"})}),"\n",(0,i.jsx)(n.p,{children:"Set host for key manager API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--keymanagercors",children:(0,i.jsx)(n.code,{children:"--keymanager.cors"})}),"\n",(0,i.jsx)(n.p,{children:"Configures the Access-Control-Allow-Origin CORS header for key manager API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"*"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--beaconnodes",children:(0,i.jsx)(n.code,{children:"--beaconNodes"})}),"\n",(0,i.jsx)(n.p,{children:"Addresses to connect to BeaconNode"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://127.0.0.1:9596" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--force",children:(0,i.jsx)(n.code,{children:"--force"})}),"\n",(0,i.jsx)(n.p,{children:"Open validators even if there's a lockfile. Use with caution"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--graffiti",children:(0,i.jsx)(n.code,{children:"--graffiti"})}),"\n",(0,i.jsx)(n.p,{children:"Specify your custom graffiti to be included in blocks (plain UTF8 text, 32 characters max)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--proposersettingsfile",children:(0,i.jsx)(n.code,{children:"--proposerSettingsFile"})}),"\n",(0,i.jsx)(n.p,{children:"A yaml file to specify detailed default and per validator public key customized proposer configs. PS: This feature and its format is in alpha and subject to change"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--strictfeerecipientcheck",children:(0,i.jsx)(n.code,{children:"--strictFeeRecipientCheck"})}),"\n",(0,i.jsxs)(n.p,{children:["Enable strict checking of the validator's ",(0,i.jsx)(n.code,{children:"feeRecipient"})," with the one returned by engine"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--defaultgaslimit",children:(0,i.jsx)(n.code,{children:"--defaultGasLimit"})}),"\n",(0,i.jsx)(n.p,{children:"Suggested gas limit to the engine/builder for building execution payloads. Only used post merge."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"30000000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderselection",children:(0,i.jsx)(n.code,{children:"--builder.selection"})}),"\n",(0,i.jsxs)(n.p,{children:["Builder block selection strategy ",(0,i.jsx)(n.code,{children:"default"}),", ",(0,i.jsx)(n.code,{children:"maxprofit"}),", ",(0,i.jsx)(n.code,{children:"builderalways"}),", ",(0,i.jsx)(n.code,{children:"builderonly"}),", ",(0,i.jsx)(n.code,{children:"executionalways"}),", or ",(0,i.jsx)(n.code,{children:"executiononly"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"executiononly"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderboostfactor",children:(0,i.jsx)(n.code,{children:"--builder.boostFactor"})}),"\n",(0,i.jsxs)(n.p,{children:["Percentage multiplier the block producing beacon node must apply to boost (>100) or dampen (<100) builder block value for selection against execution block. The multiplier is ignored if ",(0,i.jsx)(n.code,{children:"--builder.selection"})," is set to anything other than ",(0,i.jsx)(n.code,{children:"maxprofit"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"100"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--useproduceblockv3",children:(0,i.jsx)(n.code,{children:"--useProduceBlockV3"})}),"\n",(0,i.jsx)(n.p,{children:"Enable/disable usage of produceBlockV3 for block production, is auto enabled on deneb+ blocks"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--broadcastvalidation",children:(0,i.jsx)(n.code,{children:"--broadcastValidation"})}),"\n",(0,i.jsx)(n.p,{children:"Validations to be run by beacon node for the signed block prior to publishing"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"gossip"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--blindedlocal",children:(0,i.jsx)(n.code,{children:"--blindedLocal"})}),"\n",(0,i.jsx)(n.p,{children:"Request fetching local block in blinded format for produceBlockV3"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--importkeystores",children:(0,i.jsx)(n.code,{children:"--importKeystores"})}),"\n",(0,i.jsx)(n.p,{children:"Path(s) to a directory or single file path to validator keystores, i.e. Launchpad validators"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "./keystores/*.json" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--importkeystorespassword",children:(0,i.jsx)(n.code,{children:"--importKeystoresPassword"})}),"\n",(0,i.jsxs)(n.p,{children:["Path to a file with password to decrypt all keystores from ",(0,i.jsx)(n.code,{children:"importKeystores"})," option"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"./password.txt"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--doppelgangerprotection",children:(0,i.jsx)(n.code,{children:"--doppelgangerProtection"})}),"\n",(0,i.jsx)(n.p,{children:"Enables Doppelganger protection"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--httprequestwireformat",children:(0,i.jsx)(n.code,{children:"--http.requestWireFormat"})}),"\n",(0,i.jsxs)(n.p,{children:["Wire format to use in HTTP requests to beacon node. Can be one of ",(0,i.jsx)(n.code,{children:"json"})," or ",(0,i.jsx)(n.code,{children:"ssz"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"json"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--httpresponsewireformat",children:(0,i.jsx)(n.code,{children:"--http.responseWireFormat"})}),"\n",(0,i.jsxs)(n.p,{children:["Preferred wire format for HTTP responses from beacon node. Can be one of ",(0,i.jsx)(n.code,{children:"json"})," or ",(0,i.jsx)(n.code,{children:"ssz"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"ssz"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerurl",children:(0,i.jsx)(n.code,{children:"--externalSigner.url"})}),"\n",(0,i.jsx)(n.p,{children:"URL to connect to an external signing server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerpubkeys",children:(0,i.jsx)(n.code,{children:"--externalSigner.pubkeys"})}),"\n",(0,i.jsx)(n.p,{children:"List of validator public keys used by an external signer. May also provide a single string of comma-separated public keys"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerfetch",children:(0,i.jsx)(n.code,{children:"--externalSigner.fetch"})}),"\n",(0,i.jsxs)(n.p,{children:["Fetch the list of public keys to validate from an external signer. Cannot be used in combination with ",(0,i.jsx)(n.code,{children:"--externalSigner.pubkeys"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--externalsignerfetchinterval",children:(0,i.jsx)(n.code,{children:"--externalSigner.fetchInterval"})}),"\n",(0,i.jsx)(n.p,{children:"Interval in milliseconds between fetching the list of public keys from external signer, once per epoch by default"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--distributed",children:(0,i.jsx)(n.code,{children:"--distributed"})}),"\n",(0,i.jsx)(n.p,{children:"Enables specific features required to run as part of a distributed validator cluster"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--genesiseth1hash",children:(0,i.jsx)(n.code,{children:"--genesisEth1Hash"})}),"\n",(0,i.jsx)(n.p,{children:"If present it will create genesis with this eth1 hash."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--genesisvalidators",children:(0,i.jsx)(n.code,{children:"--genesisValidators"})}),"\n",(0,i.jsx)(n.p,{children:"If present it will create genesis with interop validators and start chain."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"8"})]}),"\n",(0,i.jsx)(n.h4,{id:"--startvalidators",children:(0,i.jsx)(n.code,{children:"--startValidators"})}),"\n",(0,i.jsx)(n.p,{children:"Start interop validators in inclusive range with notation '0..7'"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--genesistime",children:(0,i.jsx)(n.code,{children:"--genesisTime"})}),"\n",(0,i.jsx)(n.p,{children:"genesis_time to initialize interop genesis state"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"now"})]}),"\n",(0,i.jsx)(n.h4,{id:"--reset",children:(0,i.jsx)(n.code,{children:"--reset"})}),"\n",(0,i.jsx)(n.p,{children:"To delete chain and validator directories"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--dumptestnetfiles",children:(0,i.jsx)(n.code,{children:"--dumpTestnetFiles"})}),"\n",(0,i.jsx)(n.p,{children:"Dump testnet files and exit"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>l});var i=d(6540);const r={},s=i.createContext(r);function c(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/88b8b4fa.0632b840.js b/assets/js/88b8b4fa.0632b840.js
new file mode 100644
index 000000000000..1f33feddd707
--- /dev/null
+++ b/assets/js/88b8b4fa.0632b840.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_lodestar_docs=self.webpackChunk_lodestar_docs||[]).push([[8492],{2151:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>a,frontMatter:()=>l,metadata:()=>s,toc:()=>t});var i=d(4848),c=d(8453);const l={title:"CLI Reference"},r="beacon CLI Command",s={id:"run/beacon-management/beacon-cli",title:"CLI Reference",description:"Run a beacon chain node",source:"@site/pages/run/beacon-management/beacon-cli.md",sourceDirName:"run/beacon-management",slug:"/run/beacon-management/beacon-cli",permalink:"/lodestar/run/beacon-management/beacon-cli",draft:!1,unlisted:!1,editUrl:"https://github.com/ChainSafe/lodestar/tree/unstable/docs/pages/run/beacon-management/beacon-cli.md",tags:[],version:"current",frontMatter:{title:"CLI Reference"},sidebar:"tutorialSidebar",previous:{title:"Starting a Node",permalink:"/lodestar/run/beacon-management/starting-a-node"},next:{title:"Data Retention",permalink:"/lodestar/run/beacon-management/data-retention"}},o={},t=[{value:"Examples",id:"examples",level:2},{value:"beacon Options",id:"beacon-options",level:2},{value:"--dataDir",id:"--datadir",level:4},{value:"--network",id:"--network",level:4},{value:"--paramsFile",id:"--paramsfile",level:4},{value:"--terminal-total-difficulty-override",id:"--terminal-total-difficulty-override",level:4},{value:"--terminal-block-hash-override",id:"--terminal-block-hash-override",level:4},{value:"--terminal-block-hash-epoch-override",id:"--terminal-block-hash-epoch-override",level:4},{value:"--checkpointSyncUrl",id:"--checkpointsyncurl",level:4},{value:"--checkpointState",id:"--checkpointstate",level:4},{value:"--wssCheckpoint",id:"--wsscheckpoint",level:4},{value:"--forceCheckpointSync",id:"--forcecheckpointsync",level:4},{value:"--private",id:"--private",level:4},{value:"--validatorMonitorLogs",id:"--validatormonitorlogs",level:4},{value:"--disableLightClientServer",id:"--disablelightclientserver",level:4},{value:"--logLevel",id:"--loglevel",level:4},{value:"--logFile",id:"--logfile",level:4},{value:"--logFileLevel",id:"--logfilelevel",level:4},{value:"--logFileDailyRotate",id:"--logfiledailyrotate",level:4},{value:"--rest",id:"--rest",level:4},{value:"--rest.namespace",id:"--restnamespace",level:4},{value:"--rest.cors",id:"--restcors",level:4},{value:"--rest.address",id:"--restaddress",level:4},{value:"--rest.port",id:"--restport",level:4},{value:"--rest.swaggerUI",id:"--restswaggerui",level:4},{value:"--suggestedFeeRecipient",id:"--suggestedfeerecipient",level:4},{value:"--emitPayloadAttributes",id:"--emitpayloadattributes",level:4},{value:"--chain.archiveBlobEpochs",id:"--chainarchiveblobepochs",level:4},{value:"--eth1",id:"--eth1",level:4},{value:"--eth1.providerUrls",id:"--eth1providerurls",level:4},{value:"--execution.urls",id:"--executionurls",level:4},{value:"--execution.timeout",id:"--executiontimeout",level:4},{value:"--execution.retries",id:"--executionretries",level:4},{value:"--execution.retryDelay",id:"--executionretrydelay",level:4},{value:"--execution.engineMock",id:"--executionenginemock",level:4},{value:"--jwtSecret",id:"--jwtsecret",level:4},{value:"--jwtId",id:"--jwtid",level:4},{value:"--builder",id:"--builder",level:4},{value:"--builder.url",id:"--builderurl",level:4},{value:"--builder.timeout",id:"--buildertimeout",level:4},{value:"--builder.faultInspectionWindow",id:"--builderfaultinspectionwindow",level:4},{value:"--builder.allowedFaults",id:"--builderallowedfaults",level:4},{value:"--metrics",id:"--metrics",level:4},{value:"--metrics.port",id:"--metricsport",level:4},{value:"--metrics.address",id:"--metricsaddress",level:4},{value:"--monitoring.endpoint",id:"--monitoringendpoint",level:4},{value:"--monitoring.interval",id:"--monitoringinterval",level:4},{value:"--discv5",id:"--discv5",level:4},{value:"--listenAddress",id:"--listenaddress",level:4},{value:"--port",id:"--port",level:4},{value:"--discoveryPort",id:"--discoveryport",level:4},{value:"--listenAddress6",id:"--listenaddress6",level:4},{value:"--port6",id:"--port6",level:4},{value:"--discoveryPort6",id:"--discoveryport6",level:4},{value:"--bootnodes",id:"--bootnodes",level:4},{value:"--targetPeers",id:"--targetpeers",level:4},{value:"--subscribeAllSubnets",id:"--subscribeallsubnets",level:4},{value:"--disablePeerScoring",id:"--disablepeerscoring",level:4},{value:"--mdns",id:"--mdns",level:4},{value:"--enr.ip",id:"--enrip",level:4},{value:"--enr.tcp",id:"--enrtcp",level:4},{value:"--enr.udp",id:"--enrudp",level:4},{value:"--enr.ip6",id:"--enrip6",level:4},{value:"--enr.tcp6",id:"--enrtcp6",level:4},{value:"--enr.udp6",id:"--enrudp6",level:4},{value:"--nat",id:"--nat",level:4}];function h(e){const n={code:"code",h1:"h1",h2:"h2",h4:"h4",p:"p",pre:"pre",...(0,c.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.h1,{id:"beacon-cli-command",children:[(0,i.jsx)(n.code,{children:"beacon"})," CLI Command"]}),"\n",(0,i.jsx)(n.p,{children:"Run a beacon chain node"}),"\n",(0,i.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(n.p,{children:"Run a beacon chain node and connect to the holesky testnet"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"./lodestar beacon --network holesky\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"beacon-options",children:[(0,i.jsx)(n.code,{children:"beacon"})," Options"]}),"\n",(0,i.jsx)(n.h4,{id:"--datadir",children:(0,i.jsx)(n.code,{children:"--dataDir"})}),"\n",(0,i.jsx)(n.p,{children:"Lodestar root data directory"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--network",children:(0,i.jsx)(n.code,{children:"--network"})}),"\n",(0,i.jsx)(n.p,{children:"Name of the Ethereum Consensus chain network to join"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "mainnet", "gnosis", "sepolia", "holesky", "chiado", "ephemery", "dev"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"mainnet"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--paramsfile",children:(0,i.jsx)(n.code,{children:"--paramsFile"})}),"\n",(0,i.jsx)(n.p,{children:"Network configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-total-difficulty-override",children:(0,i.jsx)(n.code,{children:"--terminal-total-difficulty-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block TTD override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-epoch-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-epoch-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override activation epoch"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointsyncurl",children:(0,i.jsx)(n.code,{children:"--checkpointSyncUrl"})}),"\n",(0,i.jsx)(n.p,{children:"Server url hosting Beacon Node APIs to fetch weak subjectivity state. Fetch latest finalized by default, else set --wssCheckpoint"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointstate",children:(0,i.jsx)(n.code,{children:"--checkpointState"})}),"\n",(0,i.jsx)(n.p,{children:"Set a checkpoint state to start syncing from"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--wsscheckpoint",children:(0,i.jsx)(n.code,{children:"--wssCheckpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Start beacon node off a state at the provided weak subjectivity checkpoint, to be supplied in : format. For example, 0x1234:100 will sync and start off from the weak subjectivity state at checkpoint of epoch 100 with block root 0x1234."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--forcecheckpointsync",children:(0,i.jsx)(n.code,{children:"--forceCheckpointSync"})}),"\n",(0,i.jsx)(n.p,{children:"Force syncing from checkpoint state even if db state is within weak subjectivity period. This helps to avoid long sync times after node has been offline for a while."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--private",children:(0,i.jsx)(n.code,{children:"--private"})}),"\n",(0,i.jsx)(n.p,{children:"Do not send implementation details over p2p identify protocol and in builder, execution engine and eth1 requests"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--validatormonitorlogs",children:(0,i.jsx)(n.code,{children:"--validatorMonitorLogs"})}),"\n",(0,i.jsx)(n.p,{children:"Log validator monitor events as info. This requires metrics to be enabled."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--disablelightclientserver",children:(0,i.jsx)(n.code,{children:"--disableLightClientServer"})}),"\n",(0,i.jsx)(n.p,{children:"Disable light client server."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--loglevel",children:(0,i.jsx)(n.code,{children:"--logLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to terminal"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"info"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfile",children:(0,i.jsx)(n.code,{children:"--logFile"})}),"\n",(0,i.jsx)(n.p,{children:"Path to output all logs to a persistent log file, use 'none' to disable"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfilelevel",children:(0,i.jsx)(n.code,{children:"--logFileLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"debug"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfiledailyrotate",children:(0,i.jsx)(n.code,{children:"--logFileDailyRotate"})}),"\n",(0,i.jsx)(n.p,{children:"Daily rotate log files, set to an integer to limit the file count, set to 0 (zero) to disable rotation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5"})]}),"\n",(0,i.jsx)(n.h4,{id:"--rest",children:(0,i.jsx)(n.code,{children:"--rest"})}),"\n",(0,i.jsx)(n.p,{children:"Enable/disable HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restnamespace",children:(0,i.jsx)(n.code,{children:"--rest.namespace"})}),"\n",(0,i.jsx)(n.p,{children:"Pick namespaces to expose for HTTP API. Set to '*' to enable all namespaces"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "beacon", "config", "debug", "events", "lightclient", "lodestar", "node", "proof", "validator", "*"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'["beacon","config","debug","events","node","validator","lightclient"]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restcors",children:(0,i.jsx)(n.code,{children:"--rest.cors"})}),"\n",(0,i.jsx)(n.p,{children:"Configures the Access-Control-Allow-Origin CORS header for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"*"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restaddress",children:(0,i.jsx)(n.code,{children:"--rest.address"})}),"\n",(0,i.jsx)(n.p,{children:"Set host for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restport",children:(0,i.jsx)(n.code,{children:"--rest.port"})}),"\n",(0,i.jsx)(n.p,{children:"Set port for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9596"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restswaggerui",children:(0,i.jsx)(n.code,{children:"--rest.swaggerUI"})}),"\n",(0,i.jsx)(n.p,{children:"Enable Swagger UI for API exploration at http://{address}:{port}/documentation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--suggestedfeerecipient",children:(0,i.jsx)(n.code,{children:"--suggestedFeeRecipient"})}),"\n",(0,i.jsxs)(n.p,{children:["Specify fee recipient default for collecting the EL block fees and rewards (a hex string representing 20 bytes address: ^0x[a-fA-F0-9]{40}$) in case validator fails to update for a validator index before calling ",(0,i.jsx)(n.code,{children:"produceBlock"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0x0000000000000000000000000000000000000000"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--emitpayloadattributes",children:(0,i.jsx)(n.code,{children:"--emitPayloadAttributes"})}),"\n",(0,i.jsxs)(n.p,{children:["Flag to SSE emit execution ",(0,i.jsx)(n.code,{children:"payloadAttributes"})," before every slot"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--chainarchiveblobepochs",children:(0,i.jsx)(n.code,{children:"--chain.archiveBlobEpochs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of epochs to retain finalized blobs (minimum of MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1",children:(0,i.jsx)(n.code,{children:"--eth1"})}),"\n",(0,i.jsx)(n.p,{children:"Whether to follow the eth1 chain"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1providerurls",children:(0,i.jsx)(n.code,{children:"--eth1.providerUrls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to Eth1 node with enabled rpc. If not explicitly provided and execution endpoint provided via execution.urls, it will use execution.urls. Otherwise will try connecting on the specified default(s)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8545" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionurls",children:(0,i.jsx)(n.code,{children:"--execution.urls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to execution client engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8551" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executiontimeout",children:(0,i.jsx)(n.code,{children:"--execution.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for execution engine API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretries",children:(0,i.jsx)(n.code,{children:"--execution.retries"})}),"\n",(0,i.jsx)(n.p,{children:"Number of retries when calling execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretrydelay",children:(0,i.jsx)(n.code,{children:"--execution.retryDelay"})}),"\n",(0,i.jsx)(n.p,{children:"Delay time in milliseconds between retries when retrying calls to the execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionenginemock",children:(0,i.jsx)(n.code,{children:"--execution.engineMock"})}),"\n",(0,i.jsx)(n.p,{children:"Set the execution engine to mock mode (development only)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtsecret",children:(0,i.jsx)(n.code,{children:"--jwtSecret"})}),"\n",(0,i.jsx)(n.p,{children:"File path to a shared hex-encoded jwt secret which will be used to generate and bundle HS256 encoded jwt tokens for authentication with the EL client's rpc server hosting engine apis. Secret to be exactly same as the one used by the corresponding EL client."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtid",children:(0,i.jsx)(n.code,{children:"--jwtId"})}),"\n",(0,i.jsx)(n.p,{children:"An optional identifier to be set in the id field of the claims included in jwt tokens used for authentication with EL client's rpc server hosting engine apis"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builder",children:(0,i.jsx)(n.code,{children:"--builder"})}),"\n",(0,i.jsx)(n.p,{children:"Enable builder interface"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderurl",children:(0,i.jsx)(n.code,{children:"--builder.url"})}),"\n",(0,i.jsx)(n.p,{children:"Url hosting the builder API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"http://localhost:8661"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--buildertimeout",children:(0,i.jsx)(n.code,{children:"--builder.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for builder API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderfaultinspectionwindow",children:(0,i.jsx)(n.code,{children:"--builder.faultInspectionWindow"})}),"\n",(0,i.jsx)(n.p,{children:"Window to inspect missed slots for enabling/disabling builder circuit breaker"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderallowedfaults",children:(0,i.jsx)(n.code,{children:"--builder.allowedFaults"})}),"\n",(0,i.jsxs)(n.p,{children:["Number of missed slots allowed in the ",(0,i.jsx)(n.code,{children:"faultInspectionWindow"})," for builder circuit"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metrics",children:(0,i.jsx)(n.code,{children:"--metrics"})}),"\n",(0,i.jsx)(n.p,{children:"Enable the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsport",children:(0,i.jsx)(n.code,{children:"--metrics.port"})}),"\n",(0,i.jsx)(n.p,{children:"Listen TCP port for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"8008"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsaddress",children:(0,i.jsx)(n.code,{children:"--metrics.address"})}),"\n",(0,i.jsx)(n.p,{children:"Listen address for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringendpoint",children:(0,i.jsx)(n.code,{children:"--monitoring.endpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Enables monitoring service for sending clients stats to the specified endpoint of a remote service (e.g. beaconcha.in)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringinterval",children:(0,i.jsx)(n.code,{children:"--monitoring.interval"})}),"\n",(0,i.jsx)(n.p,{children:"Interval in milliseconds between sending client stats to the remote service"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"60000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discv5",children:(0,i.jsx)(n.code,{children:"--discv5"})}),"\n",(0,i.jsx)(n.p,{children:"Enable discv5"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress",children:(0,i.jsx)(n.code,{children:"--listenAddress"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv4 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0.0.0.0"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--port",children:(0,i.jsx)(n.code,{children:"--port"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport",children:(0,i.jsx)(n.code,{children:"--discoveryPort"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress6",children:(0,i.jsx)(n.code,{children:"--listenAddress6"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv6 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--port6",children:(0,i.jsx)(n.code,{children:"--port6"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort6 flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9090"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport6",children:(0,i.jsx)(n.code,{children:"--discoveryPort6"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsx)(n.h4,{id:"--bootnodes",children:(0,i.jsx)(n.code,{children:"--bootnodes"})}),"\n",(0,i.jsx)(n.p,{children:"Bootnodes for discv5 discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "[]" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--targetpeers",children:(0,i.jsx)(n.code,{children:"--targetPeers"})}),"\n",(0,i.jsx)(n.p,{children:"The target connected peers. Above this number peers will be disconnected"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"100"})]}),"\n",(0,i.jsx)(n.h4,{id:"--subscribeallsubnets",children:(0,i.jsx)(n.code,{children:"--subscribeAllSubnets"})}),"\n",(0,i.jsx)(n.p,{children:"Subscribe to all subnets regardless of validator count"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--disablepeerscoring",children:(0,i.jsx)(n.code,{children:"--disablePeerScoring"})}),"\n",(0,i.jsx)(n.p,{children:"Disable peer scoring, used for testing on devnets"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--mdns",children:(0,i.jsx)(n.code,{children:"--mdns"})}),"\n",(0,i.jsx)(n.p,{children:"Enable mdns local peer discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip",children:(0,i.jsx)(n.code,{children:"--enr.ip"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp",children:(0,i.jsx)(n.code,{children:"--enr.tcp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp",children:(0,i.jsx)(n.code,{children:"--enr.udp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip6",children:(0,i.jsx)(n.code,{children:"--enr.ip6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IPv6 entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp6",children:(0,i.jsx)(n.code,{children:"--enr.tcp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp6",children:(0,i.jsx)(n.code,{children:"--enr.udp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--nat",children:(0,i.jsx)(n.code,{children:"--nat"})}),"\n",(0,i.jsx)(n.p,{children:"Allow configuration of non-local addresses"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>s});var i=d(6540);const c={},l=i.createContext(c);function r(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:r(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/88b8b4fa.b7d44bb5.js b/assets/js/88b8b4fa.b7d44bb5.js
deleted file mode 100644
index 1ce188b0d1db..000000000000
--- a/assets/js/88b8b4fa.b7d44bb5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_lodestar_docs=self.webpackChunk_lodestar_docs||[]).push([[8492],{2151:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>a,frontMatter:()=>l,metadata:()=>s,toc:()=>t});var i=d(4848),c=d(8453);const l={title:"CLI Reference"},r="beacon CLI Command",s={id:"run/beacon-management/beacon-cli",title:"CLI Reference",description:"Run a beacon chain node",source:"@site/pages/run/beacon-management/beacon-cli.md",sourceDirName:"run/beacon-management",slug:"/run/beacon-management/beacon-cli",permalink:"/lodestar/run/beacon-management/beacon-cli",draft:!1,unlisted:!1,editUrl:"https://github.com/ChainSafe/lodestar/tree/unstable/docs/pages/run/beacon-management/beacon-cli.md",tags:[],version:"current",frontMatter:{title:"CLI Reference"},sidebar:"tutorialSidebar",previous:{title:"Starting a Node",permalink:"/lodestar/run/beacon-management/starting-a-node"},next:{title:"Data Retention",permalink:"/lodestar/run/beacon-management/data-retention"}},o={},t=[{value:"Examples",id:"examples",level:2},{value:"beacon Options",id:"beacon-options",level:2},{value:"--dataDir",id:"--datadir",level:4},{value:"--network",id:"--network",level:4},{value:"--paramsFile",id:"--paramsfile",level:4},{value:"--terminal-total-difficulty-override",id:"--terminal-total-difficulty-override",level:4},{value:"--terminal-block-hash-override",id:"--terminal-block-hash-override",level:4},{value:"--terminal-block-hash-epoch-override",id:"--terminal-block-hash-epoch-override",level:4},{value:"--checkpointSyncUrl",id:"--checkpointsyncurl",level:4},{value:"--checkpointState",id:"--checkpointstate",level:4},{value:"--wssCheckpoint",id:"--wsscheckpoint",level:4},{value:"--forceCheckpointSync",id:"--forcecheckpointsync",level:4},{value:"--private",id:"--private",level:4},{value:"--validatorMonitorLogs",id:"--validatormonitorlogs",level:4},{value:"--logLevel",id:"--loglevel",level:4},{value:"--logFile",id:"--logfile",level:4},{value:"--logFileLevel",id:"--logfilelevel",level:4},{value:"--logFileDailyRotate",id:"--logfiledailyrotate",level:4},{value:"--rest",id:"--rest",level:4},{value:"--rest.namespace",id:"--restnamespace",level:4},{value:"--rest.cors",id:"--restcors",level:4},{value:"--rest.address",id:"--restaddress",level:4},{value:"--rest.port",id:"--restport",level:4},{value:"--rest.swaggerUI",id:"--restswaggerui",level:4},{value:"--suggestedFeeRecipient",id:"--suggestedfeerecipient",level:4},{value:"--emitPayloadAttributes",id:"--emitpayloadattributes",level:4},{value:"--chain.archiveBlobEpochs",id:"--chainarchiveblobepochs",level:4},{value:"--eth1",id:"--eth1",level:4},{value:"--eth1.providerUrls",id:"--eth1providerurls",level:4},{value:"--execution.urls",id:"--executionurls",level:4},{value:"--execution.timeout",id:"--executiontimeout",level:4},{value:"--execution.retries",id:"--executionretries",level:4},{value:"--execution.retryDelay",id:"--executionretrydelay",level:4},{value:"--execution.engineMock",id:"--executionenginemock",level:4},{value:"--jwtSecret",id:"--jwtsecret",level:4},{value:"--jwtId",id:"--jwtid",level:4},{value:"--builder",id:"--builder",level:4},{value:"--builder.url",id:"--builderurl",level:4},{value:"--builder.timeout",id:"--buildertimeout",level:4},{value:"--builder.faultInspectionWindow",id:"--builderfaultinspectionwindow",level:4},{value:"--builder.allowedFaults",id:"--builderallowedfaults",level:4},{value:"--metrics",id:"--metrics",level:4},{value:"--metrics.port",id:"--metricsport",level:4},{value:"--metrics.address",id:"--metricsaddress",level:4},{value:"--monitoring.endpoint",id:"--monitoringendpoint",level:4},{value:"--monitoring.interval",id:"--monitoringinterval",level:4},{value:"--discv5",id:"--discv5",level:4},{value:"--listenAddress",id:"--listenaddress",level:4},{value:"--port",id:"--port",level:4},{value:"--discoveryPort",id:"--discoveryport",level:4},{value:"--listenAddress6",id:"--listenaddress6",level:4},{value:"--port6",id:"--port6",level:4},{value:"--discoveryPort6",id:"--discoveryport6",level:4},{value:"--bootnodes",id:"--bootnodes",level:4},{value:"--targetPeers",id:"--targetpeers",level:4},{value:"--subscribeAllSubnets",id:"--subscribeallsubnets",level:4},{value:"--disablePeerScoring",id:"--disablepeerscoring",level:4},{value:"--mdns",id:"--mdns",level:4},{value:"--enr.ip",id:"--enrip",level:4},{value:"--enr.tcp",id:"--enrtcp",level:4},{value:"--enr.udp",id:"--enrudp",level:4},{value:"--enr.ip6",id:"--enrip6",level:4},{value:"--enr.tcp6",id:"--enrtcp6",level:4},{value:"--enr.udp6",id:"--enrudp6",level:4},{value:"--nat",id:"--nat",level:4}];function h(e){const n={code:"code",h1:"h1",h2:"h2",h4:"h4",p:"p",pre:"pre",...(0,c.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.h1,{id:"beacon-cli-command",children:[(0,i.jsx)(n.code,{children:"beacon"})," CLI Command"]}),"\n",(0,i.jsx)(n.p,{children:"Run a beacon chain node"}),"\n",(0,i.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(n.p,{children:"Run a beacon chain node and connect to the holesky testnet"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"./lodestar beacon --network holesky\n"})}),"\n",(0,i.jsxs)(n.h2,{id:"beacon-options",children:[(0,i.jsx)(n.code,{children:"beacon"})," Options"]}),"\n",(0,i.jsx)(n.h4,{id:"--datadir",children:(0,i.jsx)(n.code,{children:"--dataDir"})}),"\n",(0,i.jsx)(n.p,{children:"Lodestar root data directory"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--network",children:(0,i.jsx)(n.code,{children:"--network"})}),"\n",(0,i.jsx)(n.p,{children:"Name of the Ethereum Consensus chain network to join"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "mainnet", "gnosis", "sepolia", "holesky", "chiado", "ephemery", "dev"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"mainnet"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--paramsfile",children:(0,i.jsx)(n.code,{children:"--paramsFile"})}),"\n",(0,i.jsx)(n.p,{children:"Network configuration file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-total-difficulty-override",children:(0,i.jsx)(n.code,{children:"--terminal-total-difficulty-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block TTD override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--terminal-block-hash-epoch-override",children:(0,i.jsx)(n.code,{children:"--terminal-block-hash-epoch-override"})}),"\n",(0,i.jsx)(n.p,{children:"Terminal PoW block hash override activation epoch"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointsyncurl",children:(0,i.jsx)(n.code,{children:"--checkpointSyncUrl"})}),"\n",(0,i.jsx)(n.p,{children:"Server url hosting Beacon Node APIs to fetch weak subjectivity state. Fetch latest finalized by default, else set --wssCheckpoint"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--checkpointstate",children:(0,i.jsx)(n.code,{children:"--checkpointState"})}),"\n",(0,i.jsx)(n.p,{children:"Set a checkpoint state to start syncing from"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--wsscheckpoint",children:(0,i.jsx)(n.code,{children:"--wssCheckpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Start beacon node off a state at the provided weak subjectivity checkpoint, to be supplied in : format. For example, 0x1234:100 will sync and start off from the weak subjectivity state at checkpoint of epoch 100 with block root 0x1234."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--forcecheckpointsync",children:(0,i.jsx)(n.code,{children:"--forceCheckpointSync"})}),"\n",(0,i.jsx)(n.p,{children:"Force syncing from checkpoint state even if db state is within weak subjectivity period. This helps to avoid long sync times after node has been offline for a while."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--private",children:(0,i.jsx)(n.code,{children:"--private"})}),"\n",(0,i.jsx)(n.p,{children:"Do not send implementation details over p2p identify protocol and in builder, execution engine and eth1 requests"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--validatormonitorlogs",children:(0,i.jsx)(n.code,{children:"--validatorMonitorLogs"})}),"\n",(0,i.jsx)(n.p,{children:"Log validator monitor events as info. This requires metrics to be enabled."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--loglevel",children:(0,i.jsx)(n.code,{children:"--logLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to terminal"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"info"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfile",children:(0,i.jsx)(n.code,{children:"--logFile"})}),"\n",(0,i.jsx)(n.p,{children:"Path to output all logs to a persistent log file, use 'none' to disable"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfilelevel",children:(0,i.jsx)(n.code,{children:"--logFileLevel"})}),"\n",(0,i.jsx)(n.p,{children:"Logging verbosity level for emitting logs to file"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "error", "warn", "info", "verbose", "debug", "trace"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"debug"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--logfiledailyrotate",children:(0,i.jsx)(n.code,{children:"--logFileDailyRotate"})}),"\n",(0,i.jsx)(n.p,{children:"Daily rotate log files, set to an integer to limit the file count, set to 0 (zero) to disable rotation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"5"})]}),"\n",(0,i.jsx)(n.h4,{id:"--rest",children:(0,i.jsx)(n.code,{children:"--rest"})}),"\n",(0,i.jsx)(n.p,{children:"Enable/disable HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restnamespace",children:(0,i.jsx)(n.code,{children:"--rest.namespace"})}),"\n",(0,i.jsx)(n.p,{children:"Pick namespaces to expose for HTTP API. Set to '*' to enable all namespaces"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsx)(n.p,{children:'choices: "beacon", "config", "debug", "events", "lightclient", "lodestar", "node", "proof", "validator", "*"'}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'["beacon","config","debug","events","node","validator","lightclient"]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restcors",children:(0,i.jsx)(n.code,{children:"--rest.cors"})}),"\n",(0,i.jsx)(n.p,{children:"Configures the Access-Control-Allow-Origin CORS header for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"*"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restaddress",children:(0,i.jsx)(n.code,{children:"--rest.address"})}),"\n",(0,i.jsx)(n.p,{children:"Set host for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--restport",children:(0,i.jsx)(n.code,{children:"--rest.port"})}),"\n",(0,i.jsx)(n.p,{children:"Set port for HTTP API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9596"})]}),"\n",(0,i.jsx)(n.h4,{id:"--restswaggerui",children:(0,i.jsx)(n.code,{children:"--rest.swaggerUI"})}),"\n",(0,i.jsx)(n.p,{children:"Enable Swagger UI for API exploration at http://{address}:{port}/documentation"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--suggestedfeerecipient",children:(0,i.jsx)(n.code,{children:"--suggestedFeeRecipient"})}),"\n",(0,i.jsxs)(n.p,{children:["Specify fee recipient default for collecting the EL block fees and rewards (a hex string representing 20 bytes address: ^0x[a-fA-F0-9]{40}$) in case validator fails to update for a validator index before calling ",(0,i.jsx)(n.code,{children:"produceBlock"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0x0000000000000000000000000000000000000000"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--emitpayloadattributes",children:(0,i.jsx)(n.code,{children:"--emitPayloadAttributes"})}),"\n",(0,i.jsxs)(n.p,{children:["Flag to SSE emit execution ",(0,i.jsx)(n.code,{children:"payloadAttributes"})," before every slot"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--chainarchiveblobepochs",children:(0,i.jsx)(n.code,{children:"--chain.archiveBlobEpochs"})}),"\n",(0,i.jsx)(n.p,{children:"Number of epochs to retain finalized blobs (minimum of MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1",children:(0,i.jsx)(n.code,{children:"--eth1"})}),"\n",(0,i.jsx)(n.p,{children:"Whether to follow the eth1 chain"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--eth1providerurls",children:(0,i.jsx)(n.code,{children:"--eth1.providerUrls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to Eth1 node with enabled rpc. If not explicitly provided and execution endpoint provided via execution.urls, it will use execution.urls. Otherwise will try connecting on the specified default(s)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8545" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionurls",children:(0,i.jsx)(n.code,{children:"--execution.urls"})}),"\n",(0,i.jsx)(n.p,{children:"Urls to execution client engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "http://localhost:8551" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--executiontimeout",children:(0,i.jsx)(n.code,{children:"--execution.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for execution engine API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretries",children:(0,i.jsx)(n.code,{children:"--execution.retries"})}),"\n",(0,i.jsx)(n.p,{children:"Number of retries when calling execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionretrydelay",children:(0,i.jsx)(n.code,{children:"--execution.retryDelay"})}),"\n",(0,i.jsx)(n.p,{children:"Delay time in milliseconds between retries when retrying calls to the execution engine API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"2000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--executionenginemock",children:(0,i.jsx)(n.code,{children:"--execution.engineMock"})}),"\n",(0,i.jsx)(n.p,{children:"Set the execution engine to mock mode (development only)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtsecret",children:(0,i.jsx)(n.code,{children:"--jwtSecret"})}),"\n",(0,i.jsx)(n.p,{children:"File path to a shared hex-encoded jwt secret which will be used to generate and bundle HS256 encoded jwt tokens for authentication with the EL client's rpc server hosting engine apis. Secret to be exactly same as the one used by the corresponding EL client."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--jwtid",children:(0,i.jsx)(n.code,{children:"--jwtId"})}),"\n",(0,i.jsx)(n.p,{children:"An optional identifier to be set in the id field of the claims included in jwt tokens used for authentication with EL client's rpc server hosting engine apis"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builder",children:(0,i.jsx)(n.code,{children:"--builder"})}),"\n",(0,i.jsx)(n.p,{children:"Enable builder interface"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderurl",children:(0,i.jsx)(n.code,{children:"--builder.url"})}),"\n",(0,i.jsx)(n.p,{children:"Url hosting the builder API"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"http://localhost:8661"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--buildertimeout",children:(0,i.jsx)(n.code,{children:"--builder.timeout"})}),"\n",(0,i.jsx)(n.p,{children:"Timeout in milliseconds for builder API HTTP client"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"12000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderfaultinspectionwindow",children:(0,i.jsx)(n.code,{children:"--builder.faultInspectionWindow"})}),"\n",(0,i.jsx)(n.p,{children:"Window to inspect missed slots for enabling/disabling builder circuit breaker"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--builderallowedfaults",children:(0,i.jsx)(n.code,{children:"--builder.allowedFaults"})}),"\n",(0,i.jsxs)(n.p,{children:["Number of missed slots allowed in the ",(0,i.jsx)(n.code,{children:"faultInspectionWindow"})," for builder circuit"]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metrics",children:(0,i.jsx)(n.code,{children:"--metrics"})}),"\n",(0,i.jsx)(n.p,{children:"Enable the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsport",children:(0,i.jsx)(n.code,{children:"--metrics.port"})}),"\n",(0,i.jsx)(n.p,{children:"Listen TCP port for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"8008"})]}),"\n",(0,i.jsx)(n.h4,{id:"--metricsaddress",children:(0,i.jsx)(n.code,{children:"--metrics.address"})}),"\n",(0,i.jsx)(n.p,{children:"Listen address for the Prometheus metrics HTTP server"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"127.0.0.1"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringendpoint",children:(0,i.jsx)(n.code,{children:"--monitoring.endpoint"})}),"\n",(0,i.jsx)(n.p,{children:"Enables monitoring service for sending clients stats to the specified endpoint of a remote service (e.g. beaconcha.in)"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--monitoringinterval",children:(0,i.jsx)(n.code,{children:"--monitoring.interval"})}),"\n",(0,i.jsx)(n.p,{children:"Interval in milliseconds between sending client stats to the remote service"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"60000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discv5",children:(0,i.jsx)(n.code,{children:"--discv5"})}),"\n",(0,i.jsx)(n.p,{children:"Enable discv5"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"true"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress",children:(0,i.jsx)(n.code,{children:"--listenAddress"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv4 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'"0.0.0.0"'})]}),"\n",(0,i.jsx)(n.h4,{id:"--port",children:(0,i.jsx)(n.code,{children:"--port"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9000"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport",children:(0,i.jsx)(n.code,{children:"--discoveryPort"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port"})]}),"\n",(0,i.jsx)(n.h4,{id:"--listenaddress6",children:(0,i.jsx)(n.code,{children:"--listenAddress6"})}),"\n",(0,i.jsx)(n.p,{children:"The IPv6 address to listen for p2p UDP and TCP connections"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--port6",children:(0,i.jsx)(n.code,{children:"--port6"})}),"\n",(0,i.jsx)(n.p,{children:"The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort6 flag."}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"9090"})]}),"\n",(0,i.jsx)(n.h4,{id:"--discoveryport6",children:(0,i.jsx)(n.code,{children:"--discoveryPort6"})}),"\n",(0,i.jsxs)(n.p,{children:["The UDP port that discovery will listen on. Defaults to ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"port6"})]}),"\n",(0,i.jsx)(n.h4,{id:"--bootnodes",children:(0,i.jsx)(n.code,{children:"--bootnodes"})}),"\n",(0,i.jsx)(n.p,{children:"Bootnodes for discv5 discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string[]"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:'[ "[]" ]'})]}),"\n",(0,i.jsx)(n.h4,{id:"--targetpeers",children:(0,i.jsx)(n.code,{children:"--targetPeers"})}),"\n",(0,i.jsx)(n.p,{children:"The target connected peers. Above this number peers will be disconnected"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"100"})]}),"\n",(0,i.jsx)(n.h4,{id:"--subscribeallsubnets",children:(0,i.jsx)(n.code,{children:"--subscribeAllSubnets"})}),"\n",(0,i.jsx)(n.p,{children:"Subscribe to all subnets regardless of validator count"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--disablepeerscoring",children:(0,i.jsx)(n.code,{children:"--disablePeerScoring"})}),"\n",(0,i.jsx)(n.p,{children:"Disable peer scoring, used for testing on devnets"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--mdns",children:(0,i.jsx)(n.code,{children:"--mdns"})}),"\n",(0,i.jsx)(n.p,{children:"Enable mdns local peer discovery"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["default: ",(0,i.jsx)(n.code,{children:"false"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip",children:(0,i.jsx)(n.code,{children:"--enr.ip"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp",children:(0,i.jsx)(n.code,{children:"--enr.tcp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp",children:(0,i.jsx)(n.code,{children:"--enr.udp"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrip6",children:(0,i.jsx)(n.code,{children:"--enr.ip6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR IPv6 entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"string"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrtcp6",children:(0,i.jsx)(n.code,{children:"--enr.tcp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) TCP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--enrudp6",children:(0,i.jsx)(n.code,{children:"--enr.udp6"})}),"\n",(0,i.jsx)(n.p,{children:"Override ENR (IPv6-specific) UDP entry"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"number"})]}),"\n",(0,i.jsx)(n.h4,{id:"--nat",children:(0,i.jsx)(n.code,{children:"--nat"})}),"\n",(0,i.jsx)(n.p,{children:"Allow configuration of non-local addresses"}),"\n",(0,i.jsxs)(n.p,{children:["type: ",(0,i.jsx)(n.code,{children:"boolean"})]})]})}function a(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},8453:(e,n,d)=>{d.d(n,{R:()=>r,x:()=>s});var i=d(6540);const c={},l=i.createContext(c);function r(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:r(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e8d2177f.038eef09.js b/assets/js/e8d2177f.038eef09.js
new file mode 100644
index 000000000000..f1e85579bb0a
--- /dev/null
+++ b/assets/js/e8d2177f.038eef09.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_lodestar_docs=self.webpackChunk_lodestar_docs||[]).push([[7545],{7565:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var n=i(4848),s=i(8453);const r={},o="Lodestar Light Client",l={id:"libraries/lightclient-prover/lightclient",title:"Lodestar Light Client",description:"Ethereum light clients provide a pathway for users to interact with the Ethereum blockchain in a trust-minimized manner, comparable to the level of trust required when engaging with a third-party provider like Infura or EtherScan. Not that those platforms are bad, but trust in any centralized provider goes against the ethos of blockchain. Light clients are a way that low-power devices, like cell phones, can do self validation of transactions and dApp state.",source:"@site/pages/libraries/lightclient-prover/lightclient.md",sourceDirName:"libraries/lightclient-prover",slug:"/libraries/lightclient-prover/lightclient",permalink:"/lodestar/libraries/lightclient-prover/lightclient",draft:!1,unlisted:!1,editUrl:"https://github.com/ChainSafe/lodestar/tree/unstable/docs/pages/libraries/lightclient-prover/lightclient.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"CLI Reference",permalink:"/lodestar/libraries/lightclient-prover/lightclient-cli"},next:{title:"Lodestar Eth Consensus Lightclient Prover",permalink:"/lodestar/libraries/lightclient-prover/prover"}},a={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Requirements for Running a Light-Client",id:"requirements-for-running-a-light-client",level:2},{value:"Getting started",id:"getting-started",level:2},{value:"Light-Client CLI Example",id:"light-client-cli-example",level:2},{value:"Light-Client Programmatic Example",id:"light-client-programmatic-example",level:2},{value:"Browser Integration",id:"browser-integration",level:2},{value:"Contributors",id:"contributors",level:2},{value:"License",id:"license",level:2}];function h(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"lodestar-light-client",children:"Lodestar Light Client"}),"\n",(0,n.jsx)(t.p,{children:"Ethereum light clients provide a pathway for users to interact with the Ethereum blockchain in a trust-minimized manner, comparable to the level of trust required when engaging with a third-party provider like Infura or EtherScan. Not that those platforms are bad, but trust in any centralized provider goes against the ethos of blockchain. Light clients are a way that low-power devices, like cell phones, can do self validation of transactions and dApp state."}),"\n",(0,n.jsx)(t.p,{children:"Unlike full nodes, light clients do not download and store the entire blockchain. Instead, they download only the headers of each block and employ Merkle proofs to verify transactions. This enables a quick synchronization with the network and access the latest information without using significant system resources\u200b. This streamlined approach to accessing Ethereum is crucial, especially in scenarios where full-scale network participation is infeasible or undesired."}),"\n",(0,n.jsx)(t.p,{children:"The evolution of light clients is emblematic of the broader trajectory of Ethereum towards becoming more accessible and resource-efficient, making blockchain technology more inclusive and adaptable to a wide array of use cases and environments. The Altair hard fork introduced sync committees to allow light-clients to synchronize to the network."}),"\n",(0,n.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://discord.gg/aMxzVcr",children:(0,n.jsx)(t.img,{src:"https://img.shields.io/discord/593655374469660673.svg?label=Discord&logo=discord",alt:"Discord"})}),"\n",(0,n.jsx)(t.a,{href:"https://github.com/ethereum/consensus-specs/releases/tag/v1.4.0",children:(0,n.jsx)(t.img,{src:"https://img.shields.io/badge/ETH%20consensus--spec-1.4.0-blue",alt:"Eth Consensus Spec v1.4.0"})}),"\n",(0,n.jsx)(t.img,{src:"https://img.shields.io/badge/ES-2021-yellow",alt:"ES Version"}),"\n",(0,n.jsx)(t.img,{src:"https://img.shields.io/badge/node-16.x-green",alt:"Node Version"}),"\n",(0,n.jsx)(t.img,{src:"https://img.shields.io/badge/yarn-%232C8EBB.svg?style=for-the-badge&logo=yarn&logoColor=white",alt:"Yarn"})]}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:["This package is part of ",(0,n.jsx)(t.a,{href:"https://lodestar.chainsafe.io",children:"ChainSafe's Lodestar"})," project"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"requirements-for-running-a-light-client",children:"Requirements for Running a Light-Client"}),"\n",(0,n.jsxs)(t.p,{children:["Access to an beacon node that supports the light client specification is necessary. The client must support the following routes from the ",(0,n.jsx)(t.a,{href:"https://github.com/ethereum/consensus-specs/tree/dev",children:"consensus API spec"}),":"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"/eth/v1/beacon/light_client/updates"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"/eth/v1/beacon/light_client/optimistic_update"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"/eth/v1/beacon/light_client/finality_update"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"/eth/v1/beacon/light_client/bootstrap/{block_root}"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"/eth/v0/beacon/light_client/committee_root"})}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["System requirements are quite low so its possible to run a light client in the browser as part of a website. There are a few examples of this on github that you can use as reference, our ",(0,n.jsx)(t.a,{href:"https://chainsafe.github.io/lodestar/libraries/lightclient-prover/prover",children:"prover"})," being one of them."]}),"\n",(0,n.jsxs)(t.p,{children:["You can find more information about the light-client protocol in the ",(0,n.jsx)(t.a,{href:"https://github.com/ethereum/consensus-specs",children:"specification"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"getting-started",children:"Getting started"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Follow the ",(0,n.jsx)(t.a,{href:"https://chainsafe.github.io/lodestar/getting-started/installation",children:"installation guide"})," or ",(0,n.jsx)(t.a,{href:"https://chainsafe.github.io/lodestar/getting-started/installation/#docker-installation",children:"Docker install"})," to install Lodestar."]}),"\n",(0,n.jsxs)(t.li,{children:["Quickly try out the whole stack by ",(0,n.jsx)(t.a,{href:"https://chainsafe.github.io/lodestar/advanced-topics/setting-up-a-testnet",children:"starting a local testnet"}),"."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"light-client-cli-example",children:"Light-Client CLI Example"}),"\n",(0,n.jsx)(t.p,{children:"It is possible to start up the light-client as a standalone process."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-bash",children:'lodestar lightclient \\\n --network sepolia \\\n --beacon-api-url https://lodestar-sepolia.chainsafe.io \\\n --checkpoint-root "0xccaff4b99986a7b05e06738f1828a32e40799b277fd9f9ff069be55341fe0229"\n'})}),"\n",(0,n.jsx)(t.h2,{id:"light-client-programmatic-example",children:"Light-Client Programmatic Example"}),"\n",(0,n.jsxs)(t.p,{children:["For this example we will assume there is a running beacon node at ",(0,n.jsx)(t.code,{children:"https://lodestar-sepolia.chainsafe.io"})]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-ts",children:'import {Lightclient, LightclientEvent} from "@lodestar/light-client";\nimport {LightClientRestTransport} from "@lodestar/light-client/transport";\nimport {\n getFinalizedSyncCheckpoint,\n getGenesisData,\n getConsoleLogger,\n getApiFromUrl,\n getChainForkConfigFromNetwork,\n} from "@lodestar/light-client/utils";\n\nconst config = getChainForkConfigFromNetwork("sepolia");\nconst logger = getConsoleLogger({logDebug: Boolean(process.env.DEBUG)});\nconst api = getApiFromUrl({urls: ["https://lodestar-sepolia.chainsafe.io"]}, {config});\n\nconst lightclient = await Lightclient.initializeFromCheckpointRoot({\n config,\n logger,\n transport: new LightClientRestTransport(api),\n genesisData: await getGenesisData(api),\n checkpointRoot: await getFinalizedSyncCheckpoint(api),\n opts: {\n allowForcedUpdates: true,\n updateHeadersOnForcedUpdate: true,\n },\n});\n\n// Wait for the lightclient to start\nawait lightclient.start();\n\nlogger.info("Lightclient synced");\n\nlightclient.emitter.on(LightclientEvent.lightClientFinalityHeader, async (finalityUpdate) => {\n logger.info(finalityUpdate);\n});\n\nlightclient.emitter.on(LightclientEvent.lightClientOptimisticHeader, async (optimisticUpdate) => {\n logger.info(optimisticUpdate);\n});\n'})}),"\n",(0,n.jsx)(t.h2,{id:"browser-integration",children:"Browser Integration"}),"\n",(0,n.jsxs)(t.p,{children:["If you want to use Lightclient in browser and facing some issues in building it with bundlers like webpack, vite. We suggest to use our distribution build. The support for single distribution build is started from ",(0,n.jsx)(t.code,{children:"1.19.0"})," version."]}),"\n",(0,n.jsxs)(t.p,{children:["Directly link the dist build with the ",(0,n.jsx)(t.code,{children:""})," tag with tools like unpkg or other. e.g."]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-html",children:'
-
+
diff --git a/contribution/advanced-topics/doppelganger-detection/index.html b/contribution/advanced-topics/doppelganger-detection/index.html
index ac631ccb71d6..05f119a6b767 100644
--- a/contribution/advanced-topics/doppelganger-detection/index.html
+++ b/contribution/advanced-topics/doppelganger-detection/index.html
@@ -4,7 +4,7 @@
Lodestar Documentation
-
+
diff --git a/contribution/advanced-topics/migrating-from-other-clients/index.html b/contribution/advanced-topics/migrating-from-other-clients/index.html
index c533b988a241..e95d08c08365 100644
--- a/contribution/advanced-topics/migrating-from-other-clients/index.html
+++ b/contribution/advanced-topics/migrating-from-other-clients/index.html
@@ -4,7 +4,7 @@
Lodestar Documentation
-
+
diff --git a/contribution/advanced-topics/setting-up-a-testnet/index.html b/contribution/advanced-topics/setting-up-a-testnet/index.html
index 57159201b670..19ca619e4b33 100644
--- a/contribution/advanced-topics/setting-up-a-testnet/index.html
+++ b/contribution/advanced-topics/setting-up-a-testnet/index.html
@@ -4,7 +4,7 @@
Lodestar Documentation
-
+
diff --git a/contribution/advanced-topics/slashing-protection/index.html b/contribution/advanced-topics/slashing-protection/index.html
index 9365ae61ba5d..ad1285675097 100644
--- a/contribution/advanced-topics/slashing-protection/index.html
+++ b/contribution/advanced-topics/slashing-protection/index.html
@@ -4,7 +4,7 @@
Lodestar Documentation
-
+
diff --git a/contribution/bug-reports/index.html b/contribution/bug-reports/index.html
index 6b41042d0ff4..e224d9d5b8fe 100644
--- a/contribution/bug-reports/index.html
+++ b/contribution/bug-reports/index.html
@@ -4,7 +4,7 @@
Lodestar Documentation
-
+
diff --git a/contribution/depgraph/index.html b/contribution/depgraph/index.html
index c7244dd9e579..8573cfa0440d 100644
--- a/contribution/depgraph/index.html
+++ b/contribution/depgraph/index.html
@@ -4,7 +4,7 @@
Lodestar Documentation
-
+
diff --git a/contribution/dev-cli/index.html b/contribution/dev-cli/index.html
index 434375b05c38..cdfa7ba6744c 100644
--- a/contribution/dev-cli/index.html
+++ b/contribution/dev-cli/index.html
@@ -4,7 +4,7 @@
Lodestar Documentation
-
+
@@ -52,6 +52,9 @@