Skip to main content
Version: 1.39.0

dev CLI Command

Quickly bootstrap a beacon node and multiple validators. Use for development and testing

Examplesโ€‹

Start a single beacon node with 8 interop validators

./lodestar dev --genesisValidators 8 --reset

dev Optionsโ€‹

--dataDirโ€‹

Lodestar root data directory

type: string

--networkโ€‹

Name of the Ethereum Consensus chain network to join

type: string

choices: "mainnet", "gnosis", "sepolia", "hoodi", "chiado", "ephemery", "dev"

default: "mainnet"

--paramsFileโ€‹

Network configuration file

type: string

--rcConfigโ€‹

RC file to supplement command line args, accepted formats: .yml, .yaml, .json

type: string

--supernodeโ€‹

Subscribe to and custody all data column sidecar subnets

type: boolean

--semiSupernodeโ€‹

Subscribe to and custody half of the data column sidecar subnets to support blob reconstruction, enabling more efficient data availability with lower bandwidth and storage requirements compared to a supernode.

type: boolean

--genesisStateFileโ€‹

Path or URL to download a genesis state file in ssz-encoded format

type: string

--checkpointSyncUrlโ€‹

Server url hosting Beacon Node APIs to fetch weak subjectivity state. Fetch latest finalized by default, else set --wssCheckpoint

type: string

--checkpointStateโ€‹

File path or url to finalized checkpoint state to start syncing from

type: string

--wssCheckpointโ€‹

Start beacon node off a state at the provided weak subjectivity checkpoint, to be supplied in <blockRoot>:<epoch> format. For example, 0x1234:100 will sync and start off from the weak subjectivity state at checkpoint of epoch 100 with block root 0x1234.

type: string

--forceCheckpointSyncโ€‹

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.

type: boolean

--ignoreWeakSubjectivityCheckโ€‹

Ignore the checkpoint sync state failing the weak subjectivity check. This is relevant in testnets where the weak subjectivity period is too small for even few epochs of non finalization causing last finalized to be out of range. This flag is not recommended for mainnet use.

type: boolean

--persistNetworkIdentityโ€‹

Whether to reuse the same peer-id across restarts. Validator custody requires custody group count to persist relative to a given ENR. Setting to false will reset ENR and validator custody requirements on restarts.

type: boolean

default: true

--privateโ€‹

Do not send implementation details over p2p identify protocol, and in builder and execution engine requests

type: boolean

--validatorMonitorLogsโ€‹

Log validator monitor events as info.

type: boolean

--disableLightClientServerโ€‹

Disable light client server.

type: boolean

--logLevelโ€‹

Logging verbosity level for emitting logs to terminal

type: string

choices: "error", "warn", "info", "verbose", "debug", "trace"

default: "info"

--logFileโ€‹

Path to output all logs to a persistent log file, use 'none' to disable

type: string

--logFileLevelโ€‹

Logging verbosity level for emitting logs to file

type: string

choices: "error", "warn", "info", "verbose", "debug", "trace"

default: "debug"

--logFileDailyRotateโ€‹

Daily rotate log files, set to an integer to limit the file count, set to 0 (zero) to disable rotation

type: number

default: 5

--restโ€‹

Enable/disable HTTP API

type: boolean

default: true

--rest.namespaceโ€‹

Pick namespaces to expose for HTTP API. Set to 'all' (or '*') to enable all namespaces

type: string[]

choices: "beacon", "config", "debug", "events", "lightclient", "lodestar", "node", "proof", "validator", "*", "all"

default: ["beacon","config","debug","events","node","validator","lightclient"]

--rest.corsโ€‹

Configures the Access-Control-Allow-Origin CORS header for HTTP API. Use 'all' to allow all origins

type: string

default: "*"

--rest.addressโ€‹

Set host for HTTP API

type: string

default: "127.0.0.1"

--rest.portโ€‹

Set port for HTTP API

type: number

default: 9596

--rest.swaggerUIโ€‹

Enable Swagger UI for API exploration at http://{address}:{port}/documentation

type: boolean

default: true

--suggestedFeeRecipientโ€‹

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.

type: string

default: "0x0000000000000000000000000000000000000000"

--emitPayloadAttributesโ€‹

Flag to SSE emit execution payloadAttributes before every slot

type: boolean

default: false

--serveHistoricalStateโ€‹

Enable regenerating finalized state to serve historical data. Fetching this data is expensive and may affect validator performance.

type: boolean

--chain.archiveStateEpochFrequencyโ€‹

Minimum number of epochs between archived states

type: number

default: 1024

--chain.archiveDataEpochsโ€‹

Number of epochs to retain finalized blobs/columns (minimum of MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS/MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS)

type: number

--chain.pruneHistoryโ€‹

Prune historical blocks and state

type: boolean

--execution.urlsโ€‹

Urls to execution client engine API

type: string[]

default: [ "http://localhost:8551" ]

--execution.timeoutโ€‹

Timeout in milliseconds for execution engine API HTTP client

type: number

default: 12000

--execution.retriesโ€‹

Number of retries when calling execution engine API

type: number

default: 2

--execution.retryDelayโ€‹

Delay time in milliseconds between retries when retrying calls to the execution engine API

type: number

default: 2000

--execution.engineMockโ€‹

Set the execution engine to mock mode (development only)

type: boolean

--jwtSecretโ€‹

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.

type: string

--jwtIdโ€‹

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

type: string

--builderโ€‹

An alias for --builder.selection default for the builder flow, ignored if --builder.selection is explicitly provided

type: boolean

--builder.urlโ€‹

Url hosting the builder API

type: string

default: "http://localhost:8661"

--builder.timeoutโ€‹

Timeout in milliseconds for builder API HTTP client

type: number

default: 12000

--builder.faultInspectionWindowโ€‹

Window to inspect missed slots for enabling/disabling builder circuit breaker

type: number

--builder.allowedFaultsโ€‹

Number of missed slots allowed in the faultInspectionWindow for builder circuit

type: number

--metricsโ€‹

Enable the Prometheus metrics HTTP server

type: boolean

default: false

--metrics.portโ€‹

Listen TCP port for the Prometheus metrics HTTP server

type: number

default: 5064

--metrics.addressโ€‹

Listen address for the Prometheus metrics HTTP server

type: string

default: "127.0.0.1"

--monitoring.endpointโ€‹

Enables monitoring service for sending clients stats to the specified endpoint of a remote service (e.g. beaconcha.in)

type: string

--monitoring.intervalโ€‹

Interval in milliseconds between sending client stats to the remote service

type: number

default: 60000

--discv5โ€‹

Enable discv5

type: boolean

default: true

--listenAddressโ€‹

The IPv4 address to listen for p2p UDP and TCP connections

type: string

default: "0.0.0.0"

--portโ€‹

The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort flag.

type: number

default: 9000

--discoveryPortโ€‹

The UDP port that discovery will listen on. Defaults to port

type: number

default: port

--listenAddress6โ€‹

The IPv6 address to listen for p2p UDP and TCP connections

type: string

default: "::"

--port6โ€‹

The TCP/UDP port to listen on. The UDP port can be modified by the --discoveryPort6 flag.

type: number

default: 9000

--discoveryPort6โ€‹

The UDP port that discovery will listen on. Defaults to port6

type: number

default: port6

--bootnodesโ€‹

Bootnodes for discv5 discovery

type: string[]

default: [ "[]" ]

--targetPeersโ€‹

The target connected peers. Above this number peers will be disconnected

type: number

default: 200

--subscribeAllSubnetsโ€‹

Subscribe to all subnets regardless of validator count

type: boolean

default: false

--disablePeerScoringโ€‹

Disable peer scoring, used for testing on devnets

type: boolean

default: false

--mdnsโ€‹

Enable mdns local peer discovery

type: boolean

default: false

--enr.ipโ€‹

Override ENR IP entry

type: string

--enr.tcpโ€‹

Override ENR TCP entry

type: number

--enr.udpโ€‹

Override ENR UDP entry

type: number

--enr.ip6โ€‹

Override ENR IPv6 entry

type: string

--enr.tcp6โ€‹

Override ENR (IPv6-specific) TCP entry

type: number

--enr.udp6โ€‹

Override ENR (IPv6-specific) UDP entry

type: number

--natโ€‹

Allow configuration of non-local addresses

type: boolean

--keymanagerโ€‹

Enable key manager API server

type: boolean

--keymanager.authโ€‹

Enable token bearer authentication for key manager API server

type: boolean

default: true

--keymanager.tokenFileโ€‹

Path to file containing bearer token used for key manager API authentication

type: string

--keymanager.portโ€‹

Set port for key manager API

type: number

default: 5062

--keymanager.addressโ€‹

Set host for key manager API

type: string

default: "127.0.0.1"

--keymanager.corsโ€‹

Configures the Access-Control-Allow-Origin CORS header for key manager API. Use 'all' to allow all origins

type: string

default: "*"

--beaconNodesโ€‹

Addresses to connect to BeaconNode

type: string[]

default: [ "http://127.0.0.1:9596" ]

--forceโ€‹

Open validators even if there's a lockfile. Use with caution

type: boolean

--graffitiโ€‹

Specify your custom graffiti to be included in blocks (plain UTF8 text, 32 characters max)

type: string

--proposerSettingsFileโ€‹

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

type: string

--strictFeeRecipientCheckโ€‹

Enable strict checking of the validator's feeRecipient with the one returned by engine

type: boolean

--defaultGasLimitโ€‹

Suggested gas limit to the engine/builder for building execution payloads. Only used post merge.

type: number

default: 60000000

--builder.selectionโ€‹

Builder block selection strategy default, maxprofit, builderalways, builderonly, executionalways, or executiononly

type: string

default: "executiononly"

--builder.boostFactorโ€‹

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 --builder.selection is set to anything other than maxprofit

type: string

default: "100"

--broadcastValidationโ€‹

Validations to be run by beacon node for the signed block prior to publishing

type: string

default: "gossip"

--blindedLocalโ€‹

Request fetching local block in blinded format for produceBlockV3

type: boolean

default: false

--importKeystoresโ€‹

Path(s) to a directory or single file path to validator keystores, i.e. Launchpad validators

type: string[]

default: [ "./keystores/*.json" ]

--importKeystoresPasswordโ€‹

Path to a file with password to decrypt all keystores from importKeystores option

type: string

default: "./password.txt"

--doppelgangerProtectionโ€‹

Enables Doppelganger protection

type: boolean

--http.requestWireFormatโ€‹

Wire format to use in HTTP requests to beacon node. Can be one of json or ssz

type: string

default: "json"

--http.responseWireFormatโ€‹

Preferred wire format for HTTP responses from beacon node. Can be one of json or ssz

type: string

default: "ssz"

--externalSigner.urlโ€‹

URL to connect to an external signing server

type: string

--externalSigner.pubkeysโ€‹

List of validator public keys used by an external signer. May also provide a single string of comma-separated public keys

type: string[]

--externalSigner.fetchโ€‹

Fetch the list of public keys to validate from an external signer. Cannot be used in combination with --externalSigner.pubkeys

type: boolean

--externalSigner.fetchIntervalโ€‹

Interval in milliseconds between fetching the list of public keys from external signer, once per epoch by default

type: number

--distributedโ€‹

Enables specific features required to run as part of a distributed validator cluster

type: boolean

--genesisEth1Hashโ€‹

If present it will create genesis with this eth1 hash.

type: string

--genesisValidatorsโ€‹

If present it will create genesis with interop validators and start chain.

type: number

default: 8

--startValidatorsโ€‹

Start interop validators in inclusive range(s) with notation '0..7'

type: string[]

--genesisTimeโ€‹

genesis_time to initialize interop genesis state

type: number

default: now

--resetโ€‹

To delete chain and validator directories

type: boolean

--dumpTestnetFilesโ€‹

Dump testnet files and exit

type: string