Skip to main content
Version: 23.9.1

validator-client, vc

Run a validator client that connects to a remote beacon node.

beacon-node-api-endpoint, beacon-node-api-endpoints

Syntax

teku vc --beacon-node-api-endpoint=<ENDPOINT>[,<ENDPOINT>...]...

Example

teku vc --beacon-node-api-endpoint=http://192.138.10.12:5051,http://192.140.11.44:5051

Environment variable

TEKU_BEACON_NODE_API_ENDPOINT=http://192.138.10.12,http://192.140.11.44:5051

Configuration file

beacon-node-api-endpoint: ["http://192.138.10.12","http://192.140.11.44:5051"]

Endpoint of the beacon node's REST API. You can configure multiple beacon nodes by providing a comma-separated list of beacon node API endpoints.

If multiple beacon node endpoints are configured, the first one is used as primary and others as failovers.

note

This option cannot be used with the sentry beacon nodes early access feature.

The default is http://127.0.0.1:5051.

beacon-node-ssz-blocks-enabled

Syntax

teku vc --beacon-node-ssz-blocks-enabled=<BOOLEAN>

Example

teku vc --beacon-node-ssz-blocks-enabled=false

Environment variable

TEKU_BEACON_NODE_SSZ_BLOCKS_ENABLED=false

Configuration file

beacon-node-ssz-blocks-enabled: false

Enable or disable the use of SSZ encoding for API requests to the beacon node to create blocks. The default is true.

config-file

Syntax

teku vc --config-file=<FILE>

Example

teku vc --config-file=/home/me/me_node/config.yaml

Environment variable

TEKU_CONFIG_FILE=/home/me/me_node/config.yaml

Path to the YAML configuration file. The default is none.

data-base-path, data-path

Syntax

teku vc --data-base-path=<PATH>

Example

teku vc --data-base-path=/home/me/me_node

Environment variable

TEKU_DATA_BASE_PATH=/home/me/me_node

Configuration file

data-base-path: "/home/me/me_node"

Path to the Teku base directory for storage. The default directory is OS-dependent:

  • macOS: ~/Library/teku
  • Unix/Linux: $XDG_DATA_HOME/teku if $XDG_DATA_HOME is set; otherwise ~/.local/share/teku
  • Windows: %localappdata%\teku.

The default Docker image location is /root/.local/share/teku.

data-validator-path

Syntax

teku vc --data-validator-path=<PATH>

Example

teku vc --data-validator-path=/home/me/me_validator

Environment variable

TEKU_DATA_VALIDATOR_PATH=/home/me/me_validator

Configuration file

data-validator-path: "/home/me/me_validator"

Path to the validator client data. The default is <data-base-path>/validator where <data-base-path> is specified using --data-base-path.

log-color-enabled

Syntax

teku vc --log-color-enabled[=<BOOLEAN>]

Example

teku vc --log-color-enabled=false

Environment variable

TEKU_LOG_COLOR_ENABLED=false

Configuration file

log-color-enabled: false

Specify whether status and event log messages include a console color display code. The default is true.

log-destination

Syntax

teku vc --log-destination=<LOG_DESTINATION>

Example

teku vc --log-destination=CONSOLE

Environment variable

TEKU_LOG_DESTINATION=CONSOLE

Configuration file

log-destination: "CONSOLE"

Specify where to output log information. Valid options are:

  • BOTH
  • CONSOLE
  • DEFAULT_BOTH
  • FILE

The default is DEFAULT_BOTH. When using BOTH or DEFAULT_BOTH, system updates such as blockchain events are displayed on the console, and errors and other information are logged to a file. Specify the log file with the --log-file command-line option.

For production systems we recommend using the CONSOLE or FILE options to ensure all log information is available in one place.

note

Use DEFAULT_BOTH when using a custom Log4J2 configuration file. Any other option applies the custom logging changes on top of its default settings.

log-file

Syntax

teku vc --log-file=<FILENAME>

Example

teku vc --log-file=teku_2020-01-01.log

Environment variable

TEKU_LOG_FILE=teku_2020-01-01.log

Configuration file

log-file: "teku_2020-01-01.log"

Relative or absolute location, and filename of the log file.

The default directory is OS-dependent:

  • macOS: ~/Library/teku/logs
  • Unix/Linux: $XDG_DATA_HOME/teku/logs if $XDG_DATA_HOME is set; otherwise ~/.local/share/teku/logs
  • Windows: %localappdata%\teku\logs

The default Docker image location is /root/.local/share/teku/logs.

log-file-name-pattern

Syntax

teku vc --log-file-name-pattern=<REGEX>

Example

teku vc --log-file-name-pattern=tekuL_%d{yyyy-MM-dd}.log

Environment variable

TEKU_LOG_FILE_NAME_PATTERN=tekuL_%d{yyyy-MM-dd}.log

Configuration file

log-file-name-pattern: "tekuL_%d{yyyy-MM-dd}.log"

Filename pattern to apply when creating log files. The default pattern is teku_%d{yyyy-MM-dd}.log

log-include-events-enabled

Syntax

teku vc --log-include-events-enabled[=<BOOLEAN>]

Example

teku vc --log-include-events-enabled=false

Environment variable

TEKU_LOG_INCLUDE_EVENTS_ENABLED=false

Configuration file

log-include-events-enabled: false

Specify whether to log frequent update events. For example every slot event with validators and attestations. The default is true.

log-include-validator-duties-enabled

Syntax

teku vc --log-include-validator-duties-enabled[=<BOOLEAN>]

Example

teku vc --log-include-validator-duties-enabled=true

Environment variable

TEKU_LOG_INCLUDE_VALIDATOR_DUTIES_ENABLED=true

Configuration file

log-include-validator-duties-enabled: true

Specify whether to log details of validator event duties. The default is true.

note

Logs could become noisy when running many validators.

metrics-enabled

Syntax

teku vc --metrics-enabled[=<BOOLEAN>]

Example

teku vc --metrics-enabled=true

Environment variable

TEKU_METRICS_ENABLED=true

Configuration file

metrics-enabled: true

Set to true to enable the metrics exporter. The default is false.

metrics-host-allowlist

Syntax

teku vc --metrics-host-allowlist=<hostname>[,<hostname>...]... or "*"

Example

teku vc --metrics-host-allowlist=medomain.com,meotherdomain.com

Environment variable

TEKU_METRICS_HOST_ALLOWLIST=medomain.com,meotherdomain.com

Configuration file

metrics-host-allowlist: ["medomain.com", "meotherdomain.com"]

A comma-separated list of hostnames to allow access to the [Teku metrics]. By default, Teku accepts access from localhost and 127.0.0.1.

tip

To allow all hostnames, use "*". We don't recommend allowing all hostnames for production environments.

metrics-categories

Syntax

teku vc --metrics-categories=<CATEGORY>[,<CATEGORY>...]...

Example

teku vc --metrics-categories=BEACON,JVM,PROCESS

Environment variable

TEKU_METRICS_CATEGORIES=BEACON,JVM,PROCESS

Configuration file

metrics-categories: ["BEACON", "JVM", "PROCESS"]

Categories for which to track metrics. Options are JVM, PROCESS, BEACON, DISCOVERY, EVENTBUS, EXECUTOR, LIBP2P, NETWORK, STORAGE, STORAGE_HOT_DB, STORAGE_FINALIZED_DB, REMOTE_VALIDATOR, VALIDATOR, VALIDATOR_PERFORMANCE. All categories are enabled by default.

metrics-interface

Syntax

teku vc --metrics-interface=<HOST>

Example

teku vc --metrics-interface=192.168.10.101

Environment variable

TEKU_METRICS_INTERFACE=192.168.10.101

Configuration file

metrics-interface: "192.168.10.101"

Host on which Prometheus accesses Teku metrics. The default is 127.0.0.1.

metrics-port

Syntax

teku vc --metrics-port=<PORT>

Example

teku vc --metrics-port=6174

Environment variable

TEKU_METRICS_PORT=6174

Configuration file

metrics-port: 6174

Specifies the port (TCP) on which Prometheus accesses Teku metrics. The default is 8008.

network

Syntax

teku vc --network=<NETWORK>

Example

teku vc --network=auto

Environment variable

TEKU_NETWORK=auto

Configuration file

network: "auto"

Predefined network configuration. The default is mainnet.

Use auto to fetch the network configuration from the beacon node endpoint directly.

validator-keys

Syntax

teku vc --validator-keys=<KEY_DIR>:<PASS_DIR> | <KEY_FILE>:<PASS_FILE>[,<KEY_DIR>:<PASS_DIR> | <KEY_FILE>:<PASS_FILE>...]...

Example for directory

teku vc --validator-keys=/home/validator/keys:home/validator/passwords

Example for file

teku vc --validator-keys=/home/validator/keys/validator_217179e.json:/home/validator/passwords/validator_217179e.txt

Environment variable

TEKU_VALIDATOR_KEYS=/home/validator/keys:home/validator/passwords

Configuration file

validator-keys: "/home/validator/keys:home/validator/passwords"

Directory or file to load the encrypted keystore file(s) and associated password file(s) from. Keystore files must use the .json file extension, and password files must use the .txt file extension.

When specifying directories, Teku expects to find identically named keystore and password files. For example validator_217179e.json and validator_217179e.txt.

When specifying file names, Teku expects that the files exist.

note

The path separator is operating system dependent, and should be ; in Windows rather than :.

validators-early-attestations-enabled

Syntax

teku vc --validators-early-attestations-enabled[=<BOOLEAN>]

Example

teku vc --validators-early-attestations-enabled=false

Environment variable

TEKU_VALIDATORS_EARLY_ATTESTATIONS_ENABLED=false

Configuration file

validators-early-attestations-enabled: false

Specify whether to use Teku's built-in early attestation production, which creates an attestation once a block is received. The default is true.

Set this option to false if running a validator client connected to a load balanced beacon node (including most hosted beacon nodes such as [Infura]), and validator effectiveness is poor.

note

Delaying attestation production increases the chances of generating a correct attestation when using a load balanced beacon node, but it increases the risk of inclusion delays.

validators-external-signer-keystore

Syntax

teku vc --validators-external-signer-keystore=<FILE>

Example

teku vc --validators-external-signer-keystore=teku_client_keystore.p12

Environment variable

TEKU_VALIDATORS_EXTERNAL_KEYSTORE=teku_client_keystore.p12

Configuration file

validators-external-signer-keystore: "teku_client_keystore.p12"

The keystore that Teku presents to the external signer for TLS authentication. Teku can use PKCS12 or JKS keystore types.

Use the PKCS12 keystore type if connecting to Web3Signer.

validators-external-signer-keystore-password-file

Syntax

teku vc --validators-external-signer-keystore-password-file=<FILE>

Example

teku vc --validators-external-signer-keystore-password-file=keystore_pass.txt

Environment variable

TEKU_VALIDATORS_EXTERNAL_KEYSTORE_PASSWORD_FILE=keystore_pass.txt

Configuration file

validators-external-signer-keystore-password-file: "keystore_pass.txt"

Password file used to decrypt the keystore.

validators-external-signer-public-keys

Syntax

teku vc --validators-external-signer-public-keys=<KEY>[,<KEY>...]

Example

teku vc --validators-external-signer-public-keys=0xa99a...e44c,0xb89b...4a0b

Environment variable

TEKU_VALIDATORS_EXTERNAL_SIGNER_PUBLIC_KEYS=0xa99a...e44c,0xb89b...4a0b

Configuration file

validators-external-signer-public-keys: ["0xa99a...e44c","0xb89b...4a0b"]

List or URL of validator public keys used by an external signer (for example, Web3Signer).

Use the URL to load the public keys from a remote service. For example:

--validators-external-signer-public-keys=http://localhost:9900/publicKeys

Use the value external-signer to load all public keys managed by the external signer. Teku automatically queries the external signer's /publicKeys endpoint.

--validators-external-signer-public-keys=external-signer

validators-external-signer-slashing-protection-enabled

Syntax

teku vc --validators-external-signer-slashing-protection-enabled[=<BOOLEAN>]

Example

teku vc --validators-external-signer-slashing-protection-enabled=false

Environment variable

TEKU_VALIDATORS_EXTERNAL_SIGNER_SLASHING_PROTECTION_ENABLED=false

Configuration file

validators-external-signer-slashing-protection-enabled: false

Specify whether to use Teku's built-in slashing protection when using an external signer such as Web3Signer. The default is true.

Set this option to false if using the slashing protection implemented by an external signer.

warning

Ensure the external signer has slashing protection enabled before disabling Teku slashing protection, otherwise a validator may get slashed.

Built-in slashing protection can only be disabled for validators using external signers. Validators using Teku to sign blocks and attestations always uses its built-in slashing protection.

validators-external-signer-timeout

Syntax

teku vc --validators-external-signer-timeout=<INTEGER>

Example

teku vc --validators-external-signer-timeout=2000

Environment variable

TEKU_VALIDATORS_EXTERNAL_SIGNER_TIMEOUT=2000

Configuration file

validators-external-signer-timeout: 2000

Timeout in milliseconds for requests to the external signer. The default is 5000.

validators-external-signer-truststore

Syntax

teku vc --validators-external-signer-truststore=<FILE>

Example

teku vc --validators-external-signer-truststore=websigner_truststore.p12

Environment variable

TEKU_VALIDATORS_EXTERNAL_TRUSTSTORE=websigner_truststore.p12

Configuration file

validators-external-signer-truststore: "websigner_truststore.p12"

PKCS12 or JKS keystore used to trust external signer's self-signed certificate or CA certificate which signs the external signer's certificate.

validators-external-signer-truststore-password-file

Syntax

teku vc --validators-external-signer-truststore-password-file=<FILE>

Example

teku vc --validators-external-signer-truststore-password-file=truststore_pass.txt

Environment variable

TEKU_VALIDATORS_EXTERNAL_TRUSTSTORE_PASSWORD_FILE=truststore_pass.txt

Configuration file

validators-external-signer-truststore-password-file: "truststore_pass.txt"

Password file used to decrypt the keystore.

validators-external-signer-url

Syntax

teku vc --validators-external-signer-url=<URL>

Example

teku vc --validators-external-signer-url=http://localhost:9000

Environment variable

TEKU_VALIDATORS_EXTERNAL_SIGNER_URL=http://localhost:9000

Configuration file

validators-external-signer-url: "http://localhost:9000"

URL on which the external signer (for example, Web3Signer) is running.

validators-graffiti

Syntax

teku vc --validators-graffiti=<STRING>

Example

teku vc --validators-graffiti="Teku validator"

Environment variable

TEKU_VALIDATORS_GRAFFITI="Teku validator"

Configuration file

validators-graffiti: "Teku validator"

Graffiti to add when creating a block. Gets converted to bytes and padded to Bytes32.

The same graffiti is used for all validators started with this beacon node.

validators-graffiti-file

Syntax

teku vc --validators-graffiti-file=<FILE>

Example

teku vc --validators-graffiti-file=/Users/me/mynode/graffiti.txt

Environment variable

TEKU_VALIDATORS_GRAFFITI_FILE=/Users/me/mynode/graffiti.txt

Configuration file

validators-graffiti-file: "/Users/me/mynode/graffiti.txt"

File containing the validator graffiti to add when creating a block. The file content is converted to bytes and padded to Bytes32. The same graffiti is used for all validators started with this beacon node.

You can overwrite the file while Teku is running to update the graffiti.

This option takes precedence over --validators-graffiti.

validators-keystore-locking-enabled

Syntax

teku vc --validators-keystore-locking-enabled=<BOOLEAN>

Example

teku vc --validators-keystore-locking-enabled=true

Environment variable

TEKU_VALIDATORS_KEYSTORE_LOCKING_ENABLED=true

Configuration file

validators-keystore-locking-enabled: true

Locks the keystore files listed in --validator-keys. The default is true.

Attempts to lock all keystores in a directory if a directory is specified in --validator-keys.

validators-performance-tracking-mode

Syntax

teku vc --validators-performance-tracking-mode=<STRING>

Example

teku vc --validators-performance-tracking-mode=LOGGING

Environment variable

TEKU_VALIDATORS_PERFORMANCE_TRACKING_MODE=LOGGING

Configuration file

validators-performance-tracking-mode: LOGGING

Set the validator performance tracking strategy. Valid options are LOGGING, METRICS, ALL, and NONE. The default is ALL.

When LOGGING is enabled, attestation and block performance is reported as log messages. When METRICS is enabled, attestation and block performance is reported using metrics in the VALIDATOR_PERFORMANCE metrics category.