vouch/docs/configuration.md

4.0 KiB

Configuration

Vouch can be configured through environment, command-line or configuration file. In the case of conflicting configuration the order of precedence is:

  • command-line; then
  • environment; then
  • configuration file.

The configuration file

Vouch's configuration file can be written in JSON or YAML. The file can either be in the user's home directory, in which case it will be called .vouch.json (or .vouch.yml), or it can be in a directory specified by the command line option --base-dir or environment variable VOUCH_BASE_DIR, in which case it will be called vouch.json (or vouch.yml).

A sample configuration file in YAML with is shown below:

# log-file is the location for Vouch log output.  If this is not provided logs will be written to the console.
log-file: /home/me/vouch.log
# log-level is the global log level for Vouch logging.
log-level: Debug

# beacon-node-address is the address of the beacon node.  Can be prysm, lighthouse, teku
beacon-node-address: localhost:4000

# metrics is the module that logs metrics, in this case using prometheus.
metrics:
  prometheus:
    # log-level is the log level for this module, over-riding the global level.
    log-level: warn
    # listen-address is the address on which prometheus listens for metrics requests.
    listen-address: 0.0.0.0:8081

# graffiti provides graffiti data.  Full details are in the separate document.
graffiti:
  static:
    value: My graffiti

# strategies provide advanced strategies for dealing with multiple beacon nodes
strategies:
  beaconblockproposal:
    # style can be 'best', which obtains blocks from all nodes and compares them, or 'first', which uses the first returned
    style: best
    # beacon-node-addresses are the addresses of beacon nodes to use for this strategy.
    beacon-node-addresses:
      - localhost:4000
      - localhost:5051
      - localhost:5052

Logging

Vouch has a modular logging system that allows different modules to log at different levels. The available log levels are:

  • Fatal: messages that result in Vouch stopping immediately;
  • Error: messages due to Vouch being unable to fulfil a valid process;
  • Warning: messages that result in Vouch not completing a process due to transient or user issues;
  • Information: messages that are part of Vouch's normal startup and shutdown process;
  • Debug: messages when one of Vouch's processes diverge from normal operations;
  • Trace: messages that detail the flow of Vouch's normal operations; or
  • None: no messages are written.

Global level

The global level is used for all modules that do not have an explicit log level. This can be configured using the command line option --log-level, the environment variable VOUCH_LOG_LEVEL or the configuration option log-level.

Module levels

Modules levels are used for each module, overriding the global log level. The available modules are:

  • accountmanager access to validating accounts
  • attestationaggregator aggregating attestations
  • attester attesting to blocks
  • beaconcommitteesubscriber subscribing to beacon committees
  • beaconblockproposer proposing beacon blocks
  • chaintime calculations for time on the blockchain (start of slot, first slot in an epoch etc.)
  • controller control of which jobs occur when
  • graffiti provision of graffiti for proposed blocks
  • majordomo accesss to secrets
  • scheduler starting internal jobs such as proposing a block at the appropriate time
  • strategies.submitter decisions on how to submit information to multiple beacon nodes
  • strategies.beaconblockproposer decisions on how to obtain information from multiple beacon nodes

This can be configured using the environment variables VOUCH_<MODULE>_LOG_LEVEL or the configuration option <module>.log-level. For example, the controller module logging could be configured using the environment variable VOUCH_CONTROLLER_LOG_LEVEL or the configuration option controller.log-level.