Skip to main content

Start DKG Node

It is advised launching the tool with a Docker compose as it is the most convenient way and only requires to have Docker installed. The team builds a Docker image with every release of the tool.

SSV Stack

If you chose to setup your SSV node with the SSV Stack repository, you can start the DKG node in three steps:

  1. Edit configuration file ./dkg-data/operator.yaml

    • operatorID - the ID of your operator
    • ethEndpointURL - HTTP Address of your Execution node endpoint
  2. Run the command docker compose --profile dkg up -d

    • Make sure you're running from ssv-stack directory
  3. Go to the Final Steps

Manual Configuration

All of the necessary configuration information can be provided via command line parameters, but a YAML config file is often the most convenient way, thus it's what this documentation page will be discussing.

A good way to manage all the necessary files is to store them in a single folder (in this case ssv-dkg-data), together with the operator.yaml configuration file.

The final result should look like so:

ssv@localhost:~/# tree ssv-dkg-data
ssv-dkg-data
├── encrypted_private_key.json
├── operator.yaml
└── password

1 directories, 3 files

A typical operator.yaml configuration file would look like this:

privKey: ./data/encrypted_private_key.json
privKeyPassword: ./data/password
operatorID: <YOUR_OPERATOR_ID>
port: 3030
logLevel: info
logFormat: json
logLevelFormat: capitalColor
logFilePath: ./data/debug.log
outputPath: ./data/output
ethEndpointURL: http://ethnode:8545 #HTTP Address of Execution Node
# serverTLSCertPath: ./data/ssl/tls.crt #Only enable if manually generated TLS certificate
# serverTLSKeyPath: ./data/ssl/tls.key #Only enable if manually generated TLS key
warning

DKG v3.0.0 supports Multisig addresses. Confirmation of Multisig addresses is done on Execution layer, so you need to add ethEndpointURL to your operator.yaml config. Otherwise, you won't be able to participate in DKG ceremonies involving Multisig addresses.

info

In the config file above, ./data/ represents the container's shared volume created by the docker itself with the -v or volumes option. You don't need to create data directory.

Start SSV-DKG Node

To start and manage the DKG tool in the most convenient way, it is advised to use docker-compose.

This section assumes that all the necessary files (encrypted_private_key.json, operator.yaml, password) are under the same folder. Just make sure to substitute <PATH_TO_FOLDER_WITH_CONFIG_FILES> with the actual folder containing all the files (e.g. ~/ssv-stack/ssv-dkg-data/).

Below is an example of a docker-compose file:

services:
ssv-dkg:
image: ssvlabs/ssv-dkg:latest
pull_policy: always
restart: "unless-stopped"
container_name: ssv-dkg
volumes:
- <PATH_TO_FOLDER_WITH_CONFIG_FILE>:/ssv-dkg/data
ports:
- 3030:3030/tcp
command:
["start-operator", "--configPath", "./data/operator.yaml"]
networks:
- [local-docker]

You can, of course, change the configuration above to one that suits you better, just be mindful about changing the path references in the docker command and in the operator.yaml file as well. The two need to be consistent with each other.

In order to launch the container, you would need to run this command:

docker compose up
info

This command will keep the terminal busy, showing the container's logs. It is useful to make sure that the tool start up sequence runs correctly.

You can detach the terminal at any time by hitting Ctrl-c key combination, or closing the terminal itself. The tool will be stopped, but it will restart automatically, thanks to the restart: "unless-stopped" startup parameter.

If you are sure that the tool works and don't care about the logs — you can use -d parameter sudo docker compose up -d.

What's next?

Once you're done with all the steps here, go to the the Final Steps.