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.

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.

If you chose to setup your SSV node with the SSV Stack repository, your should create ssv-dkg-data inside of the existing ssv-stack directory.

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:

operator.yaml
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

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.

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

If you did set up SSV node with the SSV Stack repository, you can simply add DKG to your existing setup.

  1. Your ssv-dkg-data directory should be inside of the ssv-stack.

  2. Edit the docker-compose.yaml file that you already have.

  3. Add the following content at the end of your file, but before the networks: part

  ssv-dkg:  
    image: ssvlabs/ssv-dkg:latest
    pull_policy: always
    restart: "unless-stopped"
    container_name: ssv-dkg
    networks:
      - local-docker
    volumes:
      - ./ssv-dkg-data:/ssv-dkg/data
    ports:
      - 3030:3030/tcp
    command:
      ["start-operator", "--configPath", "./data/operator.yaml"]
      
# You should leave "networks: ..." below this
  1. Start your DKG with the command sudo docker compose up ssv-dkg

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 ssv-dkg.

When you set up your firewall on your DKG node machine, make sure to expose the port you set in the configuration (and Docker container creation command, if running on Docker). The default is 3030.

Last updated

Was this helpful?