DVT Relayer is a service providing validators' registration data to Stakewise v3-operator in DVT setup.
As a general introduction in DVT read the article on Ethereum web-site. For technical details see Obol docs or SSV docs.
Distributed validator (DV) keystores are used:
- on DVT sidecars
- for Relayer testing
The easiest way to generate DV keys for testing is Obol launchpad. Works for Hoodi, Mainnet and Gnosis. Select appropriate network. Then select "Create a distributed validator alone". Follow instructions. Use vault address as withdrawal address.
In production environment:
- Validators' keystores should be created via distributed key generation (DKG) procedure
- DVT Relayer should not have access to DV keystores.
- Install poetry
- Install dependencies:
poetry install cp .env.example .env- Fill .env file with appropriate values
poetry shellexport PYTHONPATH=.python src/app.py
export DVT_RELAYER_VERSION=v1.0.0Pull the image:
docker pull europe-west4-docker.pkg.dev/stakewiselabs/public/dvt-relayer:$DVT_RELAYER_VERSIONYou can also build the image from source:
docker build --pull -t europe-west4-docker.pkg.dev/stakewiselabs/public/dvt-relayer:$DVT_RELAYER_VERSION .Run the container, mounting a directory with your .env and key files:
docker run --rm -ti \
--env-file /path/to/.env \
-v /path/to/data:/data \
-p 8000:8000 \
europe-west4-docker.pkg.dev/stakewiselabs/public/dvt-relayer:$DVT_RELAYER_VERSIONSet paths in .env to point inside the container, e.g.:
VALIDATORS_MANAGER_KEY_FILE=/data/validators-manager-key.json
VALIDATORS_MANAGER_PASSWORD_FILE=/data/validators-manager-password.txt
PUBLIC_KEYS_FILE=/data/public_keys.txtRunning the whole cluster of DVT sidecars locally may be cumbersome. For testing purpose single sidecar may work on behalf of several DVT operators. See DVT sidecar readme for details.
DVT sidecar:
- Loads distributed validator (DV) keystores.
- Retrieves validator data from the Relayer.
- Submits deposit signature shares and exit signature shares to the Relayer on behalf of DVT operators.