Advanced - with standalone Lodestar VC
Last updated
Last updated
You will be running a series of docker containers that collective forms the Diva service with the command: docker compose up -d
Diva client written in Golang
A Lodestar validator client
Reloader script service that syncs the public keys between the validator client and Diva
Diva Operator web UI for the Diva client API
Prometheus, Grafana, Jaeger and Vector for monitoring the testnet
The system instructions for running the above is captured in the docker-compose.yml
and .env
files of the git repository you will be downloading
Open the ports used by the Diva service on your device
The Diva client comes together with a Prysm validator client - indicated as "Diva client" in the diagram below. Together, they sit on top of and connects to your execution + consensus client set via the , replacing the need for you to run your own validator client for this purpose
You will configure this connection via the .env
file
You can run the Diva service on top of your existing home staking hardware to boost your yields by being assigned validator keys from Diva Staking!
It is recommended to run the Diva service from a Docker container. To do that, we first have to install Docker - the script below performs the following:
Download and run the official Docker installation script
Creates a new user group called "docker"
Adds your current Linux user account to this new docker group
Log out and then back in again for the new user group settings to take effect.
An automated option is provided by Diva Staking here. However, we highly recommend going through the manual process for a maximum learning outcome.
First, make sure your OS is up to date by running general updates.
Next, download the latest Diva Staking repository (testnet) here - https://github.com/shamirlabs/diva-alpha-net - by running:
An automated option is provided by Diva Staking here. However, we highly recommend going through the manual process for a maximum learning outcome.
Now, enter into the directory, rename the .env.example file to .env, and then open it up for editing.
1) Amend the COMPOSE_FILE and COMPOSE_PROFILES to the following values. This will enable metrics for monitoring and telemetry for the Diva team to help you with troubleshooting.
2) Connect your Diva client to your execution client via WebSocket
Replace the value ws://HOST_IP:PORT
of EXECUTION_CLIENT_URL
with the WebSocket endpoint of your execution client.
*Note: You have to use the IP address assigned by your ethernet port (eth0) or Wifi (wlo1) and not the loopback address (127.0.0.1) here.
3) Connect your Diva client to your consensus client via REST API
Replace the value http://HOST_IP:PORT
of CONSENSUS_CLIENT_URL
with the REST API provider endpoint of your consensus client.
4) Choose a strong password to log into your Diva node API.
5) Choose another strong password to encrypt the database of your node. This will also be useful for restoring your node in the future.
*Note: Once this parameter is set during the first start-up of the node, you won't be able to change it until such functionality is implemented. For that reason we recommend that you back it up in a safe place.
6) Set a username for the logs to help developers debug issues you might find. You can choose any username you'd like, but we recommend you use the Discord username so we can reach out to you more efficiently if necessary..
Replace the value discordusername-operatoraddress
of the TESTNET_USERNAME
with the discord username that you want to use in the testnet and your operator address (for instance, prada-0x0000000000000000000000000000000000000000
). This information is only available to the Shamir Labs development team and is not publicly available. It could be used to contact testnet participants if the team needs debugging information (such as logs), a database file, or to communicate an important patch/update.
Your username has no functional importance and is purely to label your node with a human-readable name.
Save your changes and exit by pressing CTRL+O, ENTER, & CTRL+X
Open up the docker-compose-lodestar-vc.yml
file.
1) Change the goerli
flag to holesky
under the --network
flag of the chainsafe/lodestar:latest
image
2) Append the following contents in this file
These configurations sets the stage to allow you to use the Lodestar validator client instead of Prysm, which will enable you to use any minority consensus clients with your Diva node.
Next, open up the docker-compose.yml
file.
Amend the ports:
section of the grafana
service to "3001:3000".
This is so that the Grafana service running on docker does not clash with your native Grafana service.
Your Diva client needs to talk to other nodes in order to perform signatures, receive duties, and find peers.
As such, the following port configurations are needed.
Port 5050
used for P2P communication MUST be open on your machine and exposed to the public internet
Port 80
is used by the Operator UI and you SHOULD open it if you want to serve the Operator UI
Port 30000
is used to access the swagger API of your node and you SHOULD keep it open if you want to use the Operator UI
If you are running a machine on a local network, remember to also configure port forwarding on your router to port 5050 on your node. Refer to the port forwarding section on how to do this.
Advanced networkingAfter editing the .env
file, you can now fire up the Diva Staking service using docker.
*Note: Make sure you are in the same directory as where the docker-compose.yml
file is. By default, this is in the diva-alpha-net
directory.
Monitor the logs of the Diva service container:
Expected output: There are 3 things to look out for - "connected to execution client", "consensus client available", and "running diva client".
Note: There will be a warning that says "cannot start p2p network without identity". This is expected as your Diva node is yet to be registered at this point.
If you encounter any errors, perform the following steps sorted by priority to troubleshoot:
1) Check your .env
files to make sure that all of your input details are correct. Check against the configuration files of your execution and consensus clients.
Then, restart the docker containers.
2) Stop and remove the docker containers. Then, repeat the steps on this page.
3) Perform (2) + rename the Diva git repository to serve as a "backup". Then repeat the steps on this page.
Always make sure to back up your existing local Diva git repository if you have already registered your Diva Node previously. Your node identity is located in the .diva
folder - i.e., diva-alpha-net/.diva