Secret Shared Validator (SSV) operator with distributed key generation (DKG) enabled
A Casimir operator consists of the following services:
- An Ethereum node that connects the SSV node to the Ethereum network.
- An SSV node that performs cluster duties for validators.
- An DKG node that participates in key generation and resharing ceremonies.
Complete the following steps to quickly start a Casimir operator:
-
Clone the Casimir Operator repository.
git clone https://github.com/consensusnetworks/casimir-operator.git && cd casimir-operator
-
Install submodules.
make install
-
Copy the required config files.
make copy
-
Update the
eth1.ETH1Addr
in./config/ssv.node.yaml
to point to the correct eth1 node. -
Update the
eth2.BeaconNodeAddr
in./config/ssv.node.yaml
to point to the correct beacon node. -
Generate new operator keys (you will be prompted for a keystore password).
make generate_operator_keys
-
Copy the operator public key from
./keys/encrypted.json
and register it with SSV network to get an operator ID. -
Run your node with docker-compose.
make up
-
Stop your node.
make down
You can use any pair of execution and consensus client to run your Ethereum RPC node. See the list of execution and consensus clients to choose the best pair for your system, then follow the respective client docs to set up your node. We also recommend ETH Docker to easily set up and run both clients in a single stack. The execution and consensus RPC APIs must be enabled and accessible to the SSV node.
The SSV node installation guide walks through preparing the required services, securely generating an operator keystore, and configuring the node. Note, you can also use ETH Docker's SSV support to combine your Ethereum RPC node and SSV node into a single stack.
You can follow the SSV DKG node installation guide to add a DKG node to your operator. The DKG node configuration will also require your encrypted operator keystore and password file paths. You must provide a public DKG node URL to Casimir during registration.
Assuming you have already cloned the repository and installed submodules, you can run the following commands to start a development environment with multiple operators:
-
Create a
.env
file.touch .env
-
Set
MODE=development
in your.env
file. -
Set
SERVICES=node.1,node.2,node.3,node.4
in your.env
file, or include as many nodes as you want up to 8. -
Copy the required config files.
make copy
-
Follow steps 4-6 in the Quickstart guide for each node 1 to n. The copied config file names will specify the node number, e.g.
./config/ssv.node.1.yaml
. -
Run your required services with docker-compose.
make up
-
Stop all running services.
make down