Run a Distributed Validator

The SSV network enables the distribution of validator operations between non-trusting operators.

In order to distribute your validator, you must have an activated (deposited) validator on the Beacon Chain.

How to Run a Distributed Validator

This guide outlines the steps required to run a distributed validator via the ssv.network, using the protocol’s smart contracts and developer tools.

Prerequisites

  • An Ethereum validator - generation of validator keys and their activation (deposit) to the Beacon Chain could be done using Ethereum’s official Staking Deposit CLI and their Launchpad.

  • Goerli ETH (<0.1) to cover transaction gas costs on the Goerli testnet (Community members on our discord could assist in obtaining the required amount).

  • Testnet SSV (faucet)

Process Overview

Validators are managed within Clusters - the group of operators that were selected to operate them.

Running a distributed validator is outlined by the following steps:

  1. Select the group of operators to manage your validator.

  2. Retrieve events data for your account and cluster

  3. Split your validator key to shares.

  4. Register your validator to the network.

1. Operator Selection

Select your preferred group of operators from the operator registry of the SSV network.

The number of cluster operators you select must be 3f+1 compatible, whereas f is the number of faulty operators that your cluster could endure (more operators, greater fault tolerance) - e.g. 4, 7, 10, 13.

For each chosen operator, you must fetch its network assigned id and its corresponding key.

The entire operator registry can be viewed via the ssv.network’s explorer or through the SSV API to get access to the necessary operator ids / keys.

2. Retrieve Events Data

The SSV developer tools and smart contracts transactions require off-chain state inputs for operation and security.

Use the SSV Scanner tools to retrieve the latest registration nonce and cluster snapshot for your account and validator cluster - they will both be required as inputs for the next step.

Please note that as your registration nonce and cluster snapshot data updates after each transaction with cluster related functions, it’s required to fetch them before each validator registration.

3. Split Validator Key to Shares

To assign the validator operation to the cluster of your selected operators, you must split your validator key to shares.

Use the SSV Keys tool to extract your validator key from your keystore file and split it to shares.

4. Network Registration

To signal your cluster to start operating your validator, you must register your validator to the network by broadcasting the registerValidator() transaction to the ssv.network contract:

ParameterTypeDescription

publicKey

bytes

The validator’s public key.

operatorIds

uint64[]

List of all operator’s ids which were selected during the “Operators Selection” step.

sharesData

bytes[]

sharesData which were produced during the “Key Splitting” step - obtained using the SSV Keys tool.

amount

uint256

Amount of SSV tokens to be deposited as payment (not mandatory). See validator funding to calculate how much funding is needed to run each validator.

cluster

tuple[]

Object containing the latest cluster snapshot data, produced during the “Retrieve Events Data” step - obtained using the SSV Scanner tool. If this is the 1st validator within a specific cluster (unique set of operators), use - {0,0,0,true,0}

You can construct the transaction by yourself or through using the partial payload generated by the SSV Keys tool used in the “Key Splitting” step.

Please note that as SSV is deposited to the contract, you must initially approve the SSV contract address to spend your SSV tokens prior to the registration transaction.

Last updated