$ make build
$ make full-test
$ make lint-prepare
$ make lint
$ ./bin/ssvnode version
We split an eth2 BLS validator key into shares via Shamir-Secret-Sharing(SSS) to be used between the SSV nodes.
# Extract Private keys from mnemonic (optional, skip if you have the public/private keys )
$ ./bin/ssvnode export-keys --mnemonic="<mnemonic>" --index={keyIndex}
# Generate threshold keys
$ ./bin/ssvnode create-threshold --count <number of ssv nodes> --private-key <privateKey>
$ ./bin/ssvnode generate-operator-keys
Config files are located in ./config
directory:
Specifies general configuration regards the current node.
Example yaml - config.yaml
For a 4 node SSV network, 4 share.yaml files need to be created, based on the template file.
E.g. ./config/share1.yaml
, ./config/share2.yaml
, etc.
This section details the steps to run a local network of operator nodes.
In order to run a local environment, install the following:
- git
- go (1.15)
- docker
- make
$ git clone https://github.com/bloxapp/ssv.git
$ make build
Split a validator key to distribute to the nodes in your network.
See Splitting a Validator Key.
Fill the required fields in config.yaml file.
Note - there's no need to fill the OperatorPrivateKey field.
Create 4 .yaml files with the corresponding configuration, based on the template file.
The files should be placed in the ./config
directory (./config/share1.yaml
, ./config/share2.yaml
, etc.)
Run a local network using docker
$ make docker-all
$ make docker-debug
In order to spin up local prometheus and grafana use:
$ make docker-monitor
For a grafana dashboard, use the SSV Operator dashboard as explained in monitoring/README.md#grafana
Please make sure your contributions adhere to our coding guidelines:
- Code must adhere to the official Go formatting guidelines (i.e. uses gofmt).
- Code must be documented adhering to the official Go commentary guidelines.
- Pull requests need to be based on and opened against the
stage
branch, and its commits should be squashed on merge.