Skip to content

Latest commit

 

History

History
89 lines (67 loc) · 2.76 KB

README.md

File metadata and controls

89 lines (67 loc) · 2.76 KB



SSV - Secret Shared Validator

SSV is a protocol for distribuiting an eth2 validator key between multiple operators governed by a consensus protocol (Istanbul BFT).

TODO

[\] Free standing, reference iBFT Go implementation
[\] SSV specific iBFT implementor
[\] Port POC code to Glang
[ ] Single standing instance running with Prysm's validator client
[ ] Networking and discovery
[\] db, persistance and recovery
[ ] Multi network support (being part of multiple SSV groups)
[X] Key sharing
[ ] Documentation
[ ] Phase 1 changes
[ ] Audit

** X=done, \=WIP

Research

Getting started

Build

# Build binary
$ CGO_ENABLED=1 go build -o bin/ssv ./cmd/ssvnode/

# Run tool
$ ./bin/ssv --help

Preparation

Extract Private keys from mnemonic (optional, skip if you have the public/private keys )
  • Private keys from mnemonic: ./bin/ssv export-keys --mnemonic={mnemonic} --index={keyIndex}
Generate threshold keys
  • ./bin/ssv create-threshold --count {# of ssv nodes} --private-key {privateKey}
Edit config files
  • .env
   NETWORK=pyrmont/mainnet
   BEACON_NODE_ADDR
   VALIDATOR_PUBLIC_KEY
   SSV_NODE_{index} - for each threshold created add param(public key {index} from previous step )
  • docker-compose.yaml

    PUBKEY_NODE_{index} - add the other public keys as environment for each service

How to run

docker-compose.yaml contains definitions of 3 SSV nodes with its own threshold private keys that are generated based on the validator's private key. All needed parameters can be found in docker-compose.yaml and .env files.

# Build nodes
$ docker-compose build

# Run nodes
$ docker-compose up -d