ethereum / ssv

The repository has moved to https://github.com/bloxapp/ssv
https://github.com/bloxapp/ssv
24 stars 12 forks source link

Migration notice

The repository has migrated to https://github.com/bloxapp/ssv










SSV - Secret Shared Validator

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

Getting started

An SSV operator's getting started documentation

Common commands

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

# Run local 4 node network (requires docker and a .env file as shown below)
$ make docker-debug 

# Lint
$ make lint-prepare

$ make lint

# Full test
$ make full-test

Splitting a key

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 {# of ssv nodes} --private-key {privateKey}

Example .env file

   NETWORK=pyrmont
   DISCOVERY_TYPE=<mdns for local network, empty for discov5 remote>
   STORAGE_PATH=<example ./data/db/node_1/2/3/4>
   BOOT_NODE_EXTERNAL_IP=
   BOOT_NODE_PRIVATE_KEY=
   BEACON_NODE_ADDR= <can use eth2-4000-prysm-ext.stage.bloxinfra.com:80>
   NODE_ID=
   VALIDATOR_PUBLIC_KEY=
   SSV_PRIVATE_KEY=
   PUBKEY_NODE_1=
   PUBKEY_NODE_2=
   PUBKEY_NODE_3=
   PUBKEY_NODE_4=

For a 4 node SSV network, 4 .env.node.<1/2/3/4> files need to be created.

Progress

[X] Free standing, reference iBFT Go implementation\ [X] SSV specific iBFT implementor\ [X] Port POC code to Glang\ [ ] Single standing instance running with Prysm's validator client\ [X] Networking and discovery\ [X] db, persistance and recovery\ [ ] Between instance persistence (pevent starting a new instance if previous not decided)\ [ ] Multi network support (being part of multiple SSV groups)\ [ ] Aggregation and Proposal support\ [X] Key sharing\ [X] Deployment\ [\] Documentation\ [X] Phase 1 testing\ [ ] Audit

** X=done, \=WIP

Research (Deprecated)