# eth2-ssv **Repository Path**: mirrors_ethereum/eth2-ssv ## Basic Information - **Project Name**: eth2-ssv - **Description**: The repository has moved to https://github.com/bloxapp/ssv - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: stage - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-27 - **Last Updated**: 2026-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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](https://arxiv.org/pdf/2002.03613.pdf)). ## Getting started An SSV operator's getting started [documentation](./internals/documentation/operator_getting_started.md) ## Common commands ```bash # 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. ```bash # 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= STORAGE_PATH= BOOT_NODE_EXTERNAL_IP= BOOT_NODE_PRIVATE_KEY= BEACON_NODE_ADDR= 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) - Secret Shared Validators on Eth2 - [Litepaper](https://medium.com/coinmonks/eth2-secret-shared-validators-85824df8cbc0) - iBTF - [Paper](https://arxiv.org/pdf/2002.03613.pdf) - [EIP650](https://github.com/ethereum/EIPs/issues/650) - [Liveness issues](https://github.com/ConsenSys/quorum/issues/305) - should have been addressed in the paper - [Consensys short description](https://docs.goquorum.consensys.net/en/stable/Concepts/Consensus/IBFT/) - POC - [SSV Python node](https://github.com/dankrad/python-ssv) - [iBFT Python](https://github.com/dankrad/python-ibft) - [Prysm adapted validator client](https://github.com/alonmuroch/prysm/tree/ssv) - Other implementations - [Consensys Quorum](https://github.com/ConsenSys/quorum) - [Besu Hyperledger](https://besu.hyperledger.org/en/stable/HowTo/Configure/Consensus-Protocols/IBFT/) - [code]( https://github.com/hyperledger/besu/tree/master/consensus/ibft) - DKG - [Blox's eth2 pools research](https://github.com/bloxapp/eth2-staking-pools-research) - [ETH DKG](https://github.com/PhilippSchindler/ethdkg)