github ssvlabs/ssv v2.3.1

9 days ago

This release replaces v2.3.0 including a hotfix for operators running without any validators.

This release introduces two major features to enhance validator safety and improve performance.

Upgrade Priority

Network Priority
Mainnet 👍 Recommended
Holesky 👍 Recommended
Hoodi 👍 Recommended

Doppleganger Protection - Docs

Doppelganger protection prevents your operator from proposing/attesting for validators, until at least 2 offline epochs or quorum from the other operators have been observed. This protection kicks in for all validators on startup and then only for newly registered validators.

If you wish to enable it, set the following environment variable:

ENABLE_DOPPELGANGER_PROTECTION=true

or enable it in your config.yaml file:

EnableDoppelgangerProtection: true

⚠️ Teku Users:
To make Doppelganger protection work with Teku, you must also run your beacon node with:

--beacon-liveness-tracking-enabled=true

This flag is required for the SSV node to detect validator liveness via the Beacon Node.

✅ What to Expect After Enabling

  • The node will wait ~3 epochs to ensure each validator is not already active on the Ethereum network.
  • If no activity is detected, the validator is marked safe to sign.
  • Validators can also be marked safe immediately if a post-consensus quorum is reached by the validator's operator committee.

🔁 On node restart, Doppelganger protection is reset, and the safety check process starts again.


Weighted Attestation Data (WAD) - Docs

Improves attestation accuracy by scoring responses from multiple Beacon nodes based on epoch and slot proximity. Adds slight latency to duties but includes safeguards (timeouts, retries). Ineffective with only one Beacon node. Most effective with more Beacon nodes and WithParallelSubmissions enabled.

Configuration:

YAML:

eth2:
  BeaconNodeAddr: http://localhost:5052;http://localhost:5053   # Must include 2+ nodes
  WithWeightedAttestationData: true      # Enables WAD
  WithParallelSubmissions: true          # (Recommended) Sends duties to all nodes concurrently

ENV:

BEACON_NODE_ADDR=http://localhost:5052;http://localhost:5053
WITH_WEIGHTED_ATTESTATION_DATA=true
WITH_PARALLEL_SUBMISSIONS=true

⚠️ WAD is disabled by default. It has no effect with only one Beacon node. Parallel submissions improve performance but are optional.


Docker Image

docker pull ssvlabs/ssv-node:v2.3.0

🚀 Features

  • Hoodi Network Support
    This verison adds network configs for hoodi ssv network. To run on hoodi set ssv.Network to hoodi or use environment variable NETWORK=hoodi.
  • Electra Fork Support
    Added support for the upcoming Electra fork.
    NOTE: Fully prepare for Electra fork by updating your Ethereum execution and consensus nodes and MEV-boost.
  • Weighted Attestation Data
    Introduced weighted attestation selection logic to improve performance and block inclusion reliability.
  • Doppelganger Protection
    Implemented detection mechanism to prevent validator key reuse across multiple nodes. To enable check the docs.
  • Scored P2P Discovery
    Improved peer discovery by scoring peers for more reliable and efficient connections.

🛠 Improvements

  • Committee Concurrency Handling
    Improved internal concurrency logic for better committee execution and stability under load.
  • Beacon Client
    Enhanced concurrency safety in tests and fixed multiple race conditions.
  • Discovery Protocol
    Increased retry interval to reduce network noise and improve connection stability.
  • Event Syncing
    Improved syncing logic to avoid duplicate or stale events.
  • Genesis Version Handling
    goclient now fetches the genesis version from config to maintain consistency.

🐛 Bug Fixes

  • Fixed cache validation for GetAttestationData.
  • Corrected Electra fork epoch handling and updated spec expectations.
  • Resolved race conditions in P2P and goclient hooks.
  • Filtered out past-slot duties to prevent execution errors.
  • Fixed flaky and unreliable unit tests.

📌 Notes

  • No breaking DB changes were introduced, but protocol-level changes (Electra) may require all components to be upgraded.
  • Please ensure all nodes are updated ahead of the Electra fork to avoid missed duties or inconsistent behavior.

What's Changed

New Contributors

Full Changelog: v2.2.1...v2.3.0

New Contributors

Full Changelog: v2.3.0...v2.3.1

Don't miss a new ssv release

NewReleases is sending notifications on new releases.