Skip to content

Releases: ssvlabs/ssv

v2.3.7-unstable.2

27 Oct 17:12
df8cc23

Choose a tag to compare

v2.3.7-unstable.2 Pre-release
Pre-release

This version is Fusaka fork support version to be used in testnets and devnets.
DO NOT DEPLOY TO MAINNET

πŸ” Upgrade Priority

Network Priority Fork date
Mainnet πŸ”΄ Don't upgrade TBD
Hoodi 🟒 Required 28.10.25

⚠️ Always ensure your Execution + Consensus clients and any remote signers (web3signer, external signers) are updated, SSV strives to support latest released versions of these clients.


🐳 Docker image

docker pull ssvlabs/ssv-node:v2.3.7-unstable.2

What's Changed

Protocol / Consensus / Core runners

[#2569] feat: blind all blocks

This PR implements blinded block proposals for all beacon blocks (Capella, Deneb, Electra, Fulu) to reduce network bandwidth during QBFT consensus.

[#2358] protocol: majority fork protection

Integrate slashing protection data into value checks and refactor the existing value-checking infrastructure to use a unified ValueChecker interface.

[#2445] runners: robust message replay

This PR implements a robust message replay system for duty runners to handle timing synchronization issues in the SSV protocol. The core problem being addressed is that operators sometimes receive peer-to-peer messages before their duty runners are ready to process them, causing valid messages to be dropped and potentially leading to consensus failures.

The solution categorizes errors into two types: fatal/non-retryable errors (like beacon client failures or validation errors that should permanently drop messages) and retryable errors (like timing mismatches where messages arrive before duties start).

[#2476] duties: clarify & fix typos & fix sync-committee subscription

This PR focuses on improving code clarity and documentation in the duty handlers area of the SSV protocol.

[#2466] fix(threshold): Add validation to threshold signature split

Add a sanity-check for a parameter to threshold signature split program turning a panic into human-readable error.

[#2557] message/validation: log signers on invalid message

Adds logging of message signers (operator IDs) when messages are rejected or ignored during validation, improving debugging capabilities.

[#2553] operator-id: clarify & simplify

Cleans up operator-id management and resolves potential SSV-node crash on startup scenario with ssv-signer.

Exporter & Observability

[#2552] feat(exporter): add schedule to store

This PR:

  • Fetches the list of scheduled duties from the beacon node, using an optimized beacon adapter that is only used for the exporters (safe switch since exporter does not execute any real duties) --> optimized adapter allows to query duties for all validators in a single call
  • Stores these duties efficiently on disk using roaring bitmap
  • Exposes these duties in the API responses under schedule key

[#2558] Exporter: Fix partial sig messages classification

Fixes partial signature message classification by buffering messages until the proposal with BeaconVote FullData arrives, then cross-referencing signing roots to correctly classify attestation vs sync committee duties.

[#2559] Exporter: clear beacon adapter cache periodically

This PR fixes a slow memory leak in duty-fetching functionality by clearing the cache opportunistically.

[#2556] Fix(exporter): silence no-signer errors to prevent duty-syncer getting stuck

Changes error handling for entries with no signers from appending to error collection to logging only, preventing HTTP 500 responses that block the duty-syncer.

Tooling / CI / Chores

[#2564] spec-alignment: trigger manually only

Disables spec-alignment (limit it to manual runs only for now) pipeline because the ssv implementation has diverged from ssv-spec implementation so much it no longer helps to highlight "potentially dangerous" changes.

[#2566] chore: fix some inconsistent function name in comment

Fixes typos and inconsistent naming.

[#2495] chore: fix function name

Fixes typo in function name.

New Contributors

Full Changelog

v2.3.7-unstable.1...v2.3.7-unstable.2

co-authored with @iurii-ssv πŸ™

v2.3.7-unstable.1

30 Sep 13:11
03b790a

Choose a tag to compare

v2.3.7-unstable.1 Pre-release
Pre-release

This version is Fusaka fork support version to be used in testnets and devnets.
DO NOT DEPLOY TO MAINNET

πŸ” Upgrade Priority

Network Priority Fork date
Mainnet πŸ”΄ Don't upgrade TBD
Hoodi 🟒 Required 28.10.25
Sepolia 🟒 Required 14.10.25

⚠️ Always ensure your Execution + Consensus clients and any remote signers (web3signer, external signers) are updated, SSV strives to support latest released versions of these clients.


🐳 Docker image

docker pull ssvlabs/ssv-node:v2.3.7-unstable.1

What's Changed

New Contributors

Full Changelog: v2.3.6...v2.3.7-unstable.1

v2.3.6

21 Sep 15:59
a4704b4

Choose a tag to compare

This release delivers a hotfix for a case where an Operator is started without any active Validators causing it to crash and hence also miss the validator activation event. The change prevents the crash and is able to read the event in order to start the validator properly.


πŸ” Upgrade Priority

Network Priority
Mainnet πŸ‘ Recommended
Hoodi πŸ‘ Recommended

⚠️ Always ensure your Execution + Consensus clients and any remote signers (web3signer, external signers) are updated, SSV strives to support latest released versions of these clients.

⚠️ Always update testnet and check performance before updating mainnet nodes.


🐳 Docker image

docker pull ssvlabs/ssv-node:v2.3.6

What's Changed

  • back-port: node: should start up with 0 active validators by @iurii-ssv in #2541

Full Changelog: v2.3.5...v2.3.6

v2.3.5

14 Sep 11:57
8fc1632

Choose a tag to compare

This release delivers improvements to observability, performance, and validator duty handling, focusing mainly on bug fixes and optimizations, in particular for higher amount of validators (e.g 3k).


πŸ” Upgrade Priority

Network Priority
Mainnet πŸ‘ Recommended
Hoodi πŸ‘ Recommended

⚠️ Always ensure your Execution + Consensus clients and any remote signers (web3signer, external signers) are updated, SSV strives to support latest released versions of these clients.

⚠️ Always update testnet and check performance before updating mainnet nodes.


🐳 Docker image

docker pull ssvlabs/ssv-node:v2.3.5

✨ Features & Improvements

  • Telemetry

    • Introduced Tracing for the SSV node utilizing OpenTelemtry traces (mostly focuesd on duty flow for now). (#2076)
    • Added and improved observability calls in runners and consolidated observability packages. (#2272, #2388)
    • New validator status metrics (e.g. attesting) and additional metrics for attestation client selection and quorum counts. (#2404, #2414, #2420)
  • Validator Duty & Scheduler

    • Configurable proposer delay and related safety/logging improvements. (#2260, #2267, #2269)
    • Enhancements for validator registration and duty handling; improvements to aggregation duty logic. (#2130, #1817)
    • Slashing-protection improvements and E2E slashing-protection tests for ssv-signer. (#2294)
    • faster fee-recipient updates (~2 epochs now vs ~10 epochs prior)
  • SSV Signer & Remote Signing

    • Multiple stability fixes and dependency bumps; remote keys summary and mTLS for E2E. (#2217, #2250, #2391, #2334)
    • Improved Web3Signer logging/metrics for better diagnostics. (#2389, #2390)
  • Networking & P2P

    • Simplified discovery and network config refactors (beacon params extraction, pointer receivers). (#2092, #1813, #2304)
  • Performance & Scalability

    • Optimizations and benchmarks targeting 3k validators; reduced allocations and cancelable sleeps on hot paths; parallelized certain duty-execution steps. (#2395, #2280, #2375)
    • Message validation optimizations β€” indexing by peer ID, grouped errors, removed redundant checks. (#2126, #2342, #2226)
  • Metrics

    • New validator status metrics (e.g. attesting) and additional metrics for attestation client selection and quorum counts. (#2404, #2414, #2420)
  • EL/CL support


πŸ› Fixes

  • Execution client improvements

    • Log streaming stability, adaptive batching and added request timeouts. (#2174, #2204, #2469)
    • Better multi-client error reporting. (#2365)
  • Databse

    • Simplified base DB migration process and graceful DB/network shutdown improvements. (#2348, #2301)
    • DB iterator error propagation fix. (#2292)
  • Beacon / Sync

    • Syncer and metadata syncer bugfixes/improvements. (#2374)
    • Avoid instantiating unused EKM network and improved client health checks. (#2245, #2339)
    • Fix bug in multi client setup where node won't start unless all CL are functioning. (#2499)
  • Message validation & Duties

    • Fixed previous-epoch duty-count regressions and improved partial signature logging. (#2190, #2342, #2394)
    • Guardrails for indicesChange triggering and other edge-cases. (#2268, #2210)
  • Tests and misc

    • Multiple flaky test fixes across storage, execution-client and validator flows. (#2296, #2298, #2458)
    • Removed dead code and reduced redundant artifacts/logging. (#2447, #2261)
    • Default log format changed from capitalColor β†’ capital. (#2394)

πŸ“š Docs & Developer Experience

  • New and updated docs: TRACES.md, attestations/performance docs, MEV considerations, and contributor guidance. (#2299, #2293, #2416, #2427)
  • CI / tooling improvements: run CI on forked PRs, deduplicate runs, move coverage to Codecov. (#2288, #2362, #2307)
  • Linter & formatting enhancements; useful linters enabled to prevent regressions. (#2222, #2259, #2388)

βœ… What to expect after upgrading

  • Better handling and logging for proposer delays, execution client streaming, and signer interactions.
  • Generally reduced flakiness and improved test coverage which should reflect in operational stability.

Exporter

This version includes major exporter updates and configuration, if you are using exporter please wait for future release with clear instruction about configuration changes and new features. (upcoming soon)

What's Changed

Read more

v2.3.4

18 Aug 14:47
349a69a

Choose a tag to compare

In version 2.3.3, a bug was introduced that occurs when an operator is removed from the SSV network while still being part of active committees.
If one of the nodes is restarted after the operator’s removal, all validators managed by that committee fail to launch, causing all associated duties to be missed.

This is a hotfix version for this bug.

NOTE: this an edge case that only happens if an operator is removed from the contract in your committee.

Docker image

docker pull ssvlabs/ssv-node:v2.3.4

Upgrade priority

Network Priority
Mainnet Optional
Hoodi Optional

What's Changed

Full Changelog: v2.3.3...v2.3.4

v2.3.3

15 Jul 08:53
57fbe0f

Choose a tag to compare

SSV Node v2.3.3

This release upgrades the node to Go 1.24, ships official AMD64 + ARM64 Docker images, includes bugfixes and optimizations.
introduces ssvsigner β€” a remote-signer component for separating operator keys and validator shares from the node.

NOTE: this version includes a database migration that is not backward compatible so downgrading requires erasing the database.

Docker image

docker pull ssvlabs/ssv-node:v2.3.3

Upgrade priority

Network Priority
Mainnet πŸ”΄ Required (Default GasLimit Fork: Aug-09-2025 06:40:23 AM UTC)
Hoodi πŸ”΄ Required (Default GasLimit Fork: Jul-24-2025 09:30:00 AM UTC)

Technical context

  • Tool-chain β€” Migrated to Go 1.24; replaced golang.org/x/exp/{maps,slices} with std-lib equivalents.
  • Database β€” Share table now includes an exit-epoch column. This fixed a bug where exited validators that are elligbile for sync-committee duties weren't performing.
  • Docker β€” Official images built for AMD64 and ARM64; cross-compile issues in
    Dockerfile.multiarch resolved.
  • Network config β€”
    • Full Sepolia profile (genesis, boot-nodes)
  • Remote signer β€” ssvsigner introduced with TLS endpoints and a complete setup guide
    in docs/ssvsigner/README.md (Docker-compose examples included).

πŸš€ Features

  • Sepolia network support (networkconfig)
  • New component β€” ssvsigner remote signer
  • Sync-committee duties for exited validators
  • New observability metrics: Doppelganger, round-change, exec-client
  • Increased tests coverage
  • A few optimizations and bugfixes

πŸ› Bug fixes

  • Correct total consensus-time logging (two patches)
  • Prevent panic on random P2P subnet initialisation
  • Stabilised flaky tests in scheduler, discovery and exec-client
  • Validator Exit now using header only for getting block time. (#2370)
  • fix HostDNS flag usage #2133

πŸ”’ ssvsigner

Full audit report: audits/ssv-signer-final.pdf

SSV-Signer is a remote-signer component that allows you to delegate your operator keys and validators shares to a remote server. It is designed to be secure, reliable and easy to use.

Key Features:

  • Audited security: Comprehensive security audit with formal report
  • TLS encryption: Secure communication between node and remote signer
  • Flexible deployment: Support for various deployment scenarios
  • Docker integration: Ready-to-use Docker-compose configurations
  • Configuration management: Environment-based configuration with validation

Setup Options:

  • Local mode: Traditional local key management (default) (not using remote signer)
  • Remote mode: Secure remote key management with TLS

Read more about it and setting it up in the docs.


Default GasLimit update to 36

Default GasLimit used for MEV registrations will be updated to 36mil in the following epochs:

Hoodi Epoch: 29000, // Jul-24-2025 09:30:00 AM UTC 
Mainnet Epoch: 385150, // Aug-09-2025 06:40:23 AM UTC

NOTE: It's required for all operators in a cluster to be updated to keep creating MEV blocks after the fork epoch. This does not affect operators who use the EXPERIMENTAL_GAS_LIMIT flag.

Notes

  • Go version: Requires Go 1.24 or higher
  • Database: Automatic migration from previous versions
  • Network: Compatible with all supported networks (Mainnet, Hoodi, Sepolia)
  • Docker: Multi-architecture support (AMD64, ARM64)

What's Changed

Read more

v2.3.2

11 Jun 13:35
faf5d0e

Choose a tag to compare

This release aligns SSV with the latest client stack and removes a bug that could hurt block production reliability.

Technical context

We discovered that Teku 25.5.0 now supports the updated /spec endpoint, which includes the new BLOB_SCHEDULE field that SSV was previously unable to parse correctly.

In addition, this release fixes missed proposals with Prysm: the client occasionally sets the Eth-Consensus-Block-Value header incorrectly, which caused proposal misses even though the response payload itself was valid.


# Docker image
docker pull ssvlabs/ssv-node:v2.3.2

Upgrade Priority

Network Priority
Mainnet πŸ‘ Recommended
Hoodi πŸ‘ Recommended

πŸš€ Features

  • Teku 25.5.0 compatibility - The node now recognises Teku 25.5.0 beacon-node APIs.

πŸ› Bug Fixes

  • Missed proposals on Prysm - Integrates fix for Prysm patch Do not fail production when consensus block value is unavailable. Nodes using Prysm will no longer randomly skip block proposals when the block-value endpoint is empty.
  • Correct total consensus time in logs - The total consensus time metric now measures the entire consensus pipeline, not just the signing step, giving operators reliable performance numbers.
  • Initialise scoreParamsFactory correctly - Fixed a nil-pointer panic on cold start when the factory was created after config calling setupPubsub.

πŸ“Œ Notes

No database migrations or configuration changes are required.

What's Changed

v2.3.1...v2.3.2

v2.3.1

03 Apr 14:31
6382d4b

Choose a tag to compare

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.

Latest SSV release requires Pectra-compatible versions of Execution and Consensus clients on your setup. To ensure smooth experience, we suggest running latest versions of all clients.

Warning

For operators running Lighthouse
Mainnet operators using Lighthouse as the only Beacon endpoint should not upgrade to v2.3.1

If you have 2+ Beacon endpoints, one of which Lighthouse, your node will work properly.

Technical context

We've discovered that latest stable Lighthouse v6.0.1 does not respond correctly to GET calls to v2/validator/aggregate_attestation specifically.

This was fixed in v7.0.0-beta pre-release, which is not suitable for Mainnet. Once the v7.0.0 is released for Mainnet users β€” you can safely upgrade to SSV v2.3.1.

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.1

πŸš€ 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

Read more

v2.3.0

02 Apr 12:23
2c4499a

Choose a tag to compare

This release includes features to enhance validaor safety and improve performance.

Important notes: please follow the docs closely for using new features

Feature: Doppleganger Protection - full docs
Doppelganger (DG) protection is disabled by default.
To enable it in your SSV node, 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.


Feature: Weighted Attestation Data (WAD) - full docs
Improves attestation accuracy by scoring responses from multiple Beacon nodes based on epoch and block proximity. Adds slight latency to duties but includes safeguards (timeouts, retries). Most effective with 2+ Beacon nodes and Parallel Submissions 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.


Upgrade Priority

Network Priority
Mainnet πŸ‘ Recommended
Holesky πŸ‘ Recommended
Hoodi πŸ‘ Recommended

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

v2.2.0-unstable.1 (Pectra)

20 Mar 16:00

Choose a tag to compare

Pre-release

This release introduces support for the upcoming Ethereum Pectra fork on Hoodi.

Warning

Prior to upgrading SSV, the Ethereum clients and mev-boost must be upgraded to their respective Pectra on Hoodi releases.

Upgrade Priority

Network Priority Pectra Fork
Hoodi 🟒 Mandatory Wed. March 26, 2025 07:37:12 UTC (epoch 2048)
Holesky 🟒 Recommended Already forked
Sepolia 🟒 Recommended Already forked
Mainnet πŸ”΄ Don't upgrade Not scheduled yet

Docker Image

docker pull ssvlabs/ssv-node:v2.2.0-unstable.1