github ssvlabs/ssv v2.4.0

one day ago

This release includes proposer-duty improvements, exporter refactors, minor duty scheduling bug-fixes, better logging, and various cleanups.

🔐 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.4.0

New features

Smart proposal selection for multi-CL setups

For proposer-duty operators utilizing multi-Beacon setups now will not only enjoy the additional redundancy (tolerating occasional CL failures to fetch a block), but also potentially better MEV rewards. This is because of the added scoring mechanism that compares block profits (for all the blocks operators successfully fetched from different CLs).

When fetching blocks from CLs operator will wait for a certain time-window (can be configured by WITH_PROPOSAL_SOFT_TIMEOUT and defaults to 1800ms otherwise) to see if there are any MEV blocks it can use to propose, and if not it will take the best non-MEV block available (or wait beyond the soft-timeout to get one).

What's Changed

Proposer: smarter proposal selection + tuned timeouts

Improves proposer behavior by collecting proposals within a configurable window (WITH_PROPOSAL_SOFT_TIMEOUT defaults to 1800ms), scoring them to select the best candidate, and optimizing for MEV/blinded blocks with early-exit behavior.

PRs: #2648

Duty scheduling and deadline fixes

Fixes duty fetching when the node starts at epoch boundaries, and corrects deadline handling for attester/aggregator duties. Also includes clarifications around BLS signature reconstruction in committee duties.

PRs: #2614, #2646, #2658

Exporter: introduce exporter2 core + WS refactor + test stability

Refactors exporter internals by extracting an exporter2 package to decouple core logic from HTTP handlers, migrates the websocket query endpoint to the new core, and fixes racy API tests.

PRs: #2625, #2645, #2650

Consensus: improved logging & minor bug fixes

Adds additional observability by logging QBFT “stage durations”, helping diagnose where time is spent during consensus. Fix an edge-case with incorrect SyncCommitteeSubnetID calculation in sync-committee-contribution runner.

PRs: #2609, #2675

Networking: libp2p dependency update

Updates the libp2p version.

PRs: #2588

Cleanup: remove obsolete flags and trim logs

Removes obsolete “majority fork” flags (MAJORITY_FORK_PROTECTION_STRICT) and trims unnecessary log lines.

PRs: #2640, #2629

Build / CI / release engineering improvements

Stabilizes tag versioning, fixes lint issues after CI updates, and updates the Golang base image used for multiarch Docker builds.

PRs: #2626, #2643, #2669

Tests and minor refactors

Improves spectests by using real value checkers, and simplifies code using slices.Contains.

PRs: #2611, #2633

CL/EL robustness: handle context cancellation more cleanly

Improves context-cancellation handling between CL/EL paths.

PRs: #2622

Full Changelog

v2.3.9...v2.4.0

Don't miss a new ssv release

NewReleases is sending notifications on new releases.