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.2What'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
schedulekey
[#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
- @tzchenxixi made their first contribution in #2495
- @AgeManning made their first contribution in #2466
- @russcoss made their first contribution in #2566
Full Changelog
v2.3.7-unstable.1...v2.3.7-unstable.2
co-authored with @iurii-ssv 🙏