This is the Fusaka mainnet stable release.
It activates Fusaka support on Ethereum mainnet – mainnet operators must upgrade before the Fusaka fork.
🔐 Upgrade Priority
| Network | Priority | Fork date |
|---|---|---|
| Mainnet | 🟢 Required | 3.12.25 |
| Hoodi | 🟢 Required | 28.10.25 |
⚠️ This is the Fusaka mainnet release. Always ensure your Execution + Consensus clients and any remote signers (web3signer, external signers) are updated. SSV strives to support the latest released versions of these clients.
🐳 Docker image
docker pull ssvlabs/ssv-node:v2.3.7✨ Highlights
- Fulu & Fusaka fork support – SSV is ready for the Fulu chain changes and activates Fusaka fork support on Ethereum mainnet.
- Majority fork protection – Safer attestation signing when the network is on a majority fork, reducing slash risk. check the SIP
- Blinded blocks for all forks – All beacon blocks are blinded in QBFT, cutting consensus bandwidth and improving scalability for large BPO-era blocks.
What's Changed
Forks, Protocol & Core Consensus
-
Fulu & Fusaka fork support
Adds Fulu support and Fulu mainnet fork handling, plus Fusaka-related changes and additional cosmetic fixes and exporter bug fixes to make this release fork-ready.
PRs: #2528, #2549, #2589 -
Blinded blocks for all beacon blocks
Blinds all beacon blocks in QBFT (including large Fulu/Fusaka-era blocks), significantly reducing consensus bandwidth and improving robustness for big-block forks.
PR: #2569 -
Majority fork protection
Introduces majority fork protection for attestations, tightening validation and improving validator safety when the chain is in a majority fork.
PR: #2358 -
Runners & duties robustness
Refactors runners to simplify and future-proof the code, adds robust message replay, logs more duty details, improves the “no running duty” error, and cleans up retry-related logs.
PRs: #2136, #2445, #2419, #2476, #2587, #2590 -
Threshold safety
Adds validation to threshold signature splitting to avoid panics and surface configuration errors as clear, human-readable errors.
PR: #2466
Exporter 2.0 & API
-
Exporter features & bug fixes
Enables partial results, adds scheduled duties storage and API exposure, fixes committee/quorum handling, proactively populates committee links for scheduled validators, fixes retro-compat issues, and ships exporter v2.0.0-rc1 notes.
PRs: #2460, #2552, #2579, #2574, #2558, #2556, #2559, #2521, #2538 -
Exporter & API refactors
Reduces exporter log noise, removes pubkeys from the collector (privacy/size), refactors the API into one package per handler, and adds an OpenAPI generator.
PRs: #2467, #2498, #2507, #2535
Node, CL/EL Clients, P2P & Probing
-
Node startup & probing
Ensures the node can cleanly start with 0 active validators and stabilizes node-probe behavior with cleanup and retry delays.
PRs: #2540, #2542, #2492, #2534 -
Execution & beacon client integration
Relies on execution-client library reconnects, fixes potential zero-fee-recipient blocks on CL restart, corrects CL multi-client usage, and stabilizes flaky multi-client tests.
PRs: #2465, #2415, #2494, #2524, #2472, #2550 -
P2P networking
Adjusts P2P connection settings and correctly calculates best-peer subnets for more efficient peers and subnets selection.
PRs: #2578, #2577 -
Fee recipient consistency
Establishes a single source of truth for fee recipients to avoid configuration drift between components.
PR: #2457
Observability, Metrics & Tracing
-
Metrics improvements
Adds missing duty details, standardizes QBFT instance metrics, tracks message-queue sizes, and cleans up msg-validation metrics.
PRs: #2485, #2496, #2529, #2490 -
Tracing volume control
Introduces droppable spans and reduces trace volume to keep telemetry cost-effective and focused.
PRs: #2576, #2585 -
Logging quality
Trims startup log clutter, extends and simplifies CL/EL logs, and logs signers on invalid messages for easier debugging.
PRs: #2497, #2550, #2557, #2419
Storage, Safety, Ops & Misc
-
Doppelganger behavior
Documents post-consensus doppelganger marking behavior to clarify how the node treats doppelganger detection after consensus.
PR: #2575 -
Storage & operators
Adds aListOperatorsAllstorage method for more flexible operator introspection.
PR: #2501 -
CI/CD & branch sync
Runs CI on merges into stage/main and syncs stage/main through a series of Stage ← Main / Stage → Main PRs (including the v2.3.5 merge and this release PR).
PRs: #2463, #2522, #2520, #2548, #2595, #2570, #2591 -
Docs & links
Updates the public Discord link in docs.
PR: #2592 -
Dependency & config tweaks
Updates go-ethereum to v1.16.4 and removesINTERVALS_PER_SLOTfrom network config while adjusting logging on missing parameters.
PRs: #2537, #2486
Cleanups, Refactors, Tests
-
General cleanup & refactors
Removes old integration tests, performs general cleanup, stabilizes a flaky QBFT timeout test, and introduces small refactors usingmax/min,maps.Copy, andSplitSeqto simplify code.
PRs: #2464, #2504, #2491, #2456, #2563, #2565 -
Comment & docs cleanups
Fixes minor issues in comments and test descriptions across the codebase.
PRs: #2502, #2531, #2495, #2566, #2573
New Contributors
- @deepdring made their first contribution in #2456
- @keeghcet made their first contribution in #2502
- @joemicky made their first contribution in #2531
- @tzchenxixi made their first contribution in #2495
- @AgeManning made their first contribution in #2466
- @russcoss made their first contribution in #2566
- @hustrust made their first contribution in #2573
- @goldlinker made their first contribution in #2563
- @reddaisyy made their first contribution in #2565
- @yoaz-ssvlabs made their first contribution in #2592
Full Changelog: v2.3.6...v2.3.7