github ssvlabs/ssv untagged-efb4040770b61ac13797
v2.5.1

one hour ago

This patch release improves the reliability of message validation and peer discovery on top of v2.5.0, and updates the Go toolchain and dependencies. There are no config or DB changes.

🔐 Upgrade Priority

Network Priority
Sepolia 🔥 Highly recommended
Hoodi 🔥 Highly recommended
Mainnet 👍 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.


🐳 Docker image

docker pull ssvlabs/ssv-node:v2.5.1

⚠️ Operator notes

  • Drop-in upgrade from v2.5.0. No config changes, no DB migration.
  • Message validation metric reasons. On ssv.p2p.message.validations.ignored (attribute ssv.p2p.message.validation.discard_reason):
    • New reason slot is too far in the future, for messages whose slot is more than 3 epochs past the current slot.
    • The late-slot reason now lists every role it covers. It changes from current time is above duty's start +34(committee, aggregator, and aggregator committee) or +3(proposer, sync committee contribution) slots to current time is above duty's start +34 (committee, aggregator, aggregator committee), +3 (proposer, sync committee contribution, PTC attestation) or +2 (proposer preferences) slots. Update any dashboard or alert that matches the old text.
  • Prometheus /metrics output. With the OpenTelemetry update, the exporter no longer emits the otel_scope_info series and adds an otel_scope_schema_url label to every series. Metric names and suffixes are unchanged. Update any query or recording rule that joins on otel_scope_info or expects an exact label set.
  • Building from source. go.mod now pins toolchain go1.26.10. With the default GOTOOLCHAIN=auto, an older Go 1.26.x downloads it automatically.

What's Changed

Message validation

  • Messages whose slot is more than 3 epochs ahead of the current slot are now ignored early, under the new slot is too far in the future reason. Results for all other messages are unchanged.
  • Improved error handling in message validation.
  • Cleanup of slot-time helpers: the duplicate TimeAtSlot is removed.
  • The late-slot error and the related code comments now spell out each role's bound, including PTC attestation (+3) and proposer preferences (+2).
  • More validation test coverage across all roles, message types and fork configs.

PRs: #3172, #3173

P2P & discovery

  • ENR domaintype and next_domaintype entries are now decoded strictly as 4 bytes, matching how SSV and Anchor nodes encode them. Other values are skipped as invalidDomainType.
  • Improved error handling in peer discovery.
  • More discovery and ENR decoding tests.

PRs: #3174, #3175

Build / CI / dependencies

  • Go toolchain pinned to go1.26.10, and release images are now built with it (previously golang:1.26.0).
  • Dependency updates: gRPC v1.83.2, OpenTelemetry v1.45.0 with its exporters and contrib aligned (Prometheus exporter v0.67.0, otelhttp v0.70.0, semconv v1.43.0), chi v5.3.2, golang.org/x/crypto v0.58.0, golang.org/x/net v0.62.0 and the rest of golang.org/x, go-ipld-prime v0.23.0, brotli v1.2.7 and klauspost/compress v1.20.2.
  • ssv-signer: dependencies matched to the node, and fasthttp v1.70.0, which parses HTTP headers more strictly (CRLF line endings only, exactly one Host header, URI format checks). The node's client is unaffected.
  • CI: go test concurrency tuned for GitHub's hosted runners, and a faster max-validators spec test.
  • Renovate: stage's config now applies (weekly schedule, grouped updates, Go toolchain and golang images bumped together).

PRs: #3176, #3177, #3178, #3179, #3180, #3181

Full Changelog

v2.5.0...v2.5.1

Don't miss a new ssv release

NewReleases is sending notifications on new releases.