Skip to content

Releases: ssvlabs/ssv

v2.2.2-unstable.0 (Pectra)

20 Feb 10:04
9aeac90
Compare
Choose a tag to compare
Pre-release

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

Warning

Prior to upgrading SSV, the Ethereum nodes must be upgraded to their respective Pectra on Holesky releases.

Upgrade Priority

Network Priority Pectra Fork
Holesky 🟢 Mandatory Feb 24th 2025 21:55:12 UTC (epoch 115968)
Mainnet 🔴 Don't upgrade Not scheduled yet

Docker Image

docker pull ssvlabs/ssv-node:v2.2.2-unstable.0

Changes

v2.2.0

04 Feb 14:45
7fcd336
Compare
Choose a tag to compare

This release includes awaited features and bug fixes that should improve performance!

⚠️ Caution
This release includes a database migration, you won't be able to use a database from this release with older version. If you wish to run an older version after this you MUST prune your database and the node will resync it.

Upgrade Priority

Network Priority
Mainnet 👍 Recommended
Holesky 👍 Recommended

Docker Image

docker pull ssvlabs/ssv-node:v2.2.0

🚀 Features

  • Multi client - SSV now supports multiple EL/CL nodes to use as fallback using the original env variables BEACON_NODE_ADDR or ETH_1_ADDR. It supports semi-colon (;) seperated addresses. ex: ws://localhost:8546;ws://localhost:8547 or http://localhost:5052;http://localhost:5053

🐛 Bug Fixes

  • Fixed a bug where libp2p would drop some messages causing some duties to fail. (#1989)

🛠️ Maintenance

  • Removed deprecated CI files to streamline the CI/CD pipeline.
  • Updated Go modules to the latest versions for better compatibility and security.
  • Improved the Developer Guide with clearer instructions for contributors.
  • Revamped how info about validators is stored in the database (#1837)

What's Changed

  • fix: (EventHandler) update non-committee shares upon liquidation/reactivation by @moshe-blox in #1689
  • optimization(validatorStore): handlers (add, remove, update) and tests by @olegshmuelov in #1946
  • feat(eventsyncing): health calls check last seen block distance by @anatolie-ssv in #1978
  • fix(p2p): start listening to P2P messages only after contract and metadata sync by @nkryuchkov in #1805
  • refactor(storage/participants): change key structure, add cleanup job by @anatolie-ssv in #1845
  • feat(metrics) - Beacon client 'Validators' endpoint request duration metric by @oleg-ssvlabs in #1971
  • fix(eventsyncer): remove check for block below threshold in the sync history method by @anatolie-ssv in #1983
  • feat(metrics) - EL status 'syncing' distance above threshold by @oleg-ssvlabs in #1984
  • fix(eth/executionclient): fix double sync distance metrics by @nkryuchkov in #1985
  • fix(pubsub): increase subscription buffer size to prevent message drops by @olegshmuelov in #1989
  • chore: remove old ci files by @vaclav-ssvlabs in #1943
  • Linter config by @oleg-ssvlabs in #1991
  • shares-storage: replace GOB encoding with SSZ, deduplicate validator Index field by @iurii-ssv in #1837
  • fix(pubsub): increase subscription buffer size to 256 and update go-libp2p-pubsub by @olegshmuelov in #1992
  • v2.2.0 feat(cl/el): support multiple nodes by @nkryuchkov in #1964
  • refactor: using slices.Contains to simplify the code by @zhoufanjin in #1976
  • fix(exporter): missing identifier value by @anatolie-ssv in #1982
  • chore(dependabot) - Dependabot config github actions by @oleg-ssvlabs in #2003
  • fix(eventsyncer): retry if historical sync finished an on old block by @anatolie-ssv in #1986
  • fix(flaky test) - fix inconsistent results in unit test by @oleg-ssvlabs in #2004
  • config: p2p, fix parsing HostDNS by @iurii-ssv in #1995
  • fix: (discovery) logged configuration (attempt 2) by @iurii-ssv in #1981
  • migrations: finalize migration_5 (share encoding GOB -> SSZ) by @iurii-ssv in #2002
  • executionclient: add a comment about SubscribeNewHead choice by @nkryuchkov in #1996
  • fix(metrics) - Drop unused prometheus metric by @oleg-ssvlabs in #2005
  • hotfix(el/cl): allow multi clients to start if at least one node is up by @y0sher in #2000
  • eth/executionclient: rate limit multi client Healthy call by @nkryuchkov in #2010
  • eth/executionclient: use go-eth2-client with el_offline support by @nkryuchkov in #2012
  • Revert "eth/executionclient: use go-eth2-client with el_offline support (#2012)" by @nkryuchkov in #2014
  • eth/executionclient: fix panic in multi-client by @nkryuchkov in #2015
  • eth/executionclient: use go-eth2-client with el_offline support by @nkryuchkov in #2017
  • fix: (exporter) memory leak in partial sig container by @y0sher in #2022

New Contributors

Full Changelog: v2.1.1...v2.2.0

v2.1.1

23 Jan 12:01
2d44f39
Compare
Choose a tag to compare

v2.1.1

This release includes an option to adjust the default gas limit used when sending validator registrations to MEV relays through the Beacon node.

Gas Limit

The SSV node registers its validators to MEV relays with a preferred gas limit. With this release, this gas limit becomes configurable.

Gas limit for local blocks (non-MEV) are set by the execution node (see https://pumpthegas.org) which you should ideally be set to the same value.

The default gas limit is 30M and this release makes it configurable as long as the operator committees converge on the same value.

⚠️ Caution ⚠️

All operators in the committee MUST set the same gas limit, otherwise MEV registrations would fail and the validators would eventually not propose MEV blocks and instead fall back to local non-MEV blocks.

At the time being, we recommend to leave the gas limit at the default of 30M for most operators.

Configuration

Set the EXPERIMENTAL_GAS_LIMIT environment variable or by ValidatorOptions.GasLimit in the config.yaml file:

ValidatorOptions:
    ExperimentalGasLimit: 35000000

Verification

You can verify the configuration change works by querying one of the MEV relays used by the operator:
https://<relay-url>/relay/v1/data/validator_registration?pubkey=0x<validator-pubkey>

Validators are registered in a round-robin fashion once an hour, so you may have to wait this long or check more validators.

Upgrade Priority

Network Priority
Mainnet Optional
Holesky Optional

Docker Image

docker pull ssvlabs/ssv-node:v2.1.1

What's Changed

  • main - spec alignment (v1.0.2): custom GasLimit , 1000 validators #1973 by @y0sher in #1979

Full Changelog: v2.1.0...v2.1.1

v2.1.0

07 Jan 15:24
473bd8b
Compare
Choose a tag to compare

v2.1.0

This release introduces bug fixes, performance improvements and a metrics redesign.

Upgrade Priority

Network Priority
Mainnet 👍 Recommended
Holesky 👍 Recommended

Docker Image

docker pull ssvlabs/ssv-node:v2.1.0

New Grafana Dashboard

We've redesigned the SSV metrics and Grafana dashboard from scratch.

Download the new Dashboard JSON and import it to Grafana to try it out.

Note: the old dashboards aren't compatible with v2.1.0

Features

Performance

Fixes

v2.0.2

15 Dec 10:29
b5766a8
Compare
Choose a tag to compare

Release Notes: Version 2.0.2

This release introduces bug fixes, pre-Alan fork cleanup, and connectivity enhancements for public operators.

🚀 Upgrade Priority

Network Priority
Mainnet 👍 Strongly Recommended
Holesky 👍 Strongly Recommended

🐳 Docker Image

Pull the latest version using:

docker pull ssvlabs/ssv-node:v2.0.2

🆕 What's New and Improved

Improvements and Enhancements

  • Reduced excessive “skipped peers” logs in Discovery.
  • Improved connectivity with increased block propagation delay.
  • Enhanced public operator usability by setting a max message size in PubSub.
  • Optimized committee management by sharing CommitteeDutyGuard across committees.
  • Discovery adjustments: Fixed IP logging and enhanced subnet index removal logic.

Performance Optimizations

  • Avoid in-memory lock delays during database operations in Registry/Storage.
  • Reduced memory usage in hashmap for tests.
  • Added caching for Beacon Client attestation data requests.
  • Concurrent slashing protection tests for increased robustness.

Bug Fixes

  • Resolved typos in documentation.
  • Fixed participant updates to occur atomically in Exporter.
  • Addressed DutyScheduler issues with missed first epoch slot duties.
  • Corrected queue message type priorities.
  • Restored proper configuration logging in Discovery.

Chore and Maintenance

  • Cleaned up code related to the pre-Alan fork.
  • Updated GitLab CI pipeline and removed old CI/CD stages.
  • Redesigned the README for improved readability.
  • Updated dependencies to align with ssv-spec v1.0.0.

Feature Updates

  • Discovery improvements: Re-enabled post-fork discovery.
  • P2P enhancements: Dynamically grow MaxPeers based on subnet count.
  • Added tracing context arguments for improved observability.

📋 Full Changelog

v2.0.1

03 Dec 16:53
8bcc2b4
Compare
Choose a tag to compare

This release includes a few bug fixes, mainly causing validators to miss some duties in certain edge cases described below.

Upgrade Priority

Network Priority
Mainnet 👍 Strongly recommended
Holesky 👍 Strongly recommended

Docker Tag

docker pull ssvlabs/ssv-node:v2.0.1

What's Changed

Full Changelog: v2.0.0...v2.0.1

v2.0.0

28 Oct 14:57
Compare
Choose a tag to compare

This release introduces support for the Alan fork to Mainnet.

Note: Alan databases are not backwards-compatible, meaning an upgraded node cannot downgrade without removing the database and syncing from scratch.

Warning

Mainnet operators MUST upgrade to v2.0.0 prior to the fork epoch!

Fork Schedule

Network Upgrade Alan Fork
Mainnet ❗ Mandatory ⌛ Nov. 25 12:00:23 UTC (Epoch 327,375)
Holesky 👌 Recommended Already forked (Epoch 84,600)

Docker Tag

docker pull ssvlabs/ssv-node:v2.0.0

Introducing Alan

Alan is the most significant SSV upgrade to date, poised to tackle scalability by dramatically reducing resource usage.

Alan changes the way a committee (group of operators) perform their validators's duties. Rather than performing every attestation and sync committee duty separately, a committee would perform them all together.

For more, see Meet Alan.

Other Changes

On top of Alan support, this release includes many fixes and improvements.

Features

  • feat: custom graffiti (#1600)
  • feat: duty stopping (#1743)
  • feat: (p2p) drop bad or irrelevant peers (#1707)
  • spec alignment to dev branch (#1639)

Optimizations

  • perf: (eventsyncer) don't remove QBFT instances to speed up historical syncing (#1615)
    • should significantly reduce how long it takes to sync from scratch
  • perf: batch-save validator metadata (#1392)

Bugs

  • fix: (discovery) publish latest ENR despite ongoing publish (#1740)
  • fix: minor refactor ECDSAPrivFromInterface to remove ScalarBaseMult (#1734)
  • fix: (eventhandler) pubkey & id uniqueness check in OperatorAdded (#1729)
  • fix: Erroneous Threshold Logic in Key Splitting Mechanism (#1737)
  • fix: (differ) incorrect diffs
  • fix: run local nodes using local events (#1688)
  • fix: ekm deadlock (#1675)
  • fix: (validation) MessageCounts check (#1652)
  • fix: replace cornelk/hashmap with sync.Map (#1683)
  • fix: (queue) nil return condition in Pop (#1678)
  • fix: (network/records) panic due to insufficient subnets length (#1804)

v1.3.11

28 Oct 15:01
662f423
Compare
Choose a tag to compare

Caution

THIS VERSION DOES NOT SUPPORT THE ALAN FORK, AND IS ONLY MEANT FOR EMERGENCY ROLLBACK FROM v2.0.0 BEFORE NOVEMBER 25th.

PLEASE UPGRADE TO v2.0.0 INSTEAD

This release is a fallback version to prevent slow rollback in case of emergencies with v2.0.0. This version only improves the syncing speed of the node.

Caution

This database is not compatible with Alan. To downgrade from v2.0.0, first wipe your existing database.

When to use v1.3.11?

Network Priority
Mainnet ⚠️ Never, unless the upgrade to v2.0.0 failed before the fork (November 25th)
Holesky ⚠️ Never, it's already past the Alan fork

Docker Tag

docker pull ssvlabs/ssv-node:v1.3.11

Changes

  • optimization: (eventsyncer) don't remove QBFT instances to speed up sync #1824

v1.3.10

15 Oct 09:41
027ec07
Compare
Choose a tag to compare

⚠️ This release is for Mainnet only, you should not run it on Holesky which is already past the Alan fork ⚠️

This releases rolls out only three features from the upcoming Alan Mainnet release, in preparation for it.

After enough of the network upgrades to v1.3.10, SSV nodes should find peers significantly faster, which is crucial for the Alan fork to pass smoothly.

Upgrade Priority

Network Priority
Mainnet 👍 Strongly recommended
Holesky ⚠️ Don't upgrade, stay on v2.0.0-unstable.2

Docker Tag

docker pull ssvlabs/ssv-node:v1.3.10

When Alan?

The next release (v2.0.0) should schedule the Alan fork on Mainnet 🤞

Changes

  • Upgraded discovery mechanism in preparation for the upcoming Alan release (#1771)
  • Custom graffiti (#1569)
  • Build blocks with the new v3 Beacon API endpoint (#1569)
  • Drop bad or irrelevant peers (#1730)

v2.0.0-unstable.0

23 Sep 18:35
aafa85e
Compare
Choose a tag to compare
v2.0.0-unstable.0 Pre-release
Pre-release

⚠️ You should not run this release on mainnet operators ⚠️

This release introduces support for the Alan fork to the SSV Holesky testnet.

Note: Alan databases are not backwards-compatible, meaning an upgraded node cannot downgrade without removing the database and syncing from scratch.

Upgrade Priority

Network Priority Alan Fork
Holesky Mandatory Oct. 8th 12:00 UTC (Epoch 84,600)
Mainnet Don't upgrade ⚠️ TBD

Docker Tag

docker pull ssvlabs/ssv-node:v2.0.0-unstable.0

Intoducing Alan

Alan is the most significant SSV upgrade to date, poised to tackle scalability by dramatically reducing resource usage.

Alan changes the way a committee (group of operators) perform their validators's duties. Rather than performing every attestation and sync committee duty separately, a committee would perform them all together.

For more, see Meet Alan.

Other Changes

On top of Alan support, this release includes many fixes and improvements.

Features

  • feat: custom graffiti (#1600)
  • feat: duty stopping (#1743)
  • feat: (p2p) drop bad or irrelevant peers (#1707)
  • spec alignment to dev branch (#1639)

Optimizations

  • perf: (eventsyncer) don't remove QBFT instances to speed up historical syncing (#1615)
    • should significantly reduce how long it takes to sync from scratch
  • perf: batch-save validator metadata (#1392)

Bugs

  • fix: (discovery) publish latest ENR despite ongoing publish (#1740)
  • fix: minor refactor ECDSAPrivFromInterface to remove ScalarBaseMult (#1734)
  • fix: (eventhandler) pubkey & id uniqueness check in OperatorAdded (#1729)
  • fix: Erroneous Threshold Logic in Key Splitting Mechanism (#1737)
  • fix: (differ) incorrect diffs
  • fix: run local nodes using local events (#1688)
  • fix: ekm deadlock (#1675)
  • fix: (validation) MessageCounts check (#1652)
  • fix: replace cornelk/hashmap with sync.Map (#1683)
  • fix: (queue) nil return condition in Pop (#1678)