Releases: ssvlabs/ssv
v2.3.1
This release replaces v2.3.0 including a hotfix for operators running without any validators.
This release introduces two major features to enhance validator safety and improve performance.
Latest SSV release requires Pectra-compatible versions of Execution and Consensus clients on your setup. To ensure smooth experience, we suggest running latest versions of all clients.
Warning
For operators running Lighthouse
Mainnet operators using Lighthouse as the only Beacon endpoint should not upgrade to v2.3.1
If you have 2+ Beacon endpoints, one of which Lighthouse, your node will work properly.
Technical context
We've discovered that latest stable Lighthouse v6.0.1
does not respond correctly to GET calls to v2/validator/aggregate_attestation
specifically.
This was fixed in v7.0.0-beta
pre-release, which is not suitable for Mainnet. Once the v7.0.0
is released for Mainnet users — you can safely upgrade to SSV v2.3.1
.
Upgrade Priority
Network | Priority |
---|---|
Mainnet | 👍 Recommended |
Holesky | 👍 Recommended |
Hoodi | 👍 Recommended |
Doppleganger Protection - Docs
Doppelganger protection prevents your operator from proposing/attesting for validators, until at least 2 offline epochs or quorum from the other operators have been observed. This protection kicks in for all validators on startup and then only for newly registered validators.
If you wish to enable it, set the following environment variable:
ENABLE_DOPPELGANGER_PROTECTION=true
or enable it in your config.yaml
file:
EnableDoppelgangerProtection: true
To make Doppelganger protection work with Teku, you must also run your beacon node with:
--beacon-liveness-tracking-enabled=true
This flag is required for the SSV node to detect validator liveness via the Beacon Node.
✅ What to Expect After Enabling
- The node will wait ~3 epochs to ensure each validator is not already active on the Ethereum network.
- If no activity is detected, the validator is marked safe to sign.
- Validators can also be marked safe immediately if a post-consensus quorum is reached by the validator's operator committee.
🔁 On node restart, Doppelganger protection is reset, and the safety check process starts again.
Weighted Attestation Data (WAD) - Docs
Improves attestation accuracy by scoring responses from multiple Beacon nodes based on epoch and slot proximity. Adds slight latency to duties but includes safeguards (timeouts, retries). Ineffective with only one Beacon node. Most effective with more Beacon nodes and WithParallelSubmissions
enabled.
Configuration:
YAML:
eth2:
BeaconNodeAddr: http://localhost:5052;http://localhost:5053 # Must include 2+ nodes
WithWeightedAttestationData: true # Enables WAD
WithParallelSubmissions: true # (Recommended) Sends duties to all nodes concurrently
ENV:
BEACON_NODE_ADDR=http://localhost:5052;http://localhost:5053
WITH_WEIGHTED_ATTESTATION_DATA=true
WITH_PARALLEL_SUBMISSIONS=true
⚠️ WAD is disabled by default. It has no effect with only one Beacon node. Parallel submissions improve performance but are optional.
Docker Image
docker pull ssvlabs/ssv-node:v2.3.0
🚀 Features
- Hoodi Network Support
This verison adds network configs forhoodi
ssv network. To run on hoodi setssv.Network
tohoodi
or use environment variableNETWORK=hoodi
. - Electra Fork Support
Added support for the upcoming Electra fork.
NOTE: Fully prepare for Electra fork by updating your Ethereum execution and consensus nodes and MEV-boost. - Weighted Attestation Data
Introduced weighted attestation selection logic to improve performance and block inclusion reliability. - Doppelganger Protection
Implemented detection mechanism to prevent validator key reuse across multiple nodes. To enable check the docs. - Scored P2P Discovery
Improved peer discovery by scoring peers for more reliable and efficient connections.
🛠 Improvements
- Committee Concurrency Handling
Improved internal concurrency logic for better committee execution and stability under load. - Beacon Client
Enhanced concurrency safety in tests and fixed multiple race conditions. - Discovery Protocol
Increased retry interval to reduce network noise and improve connection stability. - Event Syncing
Improved syncing logic to avoid duplicate or stale events. - Genesis Version Handling
goclient
now fetches the genesis version from config to maintain consistency.
🐛 Bug Fixes
- Fixed cache validation for
GetAttestationData
. - Corrected Electra fork epoch handling and updated spec expectations.
- Resolved race conditions in P2P and goclient hooks.
- Filtered out past-slot duties to prevent execution errors.
- Fixed flaky and unreliable unit tests.
📌 Notes
- No breaking DB changes were introduced, but protocol-level changes (Electra) may require all components to be upgraded.
- Please ensure all nodes are updated ahead of the Electra fork to avoid missed duties or inconsistent behavior.
What's Changed
- fix commit history in stage by @y0sher in #2024
- chore(networkconfig): remove old SSV Labs bootnodes by @vaclav-ssvlabs in #1999
- main -> stage: merge hotfix back to stage by @y0sher in #2027
- Fix duplicate API calls in GetAttestationData due to race between cache check and singleflight registration by @MatusKysel in #2029
- migrations: enhance sanity check in migration_5 by @iurii-ssv in #2006
- feat: support of electra fork by @MatusKysel in #2007
- fix: conditional handling of Electra fork epoch by @moshe-blox in #2039
- fix: update expectedElectra value in TestCheckForkValues by @moshe-blox in #2040
- Add genesis version from config to goclient by @julienh-ssv in #2044
- Update unit-test to fix unreliable test issue #2013 by @julienh-ssv in #2043
- fix: Resolve race condition in goclient tests by @julienh-ssv in #2047
- fix(GoClient) - fix race condition by @oleg-ssvlabs in #2048
- feat(attestation data) - Weighted attestation data by @oleg-ssvlabs in #2018
- regenerate mocks by @iurii-ssv in #2009
- chore(deps): bump codecov/codecov-action from 3 to 5 by @dependabot in #2019
- chore(deps): bump actions/setup-go from 4 to 5 by @dependabot in #2020
- chore(deps): bump actions/checkout from 2 to 4 by @dependabot in #2021
- Disable e2e CI workflow triggers by @oleg-ssvlabs in #2052
- hotfix: allow signing
*electra.AggregateAndProof
by @nkryuchkov in #2051 - fix race condition on p2p setup by @MatusKysel in #2053
- feat: Doppelganger by @olegshmuelov in #2036
- chore(deps): bump actions/setup-go from 4 to 5 by @dependabot in #2058
- chore(deps): bump actions/checkout from 2 to 4 by @dependabot in #2057
- committee: improve concurrency handling by @iurii-ssv in #2035
- chore(dependabot) - change dependabot target branch to 'Stage' by @oleg-ssvlabs in #2062
- feat(p2p): scored discovery by @iurii-ssv in #1949
- bugfix: filter out duties from past slots by @MatusKysel in #2069
- utils: fix flaky tests by @iurii-ssv in #1863
- beacon-client: fix concurrency issues in tests by @iurii-ssv in #2049
- fix: double eventsyncer stalenessThreshold by @moshe-blox in #2046
- fix(weighted-attest-data): use muticlient event listener when Weighted Attest Data feature is off by @oleg-ssvlabs in #2085
- chore(discovery): double discovery interval by @moshe-blox in #2089
- fix: bump spec to v1.1.3 and add pectra block size check by @y0sher in #2088
- Hoodi by @MatusKysel in #2086
- perf: weighted attestation data enhancements by @oleg-ssvlabs in #2106
- Add Doppelganger protection usage instructions by @olegshmuelov in #2115
- docs: add doc for weighted attestations by @y0sher in #2116
New Contributors
- @julienh-ssv made their first contribution in #2044
Full Changelog: v2.2.1...v2.3.0
- stage -> main by @moshe-blox in #2038
- fix: typos in documentation files by @maximevtush in #2031
- bugfix: fil...
v2.3.0
This release includes features to enhance validaor safety and improve performance.
Important notes: please follow the docs closely for using new features
Feature: Doppleganger Protection - full docs
Doppelganger (DG) protection is disabled by default.
To enable it in your SSV node, set the following environment variable:
ENABLE_DOPPELGANGER_PROTECTION=true
or enable it in your config.yaml
file:
EnableDoppelgangerProtection: true
To make Doppelganger protection work with Teku, you must also run your beacon node with:
--beacon-liveness-tracking-enabled=true
This flag is required for the SSV node to detect validator liveness via the Beacon Node.
✅ What to Expect After Enabling
- The node will wait ~3 epochs to ensure each validator is not already active on the Ethereum network.
- If no activity is detected, the validator is marked safe to sign.
- Validators can also be marked safe immediately if a post-consensus quorum is reached by the validator's operator committee.
🔁 On node restart, Doppelganger protection is reset, and the safety check process starts again.
Feature: Weighted Attestation Data (WAD) - full docs
Improves attestation accuracy by scoring responses from multiple Beacon nodes based on epoch and block proximity. Adds slight latency to duties but includes safeguards (timeouts, retries). Most effective with 2+ Beacon nodes and Parallel Submissions enabled.
Configuration:
YAML:
eth2:
BeaconNodeAddr: http://localhost:5052;http://localhost:5053 # Must include 2+ nodes
WithWeightedAttestationData: true # Enables WAD
WithParallelSubmissions: true # (Recommended) Sends duties to all nodes concurrently
ENV:
BEACON_NODE_ADDR=http://localhost:5052;http://localhost:5053
WITH_WEIGHTED_ATTESTATION_DATA=true
WITH_PARALLEL_SUBMISSIONS=true
⚠️ WAD is disabled by default. It has no effect with only one Beacon node. Parallel submissions improve performance but are optional.
Upgrade Priority
Network | Priority |
---|---|
Mainnet | 👍 Recommended |
Holesky | 👍 Recommended |
Hoodi | 👍 Recommended |
Docker Image
docker pull ssvlabs/ssv-node:v2.3.0
🚀 Features
- Hoodi Network Support
This verison adds network configs forhoodi
ssv network. To run on hoodi setssv.Network
tohoodi
or use environment variableNETWORK=hoodi
. - Electra Fork Support
Added support for the upcoming Electra fork.
NOTE: Fully prepare for Electra fork by updating your Ethereum execution and consensus nodes and MEV-boost. - Weighted Attestation Data
Introduced weighted attestation selection logic to improve performance and block inclusion reliability. - Doppelganger Protection
Implemented detection mechanism to prevent validator key reuse across multiple nodes. To enable check the docs. - Scored P2P Discovery
Improved peer discovery by scoring peers for more reliable and efficient connections.
🛠 Improvements
- Committee Concurrency Handling
Improved internal concurrency logic for better committee execution and stability under load. - Beacon Client
Enhanced concurrency safety in tests and fixed multiple race conditions. - Discovery Protocol
Increased retry interval to reduce network noise and improve connection stability. - Event Syncing
Improved syncing logic to avoid duplicate or stale events. - Genesis Version Handling
goclient
now fetches the genesis version from config to maintain consistency.
🐛 Bug Fixes
- Fixed cache validation for
GetAttestationData
. - Corrected Electra fork epoch handling and updated spec expectations.
- Resolved race conditions in P2P and goclient hooks.
- Filtered out past-slot duties to prevent execution errors.
- Fixed flaky and unreliable unit tests.
📌 Notes
- No breaking DB changes were introduced, but protocol-level changes (Electra) may require all components to be upgraded.
- Please ensure all nodes are updated ahead of the Electra fork to avoid missed duties or inconsistent behavior.
What's Changed
- fix commit history in stage by @y0sher in #2024
- chore(networkconfig): remove old SSV Labs bootnodes by @vaclav-ssvlabs in #1999
- main -> stage: merge hotfix back to stage by @y0sher in #2027
- Fix duplicate API calls in GetAttestationData due to race between cache check and singleflight registration by @MatusKysel in #2029
- migrations: enhance sanity check in migration_5 by @iurii-ssv in #2006
- feat: support of electra fork by @MatusKysel in #2007
- fix: conditional handling of Electra fork epoch by @moshe-blox in #2039
- fix: update expectedElectra value in TestCheckForkValues by @moshe-blox in #2040
- Add genesis version from config to goclient by @julienh-ssv in #2044
- Update unit-test to fix unreliable test issue #2013 by @julienh-ssv in #2043
- fix: Resolve race condition in goclient tests by @julienh-ssv in #2047
- fix(GoClient) - fix race condition by @oleg-ssvlabs in #2048
- feat(attestation data) - Weighted attestation data by @oleg-ssvlabs in #2018
- regenerate mocks by @iurii-ssv in #2009
- chore(deps): bump codecov/codecov-action from 3 to 5 by @dependabot in #2019
- chore(deps): bump actions/setup-go from 4 to 5 by @dependabot in #2020
- chore(deps): bump actions/checkout from 2 to 4 by @dependabot in #2021
- Disable e2e CI workflow triggers by @oleg-ssvlabs in #2052
- hotfix: allow signing
*electra.AggregateAndProof
by @nkryuchkov in #2051 - fix race condition on p2p setup by @MatusKysel in #2053
- feat: Doppelganger by @olegshmuelov in #2036
- chore(deps): bump actions/setup-go from 4 to 5 by @dependabot in #2058
- chore(deps): bump actions/checkout from 2 to 4 by @dependabot in #2057
- committee: improve concurrency handling by @iurii-ssv in #2035
- chore(dependabot) - change dependabot target branch to 'Stage' by @oleg-ssvlabs in #2062
- feat(p2p): scored discovery by @iurii-ssv in #1949
- bugfix: filter out duties from past slots by @MatusKysel in #2069
- utils: fix flaky tests by @iurii-ssv in #1863
- beacon-client: fix concurrency issues in tests by @iurii-ssv in #2049
- fix: double eventsyncer stalenessThreshold by @moshe-blox in #2046
- fix(weighted-attest-data): use muticlient event listener when Weighted Attest Data feature is off by @oleg-ssvlabs in #2085
- chore(discovery): double discovery interval by @moshe-blox in #2089
- fix: bump spec to v1.1.3 and add pectra block size check by @y0sher in #2088
- Hoodi by @MatusKysel in #2086
- perf: weighted attestation data enhancements by @oleg-ssvlabs in #2106
- Add Doppelganger protection usage instructions by @olegshmuelov in #2115
- docs: add doc for weighted attestations by @y0sher in #2116
New Contributors
- @julienh-ssv made their first contribution in #2044
Full Changelog: v2.2.1...v2.3.0
v2.2.0-unstable.1 (Pectra)
This release introduces support for the upcoming Ethereum Pectra fork on Hoodi.
Warning
Prior to upgrading SSV, the Ethereum clients and mev-boost
must be upgraded to their respective Pectra on Hoodi releases.
Upgrade Priority
Network | Priority | Pectra Fork |
---|---|---|
Hoodi | 🟢 Mandatory | Wed. March 26, 2025 07:37:12 UTC (epoch 2048) |
Holesky | 🟢 Recommended | Already forked |
Sepolia | 🟢 Recommended | Already forked |
Mainnet | 🔴 Don't upgrade | Not scheduled yet |
Docker Image
docker pull ssvlabs/ssv-node:v2.2.0-unstable.1
v2.2.2-unstable.0 (Pectra)
This release introduces support for the upcoming Ethereum Pectra fork on Holesky.
Warning
Prior to upgrading SSV, the Ethereum clients and mev-boost
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
This release includes awaited features and bug fixes that should improve performance!
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
orETH_1_ADDR
. It supports semi-colon (;
) seperated addresses. ex:ws://localhost:8546;ws://localhost:8547
orhttp://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
- @zhoufanjin made their first contribution in #1976
Full Changelog: v2.1.1...v2.2.0
v2.1.1
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
Full Changelog: v2.1.0...v2.1.1
v2.1.0
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
- feat(metrics): implement OTeL metrics across all packages
- feat: do not crash on unsynced slots/blocks if withing given limits
Performance
- perf(registry/storage): don't lock in-memory shares storage for db ops
- feat(validator): listen and get metadata only for committee validators
- perf(exporter): decode json payload via buffer
Fixes
v2.0.2
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
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
- Chore: Set committee runner log to debug level by @anatolie-ssv in #1895
- Fix: Add discovery ID to the mainnet bootnode by @moshe-blox in #1868
- Fix: Change msg types priorities (consensus que) by @MatusKysel in #1891
- Fix: First slot proposals in message validation by @olegshmuelov in #1892
- Fix: MinParticipationEpoch protection by @olegshmuelov in #1902
Full Changelog: v2.0.0...v2.0.1
v2.0.0
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
withsync.Map
(#1683) - fix: (queue) nil return condition in Pop (#1678)
- fix: (network/records) panic due to insufficient subnets length (#1804)