Releases: ssvlabs/ssv-network
v2.0.0
Major protocol upgrade introducing ETH-based accounting, effective-balance-aware fee charging, SSV staking, and the one-way migration path from legacy SSV clusters to ETH clusters.
Highlights
- New clusters now pay operator and network fees in ETH instead of SSV.
- ETH cluster accounting is effective-balance-aware via
vUnits, rather than flat validator-count charging. - Effective balance updates are driven by oracle-committed Merkle roots and consumed through
updateClusterBalance. - SSV staking is introduced via
stake,requestUnstake,withdrawUnlocked,claimEthRewards, andsyncFees, withcSSVas the staking receipt token. - Legacy SSV clusters remain supported in restricted compatibility mode and can migrate irreversibly to ETH via
migrateClusterToETH.
Behavioral changes
- ETH clusters are the forward path for new validator operations.
- Legacy SSV clusters remain backward-compatible for removal, exit, liquidation, migration, and EB update flows, but are no longer the primary path for new activity.
- Liquidated ETH clusters can still accept deposits and allow withdrawals as part of the solvency and reactivation model.
- Reactivation can depend on a stale on-chain EB snapshot until the next valid oracle update.
- Migration and reactivation flows can skip removed operators and continue with reduced operator coverage when the remaining configuration is valid.
Assurance and rollout
- Expanded unit, integration, forked-upgrade, invariant, and Echidna coverage across staking, migration, oracle quorum, accounting, fee changes, and reentrancy-sensitive paths.
- Mainnet rollout artifacts, SAFE batch generation, attestation output, smoke tests, and post-upgrade verification tooling are included in this release.
References
Full Changelog: v1.1.1...v1.2.0
v1.2.0
- Permissioned operators: Operator owners can define multiple whitelisted address/external whitelisting contract.
- Update solidity version to 0.8.24
- Update project dependencies
Full Changelog: v1.1.1...v1.2.0
Release Notes: https://github.com/ssvlabs/ssv-network/blob/v1.2.0/RELEASE_NOTES.md
v1.1.1
v1.1.0
What's Changed
- Bulk features: register/remove/exit validators
- Configuration for publishing npm package when generating a release
- Use
ssv-keyssdk to generate shares in tests
ABIs: https://github.com/bloxapp/ssv-network/tree/contract-abi/docs/mainnet/v1.1.0/abi
Full Changelog: v1.0.2...v1.1.0
v1.0.2
What's Changed
- Event ValidatorExited -> indexed owner
- Added permissionless audit report
Full Changelog: v1.0.0-rc4...v1.0.2
v1.0.0-rc4
What's Changed
-
Audit fixes/recommendations
-
Validate a cluster with 0 validators can not be liquidated
-
Deployment process now uses hardhat tasks
-
The DAO can set a maximum operator fee (SSV)
-
Remove the
setRegisterAuthfunction (register operator/validator without restrictions) -
SSVNetworkViewscontract does not throw an error as a way of return. Example: getValidator returns false if the validator is not found -
Contract ABI changes:
- Errors
- New
FeeTooHigh()
- New
- Events
- Changed
OperatorFeeCancellationDeclared(address owner, uint64 operatorId)->OperatorFeeDeclarationCancelled(address owner, uint64 operatorId) - New
OperatorMaximumFeeUpdated(uint64 maxFee)
- Changed
- Functions
- Removed
getRegisterAuth(address userAddress) returns(bool authOperators, bool authValidators)
setRegisterAuth(address userAddress, bool authOperator, bool authValidator) - New
updateMaximumOperatorFee(uint64 maxFee) - Updated
withdrawOperatorEarnings(uint64 operatorId)->withdrawAllOperatorEarnings(uint64 operatorId)
- Removed
Full Changelog: v1.0.0-rc3...v1.0.0-rc4