Releases: stakewise/v3-operator
Release list
v4.2.3
Release summary
Mostly polish around funding, withdrawals and consolidations — tighter checks and a few edge cases handled.
Added new env-vars command. Run it to see every environment variable the operator supports. Handy for advanced tuning — for example, setting the event log window length for eth_getLogs.
What's Changed
- Exclude CL-invisible validators without 0x02 pending deposits from funding by @cyc60 in #784
- Fix partial withdrawal activation epoch boundary by @cyc60 in #795
- Fix partial capacity accounting for non-compounding validator exits by @cyc60 in #796
- Add env-vars command listing supported environment variables by @evgeny-stakewise in #776
- Exclude consolidation source validators from withdrawal selection by @cyc60 in #797
- Resolve pending consolidations against all vault validators by @cyc60 in #800
- Cache withdrawals block fallback by @evgeny-stakewise in #791
- Reject pending validators as consolidation targets by @cyc60 in #803
- Verify source withdrawal address matches the vault by @cyc60 in #804
- Defer funding instead of blocking registration when interval has not passed by @cyc60 in #785
- Reject empty source public keys file in consolidate command by @cyc60 in #801
- Handle consolidation errors raised during manager creation by @cyc60 in #802
- Add withdrawals tests by @cyc60 in #806
- Release v4.2.3 by @cyc60 in #805
Full Changelog: v4.2.2...v4.2.3
v4.2.2
Release highlights
Fix eth_getLogs failures on Nethermind 1.39.3+
Nethermind 1.39.3 changed eth_getLogs handling: a filter without an explicit toBlock is no longer accepted. Some of the operator's log queries omitted it.
Those queries now go through the shared chunked log helper, which always sets toBlock and pages by EVENTS_BLOCKS_RANGE_INTERVAL. This also fixes hosted RPC providers that cap the block range per logs request.
No configuration change is needed — upgrading is enough.
(#792)
What's Changed
- Use vault multicall in get_withdrawable_assets by @evgeny-stakewise in #781
- Fix docstring in fetch_pending_deposits_amounts by @evgeny-stakewise in #786
- Exclude slashed validators from funding and consolidation by @cyc60 in #783
- Fetch validator events in chunked block ranges by @cyc60 in #792
- Release v4.2.2 by @cyc60 in #793
Full Changelog: v4.2.1...v4.2.2
v5.0.0.dev5
What's Changed
- Add sub vaults registry by @evgeny-stakewise in #655
- Fix meta vault rewards event by @evgeny-stakewise in #657
- Add update redeemable positions command by @cyc60 in #630
- Add withdrawals to cover redemption assets by @evgeny-stakewise in #648
- Upd checker and redeemer addresses by @evgeny-stakewise in #668
- Fix missing redemption assets arg by @evgeny-stakewise in #670
- Bump sw-utils v0.12.10 by @evgeny-stakewise in #672
- Bump sw-utils v0.12.11, update meta vault IDs handling by @evgeny-stakewise in #680
- Fix: convert vault_id to hex by @evgeny-stakewise in #681
- Rename OsTokenPosition.amount to leaf_shares by @cyc60 in #683
- Add zero-check for sub vault redemption assets by @evgeny-stakewise in #687
- Update packages by @cyc60 in #704
- Process redeemer by @cyc60 in #664
- Update v5 contracts addresses by @cyc60 in #710
- Meta vaults: Support new subgraph scheme by @cyc60 in #712
- Update positions checks by @cyc60 in #715
- Update-redeemable-positions: Filter vaults with v1 Os Token config by @cyc60 in #716
- Fix trivy scan by @tsudmi in #719
- Process redeemer harvest by @cyc60 in #720
- Refactor distribute meta vault redemptions by @evgeny-stakewise in #725
- Remove meta-vault redemptions by @evgeny-stakewise in #729
- Speedup graph_get_allocators by @evgeny-stakewise in #732
- Reserve redemption assets by @evgeny-stakewise in #726
- Cache osToken processed shares by @evgeny-stakewise in #734
- Fix concurrency in ostoken positions cache by @evgeny-stakewise in #741
- Skip unharvested vaults in process-redeemer, add OS_TOKEN_REDEEMER_CHUNK_SIZE setting by @evgeny-stakewise in #740
- Merge master branch into v5-release by @cyc60 in #755
- Refactor redemption modules by @cyc60 in #756
- Add --dry-run to process-redeemer command by @evgeny-stakewise in #757
- Extract PositionsMerkleTree class by @evgeny-stakewise in #758
- Extract redemption execution into src/redemptions/execution.py by @evgeny-stakewise in #759
- Add execution node and wallet balance checks to process-redeemer startup by @evgeny-stakewise in #760
- Skip reverting positions instead of aborting redemption round by @evgeny-stakewise in #761
- Add position index for redemption logging by @evgeny-stakewise in #763
- Restore update_vaults_state with batched multicall by @evgeny-stakewise in #764
- Skip redemption positions where LTV > 1 by @evgeny-stakewise in #766
- Merged changes from master by @cyc60 in #773
- Handle contract custom errors in redemptions by @evgeny-stakewise in #782
Full Changelog: v4.2.1...v5.0.0.dev5
v4.2.1
Release highlights
Pending deposits are now taken into account when selecting validators to exit
When the operator needs to exit validators to cover withdrawals, it picks the ones with the
lowest balance first, so that as little stake as possible leaves the beacon chain.
After Pectra, a top-up deposit does not show up in the validator balance right away — it waits
in the beacon chain deposit queue. A validator with a large queued top-up therefore looked like
an ordinary 32 ETH validator and could be exited first. Its queued funds were later returned to
the vault and had to go through the deposit queue again from the very beginning.
If, for example, a validator has a large top-up waiting in the queue while its consensus balance
is still ~32 ETH, it could be exited before validators that hold no queued funds at all — and the
queued amount would lose its place in line.
The operator now adds pending deposits to the balance it sorts by, so validators with queued
top-ups are exited last. They are still exitable if nothing else is available. Exit queue
accounting is unchanged — an exit still counts only the currently active balance.
(#777)
Default max validator balance reduced: 1945 ETH → 300 ETH
The default cap on how much a single 0x02 validator is topped up to is now 300 ETH on Ethereum
(previously 1945 ETH). Assets above the cap go to the next validator, so vault stake is spread
across more validators instead of being concentrated in a few large ones.
The benefit is a smaller impact on the vault APR when a validator exits: the assets of an exited
validator have to pass through the deposit queue again, and a smaller validator means a smaller
amount waiting there.
You can still choose your own limit with the --max-validator-balance-gwei option or the
MAX_VALIDATOR_BALANCE_GWEI environment variable — raise it as your vault grows, so you don't
end up running more validators than you need.
The Gnosis default (1800 mGNO) is unchanged.
(#779)
What's Changed
- Add Docker smoke test running init command in CI by @evgeny-stakewise in #770
- Fix outdated web3 exception handling by @evgeny-stakewise in #771
- Remove is_alchemy_used check by @evgeny-stakewise in #772
- Decode custom errors on transaction failures by @evgeny-stakewise in #774
- Reduce default max validator balance to 300 ETH by @evgeny-stakewise in #779
- Account for pending deposits in exit validator selection by @cyc60 in #777
- Release v4.2.1 by @cyc60 in #778
Full Changelog: v4.2.0...v4.2.1
v4.2.0
Release Summary
Meta vault support has been updated for the v5 contracts release, which lets any user run their own meta vaults.
More reliable transaction handling — a new transaction manager prevents nonce collisions and stalled transactions from silently blocking the operator, so your vault keeps running without manual intervention.
What's Changed
- Update auto consolidation message by @cyc60 in #742
- Use vault.can_harvest to decide meta vault state update by @evgeny-stakewise in #744
- Rework meta vaults to v5 release by @evgeny-stakewise in #746
- Re-raise ClickException in command error handlers by @evgeny-stakewise in #747
- Refactor naming in validators by @evgeny-stakewise in #738
- Updated project description and deps by @evgeny-stakewise in #749
- Refactor validators/execution.py by @evgeny-stakewise in #750
- Use latest release in install.sh instead of hardcoded version by @evgeny-stakewise in #752
- Remind operator to upgrade when newer release is available by @evgeny-stakewise in #753
- Split commands and contracts between packages by @cyc60 in #754
- Log metrics server address by @evgeny-stakewise in #751
- Claim fee splitter rewards for meta vaults by @cyc60 in #748
- Clarify consolidate command help text by @evgeny-stakewise in #762
- Bump sw-utils v0.13.2 and fix CI security scans by @evgeny-stakewise in #765
- Add module name to verbose plain logs by @evgeny-stakewise in #768
- Add TransactionManager to handle stalled tx by @evgeny-stakewise in #767
- Fix missing ABIs in binary build by @evgeny-stakewise in #769
Full Changelog: v4.1.14...v4.2.0
v4.1.14
Summary
Fixed a bug where the operator would register a brand-new validator instead of topping up one that had just been registered.
The operator is supposed to fund freshly registered 0x02 (compounding) validators while their deposits are still being processed by the CL pending deposits queue. Due to a bug, those validators were being silently skipped — so instead of topping them up, the operator would register an additional new validator.
Affected: operators running 0x02 validators. Upgrade recommended.
What's Changed
- Allow funding for unregistered consensus validators by @cyc60 in #735
- Release v4.1.14 by @cyc60 in #736
Full Changelog: v4.1.13...v4.1.14
v4.1.13
Summary
This release focuses on restoring binary builds, which broke starting with v4.1.11 and are now fixed.
What's Changed
- Validate source_address on pending EL withdrawal/consolidation requests by @evgeny-stakewise in #731
- Update docker image by @cyc60 in #733
- Fix release binary builds (Windows, Linux, macOS) by @evgeny-stakewise in #730
Full Changelog: v4.1.12...v4.1.13
v4.1.12
Summary
This release fixes the process-meta-vaults command for legacy meta vaults — those still on a version below 6, which do not yet have a sub-vaults registry. Meta vaults on version 6 or later require operator release v4.2.0 or above.
What's Changed
- Speedup docker build in CI by @evgeny-stakewise in #723
- Upgraded subgraph vaults schema, bump v4.1.12 by @evgeny-stakewise in #728
Full Changelog: v4.1.11...v4.1.12
v5.0.0.dev3
What's Changed
- Bump v4.1.8 by @evgeny-stakewise in #667
- Consolidation target by @cyc60 in #644
- Upd checker and redeemer addresses by @evgeny-stakewise in #668
- Speed up getting last event by @evgeny-stakewise in #669
- Fix missing redemption assets arg by @evgeny-stakewise in #670
- Add validators manager checks for relayer by @evgeny-stakewise in #671
- Add envvar for --network and --vault CLI options by @evgeny-stakewise in #674
- Bump sw-utils v0.12.10 by @evgeny-stakewise in #672
- Remove ValidatorsRegistrationMode by @evgeny-stakewise in #673
- Close sessions: monkey patch by @cyc60 in #676
- Consolidation balance by @cyc60 in #678
- Bump sw-utils v0.12.11, update meta vault IDs handling by @evgeny-stakewise in #680
- Fix: convert vault_id to hex by @evgeny-stakewise in #681
- Rename OsTokenPosition.amount to leaf_shares by @cyc60 in #683
- Check bls.Verify value by @cyc60 in #686
- Add zero-check for sub vault redemption assets by @evgeny-stakewise in #687
- Refactor startup checks into domain-specific modules by @cyc60 in #692
- Update trivy by @cyc60 in #694
- Add tests for process_funding by @evgeny-stakewise in #690
- Add exception_count metric by @evgeny-stakewise in #697
- Bump setup-trivy@v0.2.6 by @evgeny-stakewise in #698
- Use graph cursor pagination by @cyc60 in #699
- Pin github actions commit hashes by @evgeny-stakewise in #701
- Rename nodes to nodewise by @evgeny-stakewise in #702
- Update packages by @cyc60 in #704
- Process redeemer by @cyc60 in #664
- Update v5 contracts addresses by @cyc60 in #710
- Meta vaults: Support new subgraph scheme by @cyc60 in #712
- Update positions checks by @cyc60 in #715
- Update-redeemable-positions: Filter vaults with v1 Os Token config by @cyc60 in #716
- Fix trivy scan by @tsudmi in #719
Full Changelog: v5.0.0.dev2...v5.0.0.dev3
v4.1.11
This release brings a handful of minor improvements, but there’s one update we think you’ll find particularly useful: the new exception_count metric!
When something goes wrong inside the Operator, the process won’t crash. Instead, it logs the error and moves on to the next block. The exception_count metric helps you keep an eye on these errors — if you notice a spike, it could be a sign of trouble.
Use this metric to enhance your monitoring and set up alerts to catch potential issues early.
What's Changed
- Check bls.Verify value by @cyc60 in #686
- Refactor startup checks into domain-specific modules by @cyc60 in #692
- Update trivy by @cyc60 in #694
- Add tests for process_funding by @evgeny-stakewise in #690
- Add exception_count metric by @evgeny-stakewise in #697
- Bump setup-trivy@v0.2.6 by @evgeny-stakewise in #698
- Use graph cursor pagination by @cyc60 in #699
- Pin github actions commit hashes by @evgeny-stakewise in #701
- Rename nodes to nodewise by @evgeny-stakewise in #702
- Fix CI cache: correct path, step order, and cache-hit check by @evgeny-stakewise in #707
- Bump v4.1.11 by @evgeny-stakewise in #722
Full Changelog: v4.1.10...v4.1.11