Highlights
Faster startup: no more full-history event scans (#840, #842, #843, #848, #851)
A fresh operator no longer walks the chain from the keeper genesis block to build its caches. Each network config now carries pinned checkpoints:
- Vault validators are seeded from a network-wide IPFS dump (#842). The vault's
ValidatorRegisteredevents up to the dump block are loaded in a single fetch, and the validators checkpoint starts there instead of at genesis. - Oracle config (
ConfigUpdated) scans start from a release checkpoint, falling back to the pinned last-event block when nothing newer exists (#840). - Exit signatures (
ExitSignaturesUpdated) do the same on a cold cache (#843). Older rotations are long finalized and already synced by oracles, so they don't gate a new rotation. - Rewards (
RewardsUpdated) lookback is limited to one month instead of sweeping to genesis when no recent event is found (#851). - Removed the unreachable genesis-block scan in
ProcessedSharesCache(#848).
Net effect: much lower RPC load and shorter time-to-ready on first run, especially on providers with strict getLogs limits.
Withdrawals: reward accrual buffer (#846)
Queued exit assets keep accruing rewards while a withdrawal is pending on the consensus layer (~27h for a partial withdrawal, up to ~11 days for a full exit), so requesting the exact shortfall always left a new tiny one behind — an endless trickle of dust withdrawals. Withdrawal requests are now padded with a buffer of 0.1% of the exit queue value, with a floor and a 1 ETH cap. Two new environment variables:
MIN_WITHDRAWAL_BUFFER_GWEI(default10000) — minimum padding added on top of the shortfall, capped at 1 ETH.MISSING_ASSETS_THRESHOLD_GWEI(default1) — minimum exit queue shortfall that triggers a withdrawal, capped at 0.01 ETH to stay below the oracle's own exit threshold. Validated at startup.
Operator version telemetry (#838)
The operator reports its version to the StakeWise backend once every 24h (TELEMETRY_INTERVAL), signed by the vault validators manager wallet. Opt out with --disable-telemetry / DISABLE_TELEMETRY; it is disabled automatically in relayer mode, where the relayer holds the manager role.
Other notable changes
- Wait for the execution client to import the latest consensus head, fixing intermittent
header not founderrors at the chain tip (#850) - Verify deposit signatures returned by remote signers (#836)
- Remove stale web3signer key files on export; fix
disable-validatorsenv var names (#837)
What's Changed
- Add iter_validators_by_ids by @evgeny-stakewise in #834
- Verify remote signer deposit signatures by @cyc60 in #836
- Remove stale web3signer key files on export; fix disable-validators env var names by @cyc60 in #837
- Report operator version to StakeWise backend by @evgeny-stakewise in #838
- Pass chain_id to complex_protocol_list request by @cyc60 in #839
- Add oracle config checkpoints by @evgeny-stakewise in #840
- Bump sw-utils to v0.14.0 by @cyc60 in #841
- Load vault validators from ipfs dump by @evgeny-stakewise in #842
- Bump sw-utils to v0.14.4 by @cyc60 in #845
- Add exit signatures checkpoint to network config by @evgeny-stakewise in #843
- Remove unreachable genesis block event scan in ProcessedSharesCache by @evgeny-stakewise in #848
- Pad validator withdrawals with a reward accrual buffer by @cyc60 in #846
- Wait for execution client to import latest consensus head by @evgeny-stakewise in #850
- Limit RewardsUpdated scan to last month by @evgeny-stakewise in #851
- Release v5.1.0 by @cyc60 in #849
Full Changelog: v5.0.0...v5.1.0