Quarantine
Quarantine is a safety buffer inside Lido's LazyOracle. When a vault's reported total value jumps by more than expected, the oracle holds the increase in a separate state instead of letting it land in vault accounting straight away. The held amount is released either over time or once subsequent reports confirm the increase is real.
For the underlying mechanic, see Quarantine mechanics (Lido docs). This page summarises the Northstake-facing view.
Why quarantine exists
The quarantine was implemented to prevent oracle attacks.
Most changes to a vault's total value can be verified on-chain through the inOutDelta counter: funding, withdrawals, fees. These flow through normally, and ordinary validator top-ups bypass quarantine entirely.
Some increases can't be verified that way: validator consolidations (EIP-7251), beacon-chain balance jumps, and deposits made outside the vault's normal flow. The oracle can't tell at report time whether such an increase is legitimate, so it holds it in quarantine until it can be confirmed.
When it triggers
Quarantine activates when a report's total value exceeds the previous on-chain total value by more than the LazyOracle's configured maxRewardRatio threshold. The exact value is set by Lido: see the LazyOracle docs for the current parameters.
What it affects
While quarantine is active, the quarantined amount is not counted as usable total value. Any vault operation that depends on the latest oracle report sees the post-quarantine number, including:
- Minting stETH against the vault (less collateral available)
- Withdrawals and rebalancing
- Vault disconnect
Validators continue running normally: quarantine is an accounting buffer, not a freeze on operations.
How it ends
Two release paths:
- Time-based: once the oracle's
quarantinePeriodelapses (capped at 30 days), the held amount is folded into active total value. - Early release: if subsequent reports show the vault's value increases stay within expected reward bounds, the buffer expires before the timer.
VaultHub can also forcibly clear quarantine via removeVaultQuarantine(): a Lido-governance action, not exposed to vault owners. Parameter changes (period length, reward-ratio threshold) are held by Lido's UPDATE_SANITY_PARAMS_ROLE.
Where it shows up in Northstake
to see quarantine status in the UI: when the buffer is active, a Quarantine card appears on the vault page showing the total quarantined amount and the unlock date.
</>to read quarantine status via the API: seegetQuarantineInfo. ReturnsisActive,pendingTotalValueIncrease,startTimestamp,endTimestamp, andtotalValueRemainder.
Related
- Staking vaults → How stVaults work: periodic vault report updates
- Staking and the PDG flow → Consolidations: one of the value changes that can trigger quarantine
- Quarantine mechanics (Lido docs): canonical reference
Updated about 4 hours ago
