📊 Applying Report Guide
Before minting stETH or performing other operations that depend on current vault state, the protocol needs to ensure that you are working with the latest available data. LazyOracle allows anyone to apply the latest report to a specific vault on demand.
Why apply a fresh report?
Your stVault's state (total value, mintable stETH capacity, health factor) is updated through oracle reports. These reports are published periodically, but applying them to your specific vault is a separate, permissionless action. Fresh data is required for:
- minting stETH,
- withdrawing ETH,
- rebalancing,
- changing tiers,
- resuming beacon deposits,
- partial validator withdrawals,
- settling Lido fees,
- disconnecting the vault.
Many vault operations (except funding and burning shares) will revert if the report is stale. When you are not sure why your operation reverts, apply a fresh report first.
How it works
- The AccountingOracle publishes a Merkle tree root containing data for all vaults
- You get your vault's data and proof from IPFS using the published CID
- You submit the data and proof to the LazyOracle contract
- LazyOracle verifies the proof and updates your vault's state in VaultHub.
This is a permissionless operation — anyone can apply a report to any vault.
using stVaults Web UI
The Web UI automatically applies fresh reports when needed before executing operations like minting, repaying, or tier changes. No manual action is required in most cases.
The report status is displayed at the top of the vault overview page, showing the last update timestamp and a link to view the oracle report on IPFS.

In certain situations (such as when deposits are restricted due to accumulated fees, or when the vault is pending disconnection), an "Apply the latest Oracle report" button will appear in the relevant warning banner if a newer report is available.
using Command-line Interface
Apply the latest report to your vault:
yarn start report w submit -v <vaultAddress>
The CLI automatically:
- fetches the latest report CID from LazyOracle,
- retrieves the Merkle tree from IPFS,
- generates the proof for your vault,
- submits the transaction.
using Etherscan UI
Applying a report via Etherscan requires manually fetching the proof data from IPFS. For most users, the CLI or Web UI is recommended.
- Query the LazyOracle contract's
latestReportData()method to get the currentreportCid. - Fetch the Merkle tree JSON from IPFS using the CID:
https://ipfs.io/ipfs/<reportCid> - Locate your vault's entry in the tree and copy the data.
- Open Etherscan and navigate to the LazyOracle contract by its address (available in the stVaults contract addresses list, see Basic stVault with optional liquidity: Environments).
- Since this contract is a proxy, complete the verification steps once (if not done before):
- Go to Contract → Code.
- Click More options.
- Select Is this a proxy?.
- Click Verify in the dialog.
- Return to the contract details page.
- Open the Contract tab → Write as Proxy.
- Click Connect to Web3 and connect your wallet in the dialog window.
- Find the
updateVaultDatamethod in the list, fill out the fields with the data from IPFS, and click Write. - Sign the transaction in your wallet.
- Click View your transaction and wait for it to be executed.
Checking report freshness
You can check when your vault's report was last updated:
using Command-line Interface
yarn start vo r info -v <vaultAddress>
This displays the vault's current metrics including the last report timestamp.
using Etherscan UI
- Open Etherscan and navigate to the LazyOracle contract.
- Go to the Contract tab → Read as Proxy.
- Find the
latestReportTimestampmethod and click Query to see when the latest report was published. - Find the
vaultInfomethod, enter your vault address, and click Query to see your vault's current on-chain metrics.
You can use any online UNIX timestamp converter to get the human readable datetime format.