Skip to main content

Vault Accounting

totalAssets()

The vault's total assets denominated in WETH:

totalAssets =
WETH balance in vault
+ stETH balance in vault (not yet queued to Lido)
+ (totalPendingStEth − finalizedStEth) (stETH queued, not yet finalized)
+ claimableEther (ETH receivable from finalized Lido NFTs)
− _reservedRedeemAssets (WETH reserved for claimable LP redemptions)
− _pendingRedeemAssets (WETH owed to pending LP redemptions)

Finalized Lido NFTs are valued at their actual claimable ETH (via getClaimableEther), not at stETH face value. A slashing event is therefore reflected in the share price immediately upon finalization - before the keeper claims the NFT.

Effect of actions on totalAssets / totalSupply

ActiontotalAssetstotalSupply
deposit(assets)+assets+shares
swap (no fee)+discountunchanged
swap (with fee)+discount + feeAmount+feeShares
requestRedeem(shares)−convertToAssets(shares)−shares
claimPendingWithdrawals...()unchangedunchanged
withdraw (no fee)unchangedunchanged
withdraw (with fee)+fee+feeShares

Fees

Swap fee (feeBps)

Charged on the gross WETH output of each swap. The fee WETH stays in the vault as liquidity; the owner is minted equivalent shares. Hard cap: 30% (MAX_FEE_BPS = 3_000).

Withdrawal fee (withdrawalFeeBps)

Charged when an LP withdraws claimable WETH via withdraw(). Deducted from the payout; fee WETH stays in the vault as liquidity and the owner is minted equivalent shares. Hard cap: 10% (MAX_WITHDRAWAL_FEE_BPS = 1_000).

The withdrawal fee exists to deter flash-loan–based discount extraction (deposit → swap → requestRedeem → withdraw in one transaction).

Minimum deposit

The _deposit override rejects deposits that would result in fewer than minRedeemShares shares. This ensures every deposit position is large enough to be redeemed via requestRedeem later.