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
| Action | totalAssets | totalSupply |
|---|---|---|
deposit(assets) | +assets | +shares |
swap (no fee) | +discount | unchanged |
swap (with fee) | +discount + feeAmount | +feeShares |
requestRedeem(shares) | −convertToAssets(shares) | −shares |
claimPendingWithdrawals...() | unchanged | unchanged |
withdraw (no fee) | unchanged | unchanged |
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.