THE ESSENTIALS
- Vault shares and underlying assets are different units.
- Previews estimate an operation; max functions describe current limits.
- An ERC-4626 interface does not prove safety, liquidity or compliance with the standard.
A wallet showing 100 vault shares does not necessarily contain 100 units of the deposited asset. And a screen valuing those shares at 110 assets does not, by itself, show that 110 assets can be withdrawn now. Those are different questions, with different contract functions intended to answer them.
ERC-4626 makes tokenized vaults easier for applications to integrate. Reading its labels correctly helps distinguish ownership accounting, a transaction estimate and the available exit route.
Start with the unit
ERC-4626 defines a vault interface for one underlying ERC-20 asset. Its share token represents an interest in the vault's underlying holdings. A share balance and an asset balance are therefore separate units. The standard defines asset() to identify the underlying token and totalAssets() to report assets managed by the vault.
The OpenZeppelin API reference shows two ways to enter and two ways to leave. deposit fixes the amount of assets supplied; mint fixes the number of shares obtained. withdraw fixes the asset amount received; redeem fixes the shares surrendered. Confusing those inputs can make a seemingly precise instruction mean the wrong thing.
In a deliberately simplified vault with 1,100 asset units and 1,000 shares, 100 shares represent 110 assets before fees and rounding. If those managed assets instead become 900 with the share count unchanged, the same 100 shares represent 90 assets. This arithmetic illustrates proportional ownership; it does not specify the valuation method or virtual accounting used by a particular implementation.
Conversion, preview and capacity are separate readings
A convertToAssets result is an idealized conversion, excluding transaction fees and actual exchange conditions. previewRedeem estimates assets from redeeming a specified share quantity under current conditions, including applicable withdrawal fees. maxRedeem(owner) addresses the owner's current redemption limit. A preview deliberately does not enforce that limit. These distinctions follow the standard's method definitions.
| Question | Relevant reading |
|---|---|
| Which asset does this vault account in? | asset() |
| How many shares does the wallet own? | balanceOf(owner) |
| What might redeeming these shares return? | previewRedeem(shares) |
| How many shares may this owner redeem now? | maxRedeem(owner) |
| How many asset units may this owner withdraw now? | maxWithdraw(owner) |
A positive estimate and a zero maximum can coexist. That is a reason to investigate the restriction, not evidence that the estimate can be cashed out. Conversely, a positive maximum read before submitting a transaction cannot freeze future contract state. For a proposed withdrawal, record the amount, recipient, fees, permissions and limits together, using readings from the same block where possible.
The OpenZeppelin API requires full withdrawals or redemptions to fail when their limits are exceeded. It also notes that some vaults need a separate request before withdrawal. The useful dashboard question is therefore: what operation can this account complete, under which conditions?
Rounding has a direction
Integer arithmetic cannot always represent an exact fraction. The OpenZeppelin v5.4.0 implementation rounds deposit share outputs and redemption asset outputs down. It rounds the asset input needed to mint specified shares, and the shares needed to withdraw specified assets, up. These opposing directions prevent fractions from systematically being paid out at the vault's expense.
Rounding normally occurs at the smallest token units, not whole displayed tokens. Its significance depends on precision and the exchange ratio. The OpenZeppelin vault guide explains how small deposits into poorly protected or nearly empty vaults can receive disproportionately few shares. It describes virtual assets and shares as one implementation defense against donation-based inflation attacks. A familiar interface name does not establish which protections the deployed contract uses.
A request is not a completed withdrawal
ERC-7540 extends the model for asynchronous operations. A redemption can move through pending, claimable and claimed states. For its asynchronous redemption flow, previewRedeem and previewWithdraw must revert, so an application cannot apply the synchronous preview workflow unchanged. The eventual asset amount can differ from the conversion value when the request was made.
That extension provides a useful boundary: a standardized share token can still sit above a delayed asset-return process. Ask which standard and extensions apply, whether a request has become claimable, and what remains to be executed. The broader distinction between tokenized ownership and settlement remains relevant.
Finally, the ERC-4626 label is an interface claim, not a security assessment. The standard's security section warns that malicious contracts can expose the interface without honoring its specification. Check the actual token and vault addresses, documented strategy, withdrawal rules and relevant implementation. Token identity starts with the contract address, and a reported conversion value is only one part of understanding that contract.
Three vault readings answer different questions
ERC-4626 synchronous redemption semantics, with the ERC-7540 asynchronous exception. No deployed vault or withdrawal capacity was tested.
- Conversion
- Idealized share-to-asset amount
convertToAssets excludes transaction fees and actual exchange conditions.
- Preview
- Estimated operation output
previewRedeem includes withdrawal fees but ignores redemption limits.
- Maximum
- Owner-specific current capacity
maxRedeem is measured in shares; maxWithdraw in asset units.
- Asynchronous exception
- Request, then claim
ERC-7540 async redemption requires previewRedeem and previewWithdraw to revert.
Measurement / reference: Primary documentation checked 23 September 2026
Retrieved / checked:
Method: Compared method definitions in ERC-4626, the OpenZeppelin API and the asynchronous overrides in ERC-7540. The prose ownership example is independently calculated as shares held multiplied by managed assets divided by total shares.
Limits: Interface semantics do not verify implementation compliance, strategy solvency, asset valuation, authorizations or future liquidity. The proportional example excludes fees, rounding and virtual offsets; it is not a universal implementation formula.
Sources & transparency
- ERC-4626: Tokenized Vaults ↗
- OpenZeppelin ERC20 API: ERC4626 ↗
- OpenZeppelin ERC4626 implementation, v5.4.0 ↗
- OpenZeppelin ERC-4626 guide ↗
- ERC-7540: Asynchronous ERC-4626 Tokenized Vaults ↗
Prepared with AI assistance using the sources above. No individual human reviewer is claimed. How we use AI.
This article is educational and is not a recommendation to buy, sell or hold an asset. Jurisdiction and product terms matter.
Suggest a correction


