Introduction
ERC-4626 is a technical standard designed to optimize and standardize yield-bearing vault parameters. It establishes a standardized API for tokenized yield vaults representing shares of a single underlying ERC-20 token. The standard includes optional extensions for ERC-20-based token vaults, enabling core functionalities such as token deposits, withdrawals, and balance checks.
The Role of ERC-4626 in Yield Vaults
Lending markets, aggregators, and inherently interest-bearing tokens help users identify the best yield opportunities for their cryptocurrency tokens by executing diverse strategies. These strategies often involve minor operational variations, which can lead to errors or inefficient development resource allocation.
👉 Discover how ERC-4626 streamlines yield strategies
ERC-4626 yield vaults minimize integration efforts and broaden access to yield opportunities across applications—requiring minimal specialized developer input—through more consistent and robust implementation templates.
The ERC-4626 token is detailed in EIP-4626.
Asynchronous Vault Extension (ERC-7540)
ERC-4626 is optimized for atomic deposits and redemptions up to a predefined limit. Once this limit is reached, no additional deposits or redemptions can be processed. This limitation poses challenges for smart contract systems requiring asynchronous actions or delays (e.g., real-world asset protocols, undercollateralized loans, cross-chain lending, liquid staking tokens, or insurance security modules).
ERC-7540 extends ERC-4626 vault utility for asynchronous use cases. The existing vault interface (deposit, withdraw, mint, redeem) remains fully operational for asynchronous claims. Learn more in ERC-7540.
Multi-Asset Vault Extension (ERC-7575)
ERC-4626 does not natively support vaults holding multiple assets or entry points (e.g., LP tokens), which are often non-compliant due to the ERC-20 requirement. ERC-7575 introduces multi-asset vault support by decoupling ERC-20 token implementation from the ERC-4626 vault logic. Details are available in ERC-7575.
Prerequisites
To fully grasp this content, we recommend reviewing:
ERC-4626 Functions and Features
Methods
asset
function asset() public view returns (address assetTokenAddress)Returns the address of the vault’s underlying asset for accounting, deposits, and withdrawals.
totalAssets
function totalAssets() public view returns (uint256)Returns the total quantity of underlying assets held by the vault.
convertToShares
function convertToShares(uint256 assets) public view returns (uint256 shares)Converts a specified assets amount into equivalent shares.
convertToAssets
function convertToAssets(uint256 shares) public view returns (uint256 assets)Converts a specified shares amount into equivalent assets.
maxDeposit
function maxDeposit(address receiver) public view returns (uint256 maxAssets)Returns the maximum assets amount that receiver can deposit in a single deposit call.
previewDeposit
function previewDeposit(uint256 assets) public view returns (uint256 shares)Simulates the effects of a deposit at the current block.
deposit
function deposit(uint256 assets, address receiver) public returns (uint256 shares)Deposits assets into the vault and credits shares to receiver.
maxMint
function maxMint(address receiver) public view returns (uint256 maxShares)Returns the maximum shares amount that receiver can mint in a single mint call.
previewMint
function previewMint(uint256 shares) public view returns (uint256 assets)Simulates the effects of a mint at the current block.
mint
function mint(uint256 shares, address receiver) public returns (uint256 assets)Mints exactly shares to receiver by depositing assets.
maxWithdraw
function maxWithdraw(address owner) public view returns (uint256 maxAssets)Returns the maximum assets amount that owner can withdraw in a single withdraw call.
previewWithdraw
function previewWithdraw(uint256 assets) public view returns (uint256 shares)Simulates the effects of a withdrawal at the current block.
withdraw
function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)Burns shares from owner and sends assets to receiver.
maxRedeem
function maxRedeem(address owner) public view returns (uint256 maxShares)Returns the maximum shares amount that owner can redeem in a single redeem call.
previewRedeem
function previewRedeem(uint256 shares) public view returns (uint256 assets)Simulates the effects of a redemption at the current block.
redeem
function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)Redeems shares from owner and sends assets to receiver.
Events
Deposit
Emitted when tokens are deposited via mint or deposit.
event Deposit(
address indexed sender,
address indexed owner,
uint256 assets,
uint256 shares
)Withdraw
Emitted when shares are redeemed via redeem or withdraw.
event Withdraw(
address indexed sender,
address indexed receiver,
address indexed owner,
uint256 assets,
uint256 shares
)FAQs
What is the primary advantage of ERC-4626?
It standardizes yield vault interfaces, reducing integration complexity and developer overhead.
Can ERC-4626 handle multi-asset vaults?
Not natively—use ERC-7575 for multi-asset support.
👉 Explore advanced vault integrations
How does ERC-7540 enhance ERC-4626?
It enables asynchronous deposit/withdrawal workflows, critical for cross-chain and real-world asset protocols.