# ERC-7535: Native Asset ERC-4626 Vault

Source: https://www.eipsfordesigners.com/standards/ERC-7535
Agent brief: https://www.eipsfordesigners.com/standards/ERC-7535/agent.md
Machine-readable JSON: https://www.eipsfordesigners.com/api/standards/ERC-7535
Last reviewed: 2026-04-05
Last updated: 2026-04-05

| Field | Value |
| --- | --- |
| Status | Draft |
| Chain | both |
| Category | DeFi Patterns |
| Journey stages | Asset Management |
| Detailed guide | Yes |
| Official specification | https://eips.ethereum.org/EIPS/eip-7535 |
| Discussion search | https://ethereum-magicians.org/search?q=ERC-7535 |

## UX Impact

Users can deposit native ETH directly into 4626-compatible vaults without wrapping to WETH first — simpler onboarding for liquid staking. Design implications: show ETH balance directly in vault deposit UI, use msg.value for deposits (no approval step needed), handle excess ETH refunds gracefully, display the special 0xEeee...EEeE address as 'ETH' not an address. Design decisions: whether to offer WETH alternative path, how to communicate the gas cost difference vs WETH vaults, handling the edge case where assets parameter may be ignored in favor of msg.value.

## Summary

ERC-7535 extends the ERC-4626 vault standard to accept native assets (ETH) directly without requiring users to wrap them first. Users can deposit ETH straight into yield vaults, skipping the WETH wrapping step that adds friction and confusion to DeFi onboarding.

## For Designers

- You can design UI that delivers eTH → deposit directly (1 step).
- You can design UI that delivers deposit ETH, get shares. No wrapper tokens to explain.
- You can design UI that delivers direct deposit saves wrapping gas entirely.

## Applicability

### When to Use

- Your users must wrap ETH to WETH before depositing.
- Your product addresses: new users don't understand WETH.
- The flow should deliver: eTH → deposit directly (1 step).
- You are designing a direct eth deposit experience with visible states and recovery paths.

### When to Avoid

- Hide wrapping entirely, deposit ETH directly.
- Skip approval step entirely for ETH deposits.
- Default to ETH, show WETH as alternative option.
- No token balances, swaps, lending, or yield flows appear in the product.

## Problems It Solves

### Users must wrap ETH to WETH before depositing

Impact: critical

Old way: ETH → approve → wrap to WETH → approve again → deposit to vault (4 steps)

New way: ETH → deposit directly (1 step)

### New users don't understand WETH

Impact: critical

Old way: "What is WETH? Why do I need it? Where did my ETH go?"

New way: Deposit ETH, get shares. No wrapper tokens to explain

### Extra gas costs for wrapping

Impact: medium

Old way: Wrapping costs ~45k gas, plus approval costs

New way: Direct deposit saves wrapping gas entirely

### Fragmented ETH balance

Impact: medium

Old way: Users have ETH + WETH + vault shares, confusing portfolio

New way: ETH → vault shares directly, cleaner balance view

## Anti-Patterns

### Still showing WETH wrapping in the UI

Severity: critical

Defeats the purpose of native asset support

Instead: Hide wrapping entirely, deposit ETH directly

### Requiring approval for ETH deposits

Severity: critical

Native ETH doesn't need approval - confuses users

Instead: Skip approval step entirely for ETH deposits

### Defaulting to WETH over ETH

Severity: high

ETH is more familiar to users, WETH adds confusion

Instead: Default to ETH, show WETH as alternative option

### Not showing "no approval needed" benefit

Severity: medium

Users don't realize ETH deposit is simpler

Instead: Highlight "✓ No approval needed" for ETH path

## UI Components

### NativeAssetInput

Input field that handles native ETH amounts
States: empty, valid, insufficient, max
Props: balance, value, onChange, onMax

### AssetToggle

Switch between ETH and WETH
States: eth-selected, weth-selected
Props: ethBalance, wethBalance, onSelect

### VaultSharesPreview

Show expected shares from deposit
States: loading, ready, slippage-warning
Props: inputAmount, expectedShares, exchangeRate

### NoApprovalBadge

Indicate no approval needed for native asset
States: native, needs-approval, approved
Props: assetType, approvalStatus

## On Monad

### Native Asset

Ethereum: ETH is the native asset

Monad: MON is the native asset

Design implication: Update UI to show MON deposits, same UX pattern applies

### Deposit Speed

Ethereum: Deposit takes 12-15 seconds to confirm

Monad: Sub-second finality, shares appear instantly

Design implication: Can show shares balance updating in real-time

### Gas Savings

Ethereum: Avoiding WETH wrap saves ~45k gas (~$5-20)

Monad: Gas already cheap, but still saves a transaction step

Design implication: Emphasize simplicity over gas savings

### Reserve Balance

Ethereum: Can deposit entire ETH balance

Monad: Must keep 10 MON reserve, adjust MAX button

Design implication: MAX button should account for reserve: show "Max: X MON (10 MON reserved)"

## Key Takeaways

- Native asset vaults eliminate the confusing WETH step
- ETH deposits need no approval - highlight this benefit
- Default to native asset, offer wrapped as alternative
- Show clear "You'll receive X shares" preview
- On Monad: account for reserve balance in MAX calculations

## UX Patterns

### Direct ETH Deposit

One-step deposit of native ETH into vault

User flow:

- User enters ETH amount to deposit
- Preview shows expected vault shares
- Click deposit (no approve step)
- Sign single transaction
- ETH converts to vault shares directly

Mockup registry key: `generic/vault-deposit` (React UI on the live standard page).

### Unified Deposit Interface

Accept both ETH and WETH with same UI

User flow:

- User chooses between ETH or WETH
- Show approval requirements for each
- ETH path is faster (no approval)
- WETH accepted for users with existing balance
- Same vault shares regardless of input

Mockup registry key: `generic/vault-deposit` (React UI on the live standard page).

### Native Withdrawal

Withdraw back to ETH directly

User flow:

- User sees current position and earnings
- Select withdrawal amount
- Choose ETH or WETH output
- Sign withdrawal transaction
- Receive ETH directly to wallet

Mockup registry key: `generic/vault-position` (React UI on the live standard page).

## Technical Notes

ERC-7535 extends ERC-4626 by adding receive() and depositETH() functions. The vault accepts msg.value as the deposit amount for native assets. Internally, vaults may still use WETH for accounting, but this is abstracted away from users. The standard maintains full compatibility with ERC-4626 for wrapped asset deposits.
