Morpho Vault V2 Dead Deposit

A dead deposit is a security measure against ERC-4626 inflation attacks (read more).

On an empty vault, execute:

vault.mint(TARGET_SHARES, 0x000000000000000000000000000000000000dEaD);

The dead deposit must be the very first transaction on an empty vault. If any user deposit occurs first, the inflation attack may already have been executed.

How Many Shares to Mint

The number of shares to mint depends on the vault's underlying asset decimals. Use the table below for common tokens:

TokenDecimalsShares to MintAssets You'll SpendUSD Cost
WETH181,000,000,000~0 ETH< $0.1
wstETH181,000,000,000~0 wstETH< $0.1
sUSDS181,000,000,000~0 sUSDS< $0.1
sUSDe181,000,000,000~0 sUSDe< $0.1
siUSD181,000,000,000~0 siUSD< $0.1
cbBTC810,000,000,000,000,0000.01 BTC~$630 (at current BTC price)
WBTC810,000,000,000,000,0000.01 BTC~$630 (at current BTC price)
USDC61,000,000,000,000,000,0001 USDC~$1
PYUSD61,000,000,000,000,000,0001 PYUSD~$1
USDT61,000,000,000,000,000,0001 USDT~$1

New or unlisted asset? Use the formula:

targetShares = max(1e9, 10^(6 + max(0, 18 - decimals)))

How to Execute via Explorer

1. Verify the vault is empty

Navigate to the Morpho Vault V2 contract on explorer → Read Contract → check that totalSupply() returns 0.

2. Approve the vault to spend your tokens

Go to the underlying token's explorer page → Write Contract → call approve(vaultAddress, assetsAmount).

Use the approval amounts below:

DecimalsApproval amount
181000000000
81000000
61000000
Approve (Etherscan)

3. Mint shares to 0xdead

Go to the vault contract on Etherscan → Write Contract → call mint(TARGET_SHARES, 0x000000000000000000000000000000000000dEaD).

Use the Shares to Mint value from the table above for your token.

Vault V2 Dead Deposit (Etherscan)

4. Verify the dead deposit

On the vault contract → Read Contract → call convertToAssets(1000000000000000000). The result should be approximately 10^decimals (i.e. 1.0 token per share).

Additional Requirements

Beyond the vault-level dead deposit, the following must also be satisfied:

  • 0xdead must have 1e9 supplyShares in each variable rate market with a non-zero cap on the vault.
  • 0xdead must have 1e9 shares in each Morpho Vault V1 with a non-zero cap on the vault, as well as in each market in their withdraw queue.

Why These Numbers

The required shares satisfy two constraints simultaneously:

  1. Inflation attack prevention: at least 1e6 assets must be in the vault, limiting any single manipulation to a relative change of at most 1/1,000,000. This requires shares >= 1e6 × virtualShares.
  2. Share price rounding protection: prevents the share price from crashing to near-zero when an adapter rounds tiny balances to 0. This requires shares / (shares + virtualShares) >= 0.999.

The inflation attack constraint dominates (by a factor of 1,000), so the formula max(1e9, 1e6 × virtualShares) satisfies both. The 1e9 floor applies the existing per-market/per-vault minimum for 18-decimal assets where virtualShares = 1.

virtualShares = 10^max(0, 18 - decimals) is a constant defined in the VaultV2 constructor.

On this page