Skip to main content

MetaMorpho Overview

  • MetaMorpho vaults are ERC4626 compliant vaults with permit (ERC-2612).

  • One MetaMorpho vault is dedicated to one loan asset (e.g USDC) that users can supply or withdraw at any time depending on the available liquidity.

  • Permissionless, free, and immutable onchain factory contract, deploying immutable onchain instances.

  • A maximum of 30-ish markets can be listed on a given vault.

  • The vault manager can extract a performance fee (up to 50%) from the total interest generated.

  • Each market has a supply cap configured onchain that guarantees lenders a maximum absolute exposure to the specific market.

  • Allocation of the vault’s liquidity can be done in multiple ways:

    • Manual Allocation: Asynchronously via a permissioned function, specifying how much liquidity is withdrawn from which markets (up to their respective available liquidity) and how much liquidity is then supplied to each market (up to their respective caps).

      The gas cost of this operation is paid by the caller of the function, which is restricted and is expected to be under the vault manager’s responsibility.

    • Supply queue: Atomically upon each deposit by specifying an order in which markets will be supplied to (up to their respective caps).

      The remaining funds after having reached all market caps of the supply queue are always left in the vault, as idle liquidity.

      The gas cost of iterating through the supply queue and supplying to markets is paid by depositors.

      The supply queue can be empty to disable this behavior and save gas for depositors, in which case all funds deposited are left idle in the vault and must be supplied to markets asynchronously to generate interest.

    • Withdraw queue: Atomically upon each withdrawal by specifying an order in which markets are withdrawn from (up to their respective liquidity).

      The funds are always taken first from the idle liquidity left in the vault.

      The gas cost of iterating through the withdraw queue and withdrawing from markets is paid by depositors.

      The withdraw queue must always contain each market that has either a non-zero cap or some liquidity supplied, to guarantee lenders they can withdraw from the vault up to each market’s liquidity at any given time.

      If a market is broken or forever illiquid, the allocator can put the market at the end of the withdraw queue.