Glossary

Vault

Vaults are smart contracts that put liquidity into different underlying protocols. The underlying protocol could be some well-known DeFi protocol like Uniswap, Sushiswap, Yearn, Compound, etc., or just a plain ERC20 token vault.
The tokens managed by Vault are fixed and immutable, i.e. Vault cannot start managing additional tokens or stop managing existing tokens. Each Vault can only put liquidity into one fixed underlying protocol.
Examples of the Vaults are:
  • Vault that puts ETH and USDC into Uniswap V3;
  • Vault that puts WBTC, DAI and USDT into Aave;
  • Vault that puts ETH into Yearn.
See Vault API for details.

Vault system

Vault system is a set of Vaults ready for accepting deposits and be managed by a Strategy. It has an ERC20Root Vault that combines several Vaults as subvaults. The subvaults are immutable and cannot be modified.
The deposit process looks like this:
  1. 1.
    Each Vault assesses its own minimum and maximum TVLs (sometimes using oracles).
  2. 2.
    The TVL for deposit is the sum of all maximum TVLs
  3. 3.
    Then deposited tokens are aligned in the same proportion as that of the deposit TVL (the leftovers are not used in the deposit)
  4. 4.
    The proportion of the deposited tokens to the depositTVL is calculated and LP tokens minted.
  5. 5.
    Deposited tokens are transferred to 0 subvault (which is required to be ERC20 vault)
The withdrawal process looks like this:
  1. 1.
    Each Vault assesses its own minimum and maximum TVLs (sometimes using oracles).
  2. 2.
    The TVL for withdrawal is the sum of all minimum TVLs.
  3. 3.
    The required withdrawal amounts are calculated based on LP tokens for withdrawal and withdrawal TVL.
  4. 4.
    Then ERC20Root Vault withdraws ERC20 tokens to itself from each subvault until it can fulfill the withdrawal request.
  5. 5.
    The withdrawal request is fulfilled and all leftovers are put back into the ERC20Root vault.

Vault group

A Vault group is a set of contracts that manage Vaults of a specific Vault kind. It is used to create a new Vault or manage Vault params.

Vault kind

Vault kind is an underlying DeFi protocol for a Vault. Currently, the following Vault kinds are implemented:
  1. 1.
    Aave Vault kind – manages deposits and withdrawals to Aave;
  2. 2.
    Yearn Vault kind – manages deposits and withdrawals to Yearn;
  3. 3.
    UniV3 Vault kind – manages deposits and withdrawals to Uniswap V3;
  4. 4.
    UniV2 Vault kind – manages deposits and withdrawals to Uniswap V2;
  5. 5.
    ERC20 Vault kind – manages deposits and withdrawals of simple ERC20 tokens;
  6. 6.
    ERC20Root Vault kind – manages deposits and withdrawals to other multiple Vault kinds.

ERC20Root Vault

ERC20Root Vault combines other Vaults into one Vault. Additionally, it allows:
  • Put ERC20 tokens (like wETH, USDC, ...) into the vault and receive newly minted ERC20 LP tokens back
  • Put LP ERC20 tokens (burn it) and receive ERC20 tokens (like wETH, USDC, ...) back
See ERC20RootVault API for details.

Strategy

Strategy is an entity that actively manages the liquidity in the Vault. Managing means that it can withdraw liquidity and put it into another Vault of the Vault System.
Strategy aims to earn profits for Vault liquidity.
More often than not, Strategy would be a smart contract. However, manually managed strategies are also possible.

Strategist

Strategist is an entity that deploys and maintains the Strategy.

Liquidity Provider

Liquidity Provider is a user who would put liquidity into a Vault to earn profit.

Governance

Governance is a Mellow Protocol DAO multi-signature wallet that can alter parameters common for all Vaults.