What are Meta Vaults?
Meta Vault is a composable architecture for yield-bearing tokens. It combines, optimises and allocates yield in a diversified manner.
Meta Vaults are a direct evolution and embracement of the Save concept. An easy-to-use yield-bearing contract/asset.
The contracts are ERC-4626 compatible and consume other ERC-4626 contracts.
Overview of Meta Vault components and capabilities
Meta Vaults are generic ERC-4626 compatible contracts with the following features:
- One asset in and out
- Diversified set of yield sources that can be
- ERC-4626 compatible contracts
- Meta Vaults
- yield source that is wrapped in ERC-4626
Other components that plug into the contracts are the Watchers and Liquidator Contract
The Liquidator module is responsible for collecting reward tokens from vaults, swapping them and donating back the purchased tokens to the vaults. Typically, this is swapping reward tokens to vault assets which are then donated back to the vaults to increase their assets per share.
For example, swapping $CRV earned in a Curve pool back to a vault asset like $DAI. There can be multiple reward tokens collected from a vault and different target tokens can be specified for each reward token.
It is built in a generic way, such that any contract can be used to execute the swap. For the first iteration, CowSwap is utilised.
Watchers monitor on-chain data and adjust Meta Vault Settings, i.e. Settle, Rebalance.
Currently, the Watchers trigger the following actions:
- Rebalance: Whenever the Meta Vault is imbalanced, an underlying Pool has become unbalanced, the Meta Vault became majority owner of the liquidity of a Pool or the APY has decreased, it will remove funds from a Basic Vault and deposit the remainder into the other pools.
- assetsPerShare update: Whenever someone deposits into the Meta Vault, the deposits are pooled into the contract and only deposited to the underlying when `Settle()` is called. There is a cache system(`assetsPerShare`) on how many shares the depositor will receive according to the number of assets. The watcher will actively monitor it and trigger an update when assetsPerShare increases by 0.0072%
- Settle: After collecting rewards, the watcher settles the defined amount in each Basic Vault. It’s optimized for gas spending to be little as possible without letting the Meta Vault become heavily imbalanced.
- collectRewards: When the gas cost reaches the predefined requirements, a collect rewards action is triggered that collects rewards from the underlying vaults and swaps it to the asset for compounding.