Meta Vault of Convex 3Crv Vaults
Last updated
Was this helpful?
Last updated
Was this helpful?
ERC-4626 vault with Curve's liquidity provider token (3Crv) as an asset. The 3Crv is invested in underlying Convex 3Crv Basic Vaults.
Deposits of assets (3Crv) are allocated to the underlying vaults based on weights set by the Vault Manager. Withdraw of assets (3Crv) are proportionally withdrawn from the underlying assets. This may not match the weights set by the Vault Manager.
compliant tokenized vault.
compliant token.
Assets are invested across multiple underlying ERC-4626 vaults of the same asset type.
Investment of deposited assets to the underlying vaults is batched in a settle
process.
deposit
and mint
use minimal gas as the investment is done separately.
The VaultManager
directs the deposited assets to the underlying vaults.
Assets in underlying vaults can be redistributed by the VaultManager
.
Small withdrawals are taken from a single configured underlying vault to save gas.
Large withdraws are proportionally taken from all underlying vaults.
Performance fee periodically charged on assets per share increases.
Vault operations are pausable by the Governor
.
Vault configuration is controlled by a protocol Governor
. This includes:
Which underlying vaults are used.
Which vault small withdrawals are taken from.
The threshold for large withdraws as a percentage of shares.
Setting the account that receives the performance fee.
Initially the Governor
can upgrade the contracts via a proxy without a time delay. After 6 weeks, this will be changed to a one week time delay.
See General ERC-4626 Vault Interface for the standard ERC-4626 functions.
Params related to sourcing of assets.
Amount of assets that are transferred from/to the vault.
Threshold amount of transfers to/from for assetPerShareUpdate
.
Performance fee scaled to 6 decimal places. 1% = 10000, 0.01% = 100
Assets per shares used to calculate performance fees scaled to 26 decimal places.
Account that receives the performance fee as shares.
Invests the assets sitting in the vault from previous deposits and mints into the nominated underlying vaults.
Parameters
settlements
struct PeriodicAllocationAbstractVault.Settlement[]
A list of asset amounts and underlying vault indices to deposit the assets sitting in the vault.
Governor
sets the threshold for large withdrawals that withdraw proportionally from all underlying vaults instead of just from a single configured vault. This means smaller redeem
and withdraw
txs pay a lot less gas.
Parameters
_singleVaultSharesThreshold
uint32
Percentage of shares being redeemed in basis points. eg 20% = 2000, 5% = 500
Governor
sets the underlying vault that small withdrawals are redeemed from.
Parameters
_singleSourceVaultIndex
uint32
the underlying vault's index position in underlyingVaults
. This starts from index 0.
Governor sets the threshold asset amount of cumulative transfers to/from the vault before the assets per share is updated.
Parameters
_assetPerShareUpdateThreshold
uint256
cumulative asset transfers amount.
Vault Manager charges a performance fee since the last time a fee was charged.
As an example, if the assets per share increased by 0.1% in the last week and the performance fee is 4%, the vault shares will be increased by 0.1% * 4% = 0.004% as a fee. If there was 100,000 vault shares, 4 (100,000 * 0.004%) vault shares will be minted as a performance fee. This dilutes the assets per shares of the existing vault shareholders by 0.004%. No performance fee is charged if the assets per share drops.
Sets a new performance fee after charging to now using the old performance fee.
Parameters
_performanceFee
uint256
Performance fee scaled to 6 decimal places. 1% = 10000, 0.01% = 100
Returns the active number of underlying vaults. This excludes any vaults that have been removed.
Return Values
activeVaults
uint256
The number of active underlying vaults.
Returns the total number of underlying vaults, both active and inactive. The next vault added will have a vault index of this value.
Return Values
totalVaults
uint256
The number of active and inactive underlying vaults.
Resolves a vault index to an active underlying vault address. This only works for active vaults. A Inactive vault
error will be thrown if the vault index has not been used or the underlying vault is now inactive.s
Parameters
vaultIndex
uint256
External vault index used to identify the underlying vault.
Return Values
vault
contract IERC4626Vault
Address of the underlying vault.
VaultManager
rebalances the assets in the underlying vaults. This can be moving assets between underlying vaults, moving assets in underlying vaults back to this vault, or moving assets in this vault to underlying vaults.
Adds a new underlying ERC-4626 compliant vault. This Meta Vault approves the new underlying vault to transfer max assets. There is a limit of 15 active underlying vaults. If more vaults are needed, another active vaults will need to be removed first. There is also a limit of 62 underlying vaults that can be used by this Meta Vault over its lifetime. That's both active and inactive vaults.
Parameters
_underlyingVault
address
Address of a ERC-4626 compliant vault.
Removes an underlying ERC-4626 compliant vault. All underlying shares are redeemed with the assets transferred to this vault.
Parameters
vaultIndex
uint256
Index of the underlying vault starting from 0.
Called by the protocol Governor to set the fee receiver address.
Parameters
_feeReceiver
address
Address that will receive the fees.
VaultManager can update the assetPerShare
.
calculates current assetsPerShare
Return Values
assetsPerShare_
uint256
current assetsPerShare
totalAssets_
uint256
totalAssets of the vault
See the Metavaults github repository for and .