EthMetaVault
Inherits: VaultImmutables, Initializable ↗, ReentrancyGuardUpgradeable ↗, VaultAdmin, VaultVersion, VaultFee, VaultState, VaultEnterExit, VaultOsToken, VaultSubVaults, Multicall, IEthMetaVault
Defines the Meta Vault functionality on Ethereum
State Variables
_version
uint8 private constant _version = 7
_securityDeposit
uint256 private constant _securityDeposit = 1e9
__gap
This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
uint256[50] private __gap
Functions
constructor
Constructor
Since the immutable variable value is stored in the bytecode, its value would be shared among all proxies pointing to a given contract instead of each proxy’s storage.
Note: oz-upgrades-unsafe-allow: constructor
constructor(EthMetaVaultConstructorArgs memory args)
VaultImmutables(args.keeper, args.vaultsRegistry)
VaultEnterExit(args.exitingAssetsClaimDelay)
VaultOsToken(args.osTokenVaultController, args.osTokenConfig, args.osTokenVaultEscrow)
VaultSubVaults(args.subVaultsRegistryFactory);
Parameters
| Name | Type | Description |
|---|---|---|
args | EthMetaVaultConstructorArgs | The arguments for initializing the EthMetaVault contract |
initialize
Initializes or upgrades the EthMetaVault contract. Must transfer security deposit during the deployment.
function initialize(bytes calldata params) external payable virtual override reinitializer(_version);
Parameters
| Name | Type | Description |
|---|---|---|
params | bytes | The encoded parameters for initializing the EthMetaVault contract |
deposit
Deposit ETH to the Vault
function deposit(address receiver, address referrer) public payable virtual override returns (uint256 shares);
Parameters
| Name | Type | Description |
|---|---|---|
receiver | address | The address that will receive Vault's shares |
referrer | address | The address of the referrer. Set to zero address if not used. |
Returns
| Name | Type | Description |
|---|---|---|
shares | uint256 | The number of shares minted |
receive
Function for depositing using fallback function
receive() external payable virtual;
updateStateAndDeposit
Updates Vault state and deposits ETH to the Vault
function updateStateAndDeposit(
address receiver,
address referrer,
IKeeperRewards.HarvestParams calldata harvestParams
) public payable virtual override returns (uint256 shares);
Parameters
| Name | Type | Description |
|---|---|---|
receiver | address | The address that will receive Vault's shares |
referrer | address | The address of the referrer. Set to zero address if not used. |
harvestParams | IKeeperRewards.HarvestParams | The parameters for harvesting Keeper rewards |
Returns
| Name | Type | Description |
|---|---|---|
shares | uint256 | The number of shares minted |
depositAndMintOsToken
Deposits assets to the vault and mints OsToken shares to the receiver
function depositAndMintOsToken(address receiver, uint256 osTokenShares, address referrer)
public
payable
override
returns (uint256);
Parameters
| Name | Type | Description |
|---|---|---|
receiver | address | The address to receive the OsToken |
osTokenShares | uint256 | The amount of OsToken shares to mint. If set to type(uint256).max, max OsToken shares will be minted. |
referrer | address | The address of the referrer |
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | The amount of OsToken assets minted |
updateStateAndDepositAndMintOsToken
Updates the state, deposits assets to the vault and mints OsToken shares to the receiver
function updateStateAndDepositAndMintOsToken(
address receiver,
uint256 osTokenShares,
address referrer,
IKeeperRewards.HarvestParams calldata harvestParams
) external payable override returns (uint256);
Parameters
| Name | Type | Description |
|---|---|---|
receiver | address | The address to receive the OsToken |
osTokenShares | uint256 | The amount of OsToken shares to mint. If set to type(uint256).max, max OsToken shares will be minted. |
referrer | address | The address of the referrer |
harvestParams | IKeeperRewards.HarvestParams | The parameters for the harvest |
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | The amount of OsToken assets minted |
donateAssets
Donate assets to the Vault. Must transfer ETH together with the call.
function donateAssets() external payable override;
vaultId
function vaultId() public pure virtual override(IVaultVersion, VaultVersion) returns (bytes32);
version
Version
function version() public pure virtual override(IVaultVersion, VaultVersion) returns (uint8);
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint8 | The version of the Vault implementation contract |
_depositToVault
Internal function to deposit assets to the sub-vault
function _depositToVault(address vault, uint256 assets) internal override returns (uint256);
Parameters
| Name | Type | Description |
|---|---|---|
vault | address | The address of the vault |
assets | uint256 | The amount of assets to deposit |
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | The amount of vault shares received |
_vaultAssets
Internal function for retrieving the total assets stored in the Vault. NB! Assets can be forcibly sent to the vault, the returned value must be used with caution
function _vaultAssets() internal view virtual override returns (uint256);
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | The total amount of assets stored in the Vault |
_transferVaultAssets
Internal function for transferring assets from the Vault to the receiver
function _transferVaultAssets(address receiver, uint256 assets) internal virtual override nonReentrant;
Parameters
| Name | Type | Description |
|---|---|---|
receiver | address | The address that will receive the assets |
assets | uint256 | The number of assets to transfer |
isStateUpdateRequired
Check whether state update is required
function isStateUpdateRequired()
public
view
virtual
override(IVaultState, VaultState, VaultSubVaults)
returns (bool);
Returns
| Name | Type | Description |
|---|---|---|
<none> | bool | true if state update is required, false otherwise |
updateState
Updates the total amount of assets in the Vault and its exit queue
function updateState(IKeeperRewards.HarvestParams calldata harvestParams)
public
virtual
override(IVaultState, VaultState, VaultSubVaults);
Parameters
| Name | Type | Description |
|---|---|---|
harvestParams | IKeeperRewards.HarvestParams | The parameters for harvesting Keeper rewards |
enterExitQueue
Locks shares to the exit queue. The shares continue earning rewards until they will be burned by the Vault.
For ERC-20 vault variants, balanceOf(vault) does not reflect queued exit shares despite the emitted Transfer event.
function enterExitQueue(uint256 shares, address receiver)
public
virtual
override(IVaultEnterExit, VaultEnterExit, VaultOsToken)
returns (uint256 positionTicket);
Parameters
| Name | Type | Description |
|---|---|---|
shares | uint256 | The number of shares to lock |
receiver | address | The address that will receive assets upon withdrawal |
Returns
| Name | Type | Description |
|---|---|---|
positionTicket | uint256 | The position ticket of the exit queue. Returns uint256 max if no ticket created. |
donateShares
Donates shares to the Vault by burning them from the caller, increasing the value per share for remaining holders
function donateShares(uint256 shares) public virtual override(IVaultState, VaultState, VaultOsToken);
Parameters
| Name | Type | Description |
|---|---|---|
shares | uint256 | The number of shares to donate |
_checkHarvested
Internal method for checking whether the vault is harvested
function _checkHarvested() internal view virtual override(VaultImmutables, VaultSubVaults);
_isCollateralized
Returns whether the vault is collateralized
function _isCollateralized() internal view virtual override(VaultImmutables, VaultSubVaults) returns (bool);
Returns
| Name | Type | Description |
|---|---|---|
<none> | bool | true if the vault is collateralized |
__EthMetaVault_upgrade
Upgrades the EthMetaVault contract
function __EthMetaVault_upgrade() internal onlyInitializing;
__EthMetaVault_init
Initializes the EthMetaVault contract
function __EthMetaVault_init(address _admin, EthMetaVaultInitParams memory params) internal onlyInitializing;
Parameters
| Name | Type | Description |
|---|---|---|
_admin | address | The address of the admin of the Vault |
params | EthMetaVaultInitParams | The parameters for initializing the EthMetaVault contract |