Skip to main content

GnoVault

Git Source ↗

Inherits: VaultImmutables, Initializable ↗, VaultAdmin, VaultVersion, VaultFee, VaultState, VaultValidators, VaultEnterExit, VaultOsToken, VaultMev, VaultGnoStaking, Multicall, IGnoVault

Defines the Gnosis staking Vault

State Variables

_version

uint8 private constant _version = 3

__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(GnoVaultConstructorArgs memory args)
VaultImmutables(args.keeper, args.vaultsRegistry)
VaultValidators(
args.depositDataRegistry,
args.validatorsRegistry,
args.validatorsWithdrawals,
args.validatorsConsolidations,
args.consolidationsChecker
)
VaultEnterExit(args.exitingAssetsClaimDelay)
VaultOsToken(args.osTokenVaultController, args.osTokenConfig, args.osTokenVaultEscrow)
VaultMev(args.sharedMevEscrow)
VaultGnoStaking(args.gnoToken, args.tokensConverterFactory);

Parameters

NameTypeDescription
argsGnoVaultConstructorArgsThe arguments for initializing the GnoVault contract

initialize

Initializes or upgrades the GnoVault contract. Must transfer security deposit during the deployment.

function initialize(bytes calldata params) external virtual override reinitializer(_version);

Parameters

NameTypeDescription
paramsbytesThe encoded parameters for initializing the GnoVault contract

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

NameTypeDescription
sharesuint256The number of shares to lock
receiveraddressThe address that will receive assets upon withdrawal

Returns

NameTypeDescription
positionTicketuint256The 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

NameTypeDescription
sharesuint256The number of shares to donate

vaultId

function vaultId() public pure virtual override(IVaultVersion, VaultVersion) returns (bytes32);

version

Version

function version() public pure virtual override(IVaultVersion, VaultVersion) returns (uint8);

Returns

NameTypeDescription
<none>uint8The version of the Vault implementation contract

_harvestAssets

Internal function for harvesting Vaults' new assets

function _harvestAssets(IKeeperRewards.HarvestParams calldata harvestParams)
internal
override(VaultState, VaultMev)
returns (int256 totalAssetsDelta, bool harvested);

Returns

NameTypeDescription
totalAssetsDeltaint256The total assets delta after harvest
harvestedbooltrue when the rewards were harvested, false otherwise

__GnoVault_upgrade

Upgrades the GnoVault contract

function __GnoVault_upgrade() internal;

__GnoVault_init

Initializes the GnoVault contract

function __GnoVault_init(address admin, address ownMevEscrow, GnoVaultInitParams memory params)
internal
onlyInitializing;

Parameters

NameTypeDescription
adminaddressThe address of the admin of the Vault
ownMevEscrowaddressThe address of the MEV escrow owned by the Vault. Zero address if shared MEV escrow is used.
paramsGnoVaultInitParamsThe decoded parameters for initializing the GnoVault contract