Create your vault

Step-by-step instructions to create vault.

Lagoon Vault Factory

The Lagoon Vault Factory is the core smart contract that enables permission-less deployment of on-chain Lagoon Vaults. It allows anyone to create a fully customizable vault across supported chains.

Currently, vault creation is only possible via etherscan.

Vault Deployment Function: createVaultProxy

createVaultProxy is the function used to deploy a new Lagoon Vault from the Factory contract.

The address used to create a new vault won't have any roles in the vault, unless specified in the arguments. In other words, you can use any address to deploy vault.

Create Vault Proxy Parameters

Upgradability parameters

_logic (address) – This is the address of the logic of your contract. Your vault is a proxy that will use another contract logic. If you don't want to use the default version of the vault, you can supply the address of another authorized logic. If you want to use the default version, put the address 0.

_initialOwner (address) – The address that will be capable of upgrading the vault version. This address will be the owner of the ProxyAdmin, a contract deployed at the proxy construction. If you want your vault to be immutable, you can renounce the ownership of this ProxyAdmin contract by calling renounceOwnership(). This action is irreversible.

_initialDelay (uint256) – Delay required to wait to update a vault. Expressed in seconds. The minimum value is 86400 seconds (24 hours). The max value is 2592000 seconds (1 month). You can edit this delay, again after waiting the delay itself.

Underlying Asset

underlying (address) – The address of the underlying asset (ERC20 token) for which the vault is being created.

The Valuation Oracle (valuationManager) will be providing the valuation of the vault in this unit of account.


Vault General Parameters

name (string) – The name you want to give to the ERC-20 shares. Immutable

symbol (string) – The ERC-20 shares symbol. Immutable.

enableWhitelist (boolean) – Restrict vault access to approved addresses. Put 0 for false and 1 for true. Can be enabled during initial setup only.


Roles & Governance Setup

safe (address) – Curation address that holds the Vault’s assets. It is referred as curation address in the doc. This variale is immutable. Any curation solution is compatible including:

  • Safe Multisig Safe {Wallet}

  • MPC - Multi-Party Computation wallet

  • EOA - Externally Owned Account wallet

admin (address) – Address with administrative privileges. The Vault Admin role is responsible for managing the governance structure that will rules the vault. The admin has significant control over the vault's key parameters and security features, defining how it operates and is governed.

valuationManager (address) – The Valuation Oracle role provides updated valuations of the vault total assets.

Can be a multisig (manual updates) or a smart contract (automated pricing algorithm).

whitelistManager (address) – The Whitelist Manager role controls which addresses are authorized to interact with the vault.


Fees Parameters Setup

feeReceiver (address) – Address where fees will be sent at each settlement.

managementRate (uint16) – Percentage of fee charged for vault operation, express in basis points.

performanceRate (uint16) – Percentage of fee charged on performance gains, express in basis points.

💡 Fees are expressed in basis points (bps)

  • 0.5% = 50 bps

  • 2% = 200 bps

  • 15% = 1500 bps

rateUpdateCooldown (uint256) – Amount of time before a fee rate update takes effect (in second). Immutable.

💡 Value is in seconds (e.g., 3600 for 1 hour).


Technical Parameter

salt (bytes32) – A unique value in bytes32 to used in conjunction with the vault's other parameters to deterministically generate its address.

💡 Value in hexadecimal : e.g.0x24


Vault Deployment Result

When the createVaultProxy transaction is executed, it results in the deployment of three smart contracts:

  • Transparent upgradeable proxy This is the main contract representing your Vault. It manages deposits, withdrawals, valuations, settlements, and fees. It is also the ERC20 address of the recept token representing a share of the vault.

  • Silo Contract This contract is where pending deposits and withdrawals tokens (underlying and shares) are stored.

  • Proxy Admin

    This contract is the admin of the Transparent Upgradeable Proxy. Through it, you can upgrade your vault logic. The owner of this contract is the address supplied at deployment: _initialOwner.

Example: Vault Deployment Output

Upon successful execution, you will see 3 new contracts addresses returned—one for the Vault Proxy, one for ProxyAdmin and one for the Silo.

Last updated