Create vault

Creating a vault

The 'deploySmartVault' function allows the deployment of a new SmartVault using specified configuration.

Before utilizing the 'deploySmartVault' function, ensure that you have access to a Signer or Fireblocks provider capable of signing transactions. The 'deploySmartVault' function requires a 'SmartVaultSpecification' parameter, which defines the desired configuration for the new SmartVault.

const createVault = async () => {
  const smartVaultSpecification: SmartVaultSpecificationStruct = {
    smartVaultName: 'SDK TEST VAULT',
    svtSymbol: 'SDKT',
    baseURI: 'https://nft_token_uri/',
    assetGroupId: asset_group_id,
    strategies: [
      'strategy_adddress1',
      'strategy_address2',
      .
      .
      .
],
  strategyAllocation: 0,
    riskTolerance: 10,
    riskProvider: "risk_provider",
    allocationProvider: "alloc_provider",
    actions: [],
    actionRequestTypes: [],
    guards: [],
    guardRequestTypes: [],
    managementFeePct: management_fee_pct,
    depositFeePct: deposit_fee_pct,
    performanceFeePct: performance_fee_pct,
    allowRedeemFor: true,
};

  const transaction = await yelaySDK.deploySmartVault(smartVaultSpecification);
  const txResponse = await transaction.wait();
  console.log(txResponse);
}

Parameters explanation:

Key parameters:

  • smartVaultName: The name of the vault that will be seen in the Vaults view in Yelay UI as well as on-chain.

  • svtSymbol: The name of the deposit token (share), as will be seen on-chain, f.e.: https://etherscan.io/token/0x873806f889daf6358a7dbd2cfcd999ecb4b7e0ad.

  • baseURI: NFT metadata URI.

  • assetGroupId: The strategies that are submitted to the vaults have to have assets from the same group and have the correct asset group id specified. Use listAssetGroups and listStrategies methods to get the right asset group for the strategies you want to use.

  • strategies: Set of strategies addresses to be used by the smart vault.

Strategy allocation:

  • strategyAllocation: Use to set fixed allocations manually. In that case you have to pack allocations for strategies to a BigNumber.

  • riskTolerance: Parameter that dictates allocation of user's assets across strategies. Minimum value is -10, maximum is 10.

  • riskProvider: Address of a risk provider used by the smart vault. In case of fixed strategy allocation this parameter can be empty. Use listRiskProviders method to list and select a risk provider.

  • allocationProvider - Address of an allocation provider used by the smart vault. In case of fixed strategy allocation this parameter can be empty.

    • The contract addresses for the allocation providers on mainnet:

      • exponential: 0xcebF2117a483EFf141c25bf8d365B9B81Af9112F

      • linear: 0x7DBadf3CC5C9C7177B6f976910eF84AD90E018a8

      • uniform: 0x6f519d997CD2027F164586718Ca248d2384D7dB1

    • The contract addresses for the allocation providers on staging env:

      • exponential: 0x015AFC876A4d115E2fF01000d9D3ADC714e5870B

      • linear: 0x4e1157b40e62782F04d7F4a915f340B8F445B008

      • uniform: 0xE3Eca4c4B0BB84532D43db64E505CC6eE750fD7C

Fees:

  • managementFeePct - fees collected by the vault owner. Maximum amount is 5

  • performanceFeePct - fees collected by the vault owner. Maximum amout is 20

  • depositFeePct - deposit fee percentage. Maximum amount is 5

Advanced features - actions and conditions (“guards”):

  • actions - Address of predefined state changing actions to register for the smart vault (eg. when deposition, withdrawing).

  • actionRequestTypes - Defines in what occasions actions or guards are triggered (1 - Deposit, 2 - Withdrawal, 3 - TransferNFT, 4 - BurnNFT, 5 - TransferSVTs).

  • guards - predefined View only checks to register for the smart vault (eg. when deposition, withdrawing).

  • guardRequestTypes - Request types for the smart vault.

  • allowRedeemFor - Allows vault owner to kick users out of vault .

Creating vault manually

Alternatively, partners could send vault information to Yelay according to this template:

Vault owner address (multi-sig): 
Name of the vault: 
Deposit token (SVT) ticker: 
Strategies:    // f.e: gearbox-v3-usdc and yearn-v2-usdc
AllocationProvider:    // by default: ‘exponential’
RiskTolerance:    // by default: ’10’, majority of allocation to the strategies with higher APY

Yelay team will create on-chain transaction based on these configs and pass it to the partner so that they you can execute it via their own Vault Owner's multi-sig.

Vault management

Transferring ownership

In order to initiate this process, owner should call the transferSmartVaultOwnership method on theSpoolAccessControl contract: (https://etherscan.io/address/0x7b533e72E0cDC63AacD8cDB926AC402b846Fbd13#writeProxyContract).

After that newOwner must accept it by calling acceptSmartVaultOwnership on the same SpoolAccessControl contract.

Last updated