Vault Configuration

Spool V2 Smart Vaults have the ability to chain a set of instructions.

  • Asset group: Pair or a set of assets used as an underlying currency in a Smart Vault.

  • Strategy Set: A set of up to 16 Strategies used in a Smart Vault.

  • Entry Guard Set: A Smart Contract implementation of checks that are performed before deposit. An example of such a guard is NFT gating, i.e., checking whether the user initiating a deposit owns a particular NFT. Entry guard implementations consist of view-only functions that are not allowed to alter state. Entry/Exit Guards - Implementation

  • Entry Action Set: A set of Smart Contract implementations/functions that are performed before deposit. An example of such a function would be swapping an asset. Entry/Exit Actions - Implementation

  • Exit Guard set: A Smart Contract implementation of a check that is performed after deposit. An example of such a guard is that withdrawal must be 10 days after a deposit.

  • Exit Action set: A set of Smart Contract implementations/functions that are performed after deposit.

  • Compound/Claim protocol rewards: A flag that determines if reward tokens from Strategies are compounded, or made claimable directly by the end user.

  • SVT transferability: Flag that makes SVT tokens transferable or not.

Vault Creators will be required to input the following parameters, please note the definitions explaining each parameter:

    /**
 * @notice Specification for smart vault deployment.
 * @custom:member smartVaultName Name of the smart vault.
 * @custom:member assetGroupId ID of the asset group.
 * @custom:member strategies Strategies used by the smart vault.
 * @custom:member strategyAllocation Optional. If empty array, values will be calculated on the spot.
 * @custom:member riskTolerance Risk appetite of the smart vault.
 * @custom:member riskProvider Risk provider used by the smart vault.
 * @custom:member allocationProvider Allocation provider used by the smart vault.
 * @custom:member actions Actions to register for the smart vault.
 * @custom:member actionRequestTypes Request types for actions.
 * @custom:member guards Guards to register for the smart vault.
 * @custom:member guardRequestTypes Request types for the smart vault.
 * @custom:member managementFeePCt Management fee percentage.
 * @custom:member depositFeePct Deposit fee percentage.
 */
struct SmartVaultSpecification {
    string smartVaultName;
    uint256 assetGroupId;
    address[] strategies;
    uint256[] strategyAllocation;
    int8 riskTolerance;
    address riskProvider;
    address allocationProvider;
    IAction[] actions;
    RequestType[] actionRequestTypes;
    GuardDefinition[][] guards;
    RequestType[] guardRequestTypes;
    uint16 managementFeePct;
    uint16 depositFeePct;

Last updated