Vault Creation
Determine Custody Type:
Non-Custodial Vault (default set-up at Velvet.Capital web3 app): No one holds custody of the vault, only other Velvet contracts can interact with the vault
Multisig Vault (custom set-up for white-label solutions at request, contact the team for additional information): The vault uses a multisig Safe standard (aka Gnosis Safe), enabling multi signature access to the vault (the vault creator can decide on the number of keys and threshold)
Create a Vault
For Non-Custodial Vault:
Call the createIndexNonCustodial function with your desired configurations. The configurations include parameters like management fees, investment amount limits, whitelisted tokens, and more (can be inputted using Velvet web3 app).
The system will automatically set the exchange handler as the owner with a threshold of 1, ensuring only the exchange handler can make decisions for the vault (within its restrictions).
Additional notes
When creating a vault, the _createIndex internal function gets triggered, performing the following steps:
Validation: The function first validates the input parameters, such as ensuring investment amount limits are within acceptable ranges and checking the protocol's paused state.
Set Up Exchange Handler: A new proxy instance of the exchange handler is created.
Access Control: A new instance of AccessController is created to manage permissions within the vault ecosystem.
Asset Manager Configuration: A new proxy instance of the asset manager configuration is created with the specified parameters like fees, investment limits, and token whitelists.
Vault Creation: Depending on the custody type, a Gnosis Safe vault is created. For multisig vaults, the provided owners and threshold are used. For non-custodial vaults, the exchange handler is set as the owner with a threshold of 1.
Index Swap Creation: An indexSwap proxy instance is created, linking to the vault, exchange handler, asset manager configuration, and other essential components.
Rebalancing Setup: Proxy instances for rebalancing, off-chain rebalancing, and rebalance aggregator are created and initialized.
Access Control Setup: Roles and permissions are established using the AccessController instance.
Fee Module Initialization: The fee module is initialized with the necessary parameters.
Logging: The details of the created vault are logged using the IndexInfo event, and the internal index ID counter is incremented.
Post-Creation
Once the vault is created, you can interact with it using its address. Depending on the modules used, you can trade assets, rebalance the portfolio, and manage fees and other configurations.
The vault creator needs to enable USDC/USDT deposits to allow users to invest using stablecoins.
After that step, the vault creator needs to initialize tokens into the newly created vault according to their strategy. After this step the vault is ready for users to interact with.