Skip to main content

Vaults & Vault-Types

  • A vault is a contract that indirectly holds the business logic and the assets that will be controlled by the attached app. Each app in Steer is paired with a vault. A Vault can be created by anyone for a selected asset pair. From the smart contract's perspective, a Vault is mapped to the token ID of the app it's implementing.

  • Types of Vaults

    1. Single - A vault with a single asset.

    2. Pair - A vault with two assets.

    3. Multi - A vault with multiple pairs of assets.

      info

      Steer currently supports only pair Vaults for now. Single Asset and Multi Asset are under development.

  • A 'vault type' tells steer contracts what the vault will do and the kind of functionalities a vault will have. Based on the app type, a vault type is selected. For an instance, if a Uniswap v3 liquidity management app is uploaded then it's a Uniswap v3 vault type. Based on vault type, a vault is configured on the steer contracts.

  • A random user can create a vault, but that vault needs to be made from vault types that are supported by steer protocol.

How to request a new vault type?

  1. Join request-new-vault-type channel in steer’s discord.
  2. Post a request with the below information
    1. Provide access to Steer to the proposed contract code eg. GitHub, GitLab, etc, or send the link of the public repository.
    2. Provide the deployment address and the audit report for the proposed contract code.
    3. Finally, provide the vault type metadata -
      1. Name - The name of the vault type
      2. *IpfsHash - A hash of a valid JSON form schema file having more details of parameters and types aka configuration for vault type required for the vault setup and app execution. Uploaded to Steer using our https://upload.steer.finance/
    4. Wallet address who will be provided with the permission to add the vault type after Steer review.

How long does the request take to process?

The request takes around 1-4 weeks depending upon the complexity of the code and request details. Once reviewed steer will give out the permission to add the following address as a vault type to the owner of the request.

What to do after the request is provided?

Call a function called userDeployAndRegisterBeacon from the wallet address provided in the request. Below are the function details :

userDeployAndRegisterBeacon(address _address, string calldata _name, string calldata _ipfsConfigForBeacon)

  • _address - The deployed address of the purposed code, same as the one provided in the request.
  • _name - The name of the vault type, same as the one provided in the request.
  • _ipfsConfigForBeacon - A hash of a valid JSON form schema file having more details of parameters and types aka config for vault type required for the vault setup and app execution. Uploaded to Steer using our https://upload.steer.finance/

Note: All the parameters should be the same provided in the request in the discord channel, if not our system will not be executed and will revert to the function call.

What if I need to request more than one vault type?

Reach out to the team over on discord with your requirements or send an email to contact@steer.finance. The format of the request will vary depending upon request needs.

Once everything is set then the provided wallet address will have time-sensitive permission to facilitate the request.

Once the permission is granted then call deployAndRegisterBeacon from the permitted wallet address. Below are the function details :

deployAndRegisterBeacon (address _address, string calldata _name, string calldata _ipfsConfigForBeacon)

  • _address - The deployed address of the proposed code, same as the one provided in the request.
  • _name - The name of the vault type, same as the one provided in the request.
  • _ipfsConfigForBeacon - A hash of a valid JSON form schema file having more details of parameters and types aka config for vault type required for the vault setup and app execution. Uploaded to Steer using our https://upload.steer.finance/

Note: All the parameters should be the same provided in the request in the discord channel, if not our system will not be executed and will revert to the function call.

info

This is subject to change. Follow us on discord to stay updated.