Skip to main content

App Engine & Vault

  • 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.

  • For an instance, if a Uniswap v3 liquidity management app is uploaded then it's a Uniswap v3 app engine. Based on app engine, a vault is configured on the steer contracts.

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

App Engine

Steer Protocol is focused on flexibility and extensibility, which allows developers to create a wide range of apps including applications for automated liquidity management on Uniswap V3, loan payments on MakerDAO, Oracle updates for data-driven non-fungible tokens (NFTs) on Ethereum, Reinvestment of interest on Aave, and asset management on Set Protocol. These are just a few examples, and the possibilities for apps that could be built on the Steer Protocol are truly endless.

To begin with, Steer supports building Apps for Uniswap v3 concentrated liquidity management, for which Steer has made engines that handle complexity, security, and execution for someone creating an app for yield-generation on Uniswap v3. These App Engines are designed to perform specific tasks or functions in order to help streamline and automate various processes.

Uniswap v3 Steer engine helps manage the liquidity in Uniswap v3 pools. It does this by distributing or depositing liquidity in certain ranges decided by the user upload app within the v3 pools. These apps contain the core logic for how the Steer engine should choose which ranges to focus on.

Essentially, the Steer Uniswap v3 engine helps ensure that there is an appropriate amount of liquidity available in the Uniswap v3 pools at any given time, and it does this by following the guidance provided by the user-published apps.

apptypes.png

Let’s understand Steer Uniswap v3 Engines in more detail: -

  1. Uniswap V3 Single Position

    • This Engine has the ability to manage 100% of liquidity into just a single price range at any given point in time.

    • For instance, if someone wrote an app that manages 100% liquidity for a USDC/ETH pool on Uniswap V3 under one price range of 1000 USDC/ETH to 1200 USDC/ETH at a given point in time should use this engine for such types of apps.

  2. Uniswap V3 Multi-Position

    • This Engine has the ability to split and manage liquidity into just a multiple price range at any given point in time.

    • For instance, if someone wrote an app that manages liquidity for a USDC/ETH pool on Uniswap V3 into multiple split as 25% of total liquidity in the range of 1100 USDC/ETH to 1200 USDC/ETH, 35% liquidity in 1300 USDC/ETH and 1450 USDC/ETH and remaining 40% liquidity in a range of 1500 USDC/ETH to 1700 USDC/ETH at a given point in time should use this engine for such types of apps.

  3. Uniswap V3 Single Position Whitelist

    • This is the same as a Uniswap v3 single position engine but with an additional feature of providing a whitelist of addresses that can only perform actions like a deposit or more into the app.
  4. Uniswap V3 Multi-Position Whitelist

    • This is the same as a Uniswap v3 multi-position engine but with an additional feature of providing a whitelist of addresses that can only perform actions like a deposit or more into the app.

Note: Each Whitelist engine has an assigned manager usually a creator of the app that is allowed to modify the whitelisted address.

What are some more App Engines in future pipelines for Steer Dapp?

The Steer team is working hard to provide as many of these engines as possible in order to help the DeFi community and protocols operate more effectively. By offering a wide range of App Engines, the Steer team is demonstrating a commitment to supporting and advancing the Defi ecosystem. Some of the app engines under development and launching soon are

  1. Dynamic App Engine

    • Dynamic app engine can be used for tasks that require more complex logic or data-driven automation. For example, a dynamic automation can be designed to monitor an external data source and trigger a contract function only when certain conditions are met or. This can be useful for tasks such as triggering a contract function when a certain price threshold is reached or when a specific event occurs on an external platform.

    • Dynamic app engine with the data connectors will enable users to easily connect to external data sources such as APIs or other smart contracts. This makes it easy for users to build complex automations that can interact with multiple data sources and smart contracts.

    • This Engine can be used for apps that may use some data sources (one or many, on-chain or off-chain) for some computation or execution of some smart contract function in a recurring fashion.

    • This engine will truly unlock the potential of smart contract automation.

  2. Oracle App Engine

    • The Steer Oracle App Engine allows individuals or protocols to quickly and easily create decentralized oracles, streamlining the process of obtaining reliable, real-time data for use in smart contracts and other blockchain-based applications. This tool saves time and resources that would otherwise be spent on the labor-intensive process of building oracles from scratch.
    • Creating an off-chain data oracle will now be super easy.
  3. Dollar Cost Average Engine

    • This Engine can be used for apps that want to buy token x for a particular amount of token y from a DEX under various conditions like time, price, etc

There are a few more engines under consideration who's docs will be out soon.

How to request a new app engine?

  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 app engine metadata -
      1. Name - The name of the app engine
      2. *IpfsHash - A hash of a valid JSON form schema file having more details of parameters and types aka configuration for app engine required for the app engine 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 app engine 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 app engine 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 app engine, 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 app engine required for the app engine 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 app engine?

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 app engine 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 app engine type required for the app engine 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.