The Steer architecture has an efficient and dependable design, featuring a dual-layer consensus system. This system ensures modularity, safety, and ease of use. Here is an overview of its core components:
Apps & Data Connectors -
An app is a set of instructions that consists of off-chain logic paired with an app engine. These apps are then packaged into WASM bundles that are uploaded to the Steer Protocol. Apps can be written in any of the many popular languages that can be compiled into WASM, such as Typescript (AssemblyScript), Python, Rust, etc. These apps are then executed by the Keeper nodes, which are the moderators for the Steer network.
WASM provides a ton of security on the app level. Each WebAssembly module executes within a sandboxed environment separated from the host runtime using fault isolation techniques. This implies:
- Applications execute independently, and can’t escape the sandbox without going through appropriate APIs.
- Applications generally execute deterministically with limited exceptions.
- Checkout https://webassembly.org/docs/security/ to learn about security in webAssembly.
Data connectors, much like apps, are compiled into WebAssembly (WASM), which ensures similar levels of security. However, what sets data connectors apart is their ability to provide robust security measures at the data level, whether it is off-chain or on-chain data.
App Engines -
App engines are essential audited Steer contracts that users select when deploying their apps on the Steer system. These engines play a crucial role in ensuring the correct functioning and security on the Steer system.
App engines have parameters that need to be configured before deploying an app. These params help in security at execution level, For instance, deploying a yield generating app on uniswap v3 or sushiswap v3, has params like twapInterval, max slippage, ratio error tolerance, and max tick change, which act as upper and lower thresholds while execution is happening, In case of abrupt changes where these params are breached, the system actually reverts and does not execute, We do have similar checks on contracts as well. With these built-in security checks and anomaly detection mechanisms, we make sure that the execution is secured.
Network of Nodes & Execution Process of a Single Node -
From an overview perspective, once an app is deployed, it is securely retrieved by every node in the Steer network for execution. Each node performs various actions needed for app execution off-chain, led by a vote on the action, and then finally, once the consensus is reached, on-chain execution happens.
Each node comprises multiple services, with two of them serving as the primary services -
- The Observer service continuously monitors the Steer contracts on chain for newly created apps or emitted events. It promptly saves the metadata of any newly added apps into its local database.
- The Scheduler service selects the saved apps from the database and schedules their execution based on the app execution logic and a few more constraints in a priority queue system. Scheduling takes into account factors such as app priority, dependencies, resource requirements, and execution time.
- Both the Observer/Scheduler services run 24*7 as long as a node is live on the Steer network, This ensures optimised and efficient execution of apps within a queue system.
- The executor within a node selects an app from the queue system based on its scheduled time and offset time. It creates an action hash and posts the result on the Steer Orchestrator contract on the blockchain. Nodes reach consensus by casting votes on the orchestrator contract. Upon receiving sufficient votes, the action is executed, and the results are recorded on the blockchain.
Each node also provides additional services such as monitoring app state, recording logs, smart transaction management, coordination mechanisms, identity services, and database management.
User Interface -
The Steer system offers a user interface that provides a seamless and user-friendly experience. Users can easily deploy apps or access already deployed apps to perform The interface is designed to be clear and intuitive, catering to the needs of developers, protocols, and LPs. The technical knowledge requirements are minimal, making it convenient for everyone.
The Steer architecture combines these components to create a secure, efficient, and user-friendly platform for deploying and executing apps.