Data Connectors
A data connector is a set of instructions Keeper nodes use to fetch data. The resulting data can either be passed directly to contracts as an oracle source, or can processed by an execution bundle to implement more complex logic. Data connectors consist of two parts: request logic and transformation logic. These data connector bundles are uploaded to the Steer Protocol and can be written in any popular language which can be compiled into WASM, such as Typescript (AssemblyScript), Python, Rust, etc. This code is executed by the Keeper nodes, the moderators for the steer network. These connectors will be publicly available on the data connector marketplace so others needing the same or similar data can reuse or fork existing bundles.
You can view all 40+ possible languages and their levels of support here: Steer Protocol Language Support
What data can be fetched?
Potentially anything that is accessable via HTTP and time deterministic can be fetched. Current and historic on-chain state variables can be read in via TheGraph, or you can make an on-chain data connector to read view and pure functions.
Any specific authorization, headers, or cookies possibly desired or required will have to be deterministically available from the bundle. These bundles will not be private and run by many nodes, so take caution with credentials or potential rate limits. We are working toward a resoulution for this.
What is the point of transformations?
The role of a transformation is to shape data into a consumable form for apps, on-chain function execution, or simply to output a more generic type. This logic should be included in the same bundle as the request handling.
How are the data connectors run?
Data connectors are executed by a Steer Node App run by the node runners in an isolated sandboxed environment. The node uses a callback system so the bundle can verify all necessary data has been retrieved. The results from all Keeper nodes running the data connectors will factor into reaching concensus.