Managed dAPIs are sourced directly from multiple first-party data providers running an Airnode and aggregated using Airnode's signed data. The gas costs and availability of managed dAPIs is managed by the dAPI team within API3 DAO.
Datafeed values are stored on-chain within the Api3ServerV1.sol contract and are updated on the basis of beaconIds. To provide aggregated data, beacon sets are used which are a collection of multiple beaconIds that are then used to calculate the aggregated value on-chain using a median function. The median value is then used to update the beaconSetId of the dAPI. Beacon sets get updated by updating each underlying beacon using updateBeaconWithSignedData and then calling the function to update the beacon set updateBeaconSetWithBeacons.
dAPIs are human-readable mappings that maps to a beaconId or beaconSetId. The beaconId for each dAPI gets updated when the price hits the set deviation threshold/heartbeat using Airnode's Signed Data. Airseeker and other entities who have access to Airnode's signed data are responsible for updating each individual beaconId for each dAPI.
A beaconId for each dAPI is derived from the hash of the provider's Airnode's address and its Template ID(a hash of one of the Airnode's endpointId and encoded parameters).
The dAPI team is running Airseekers which are primarily responsible for updating the beaconId based on the specification of the dAPI. Providers also update the beaconId at a higher deviation threshold/heartbeat as a fallback. There are also other entities that serve as additional fallback which operate at an even higher deviation threshold/heartbeat.
Like Airnode, Airseeker is a serverless lambda function that is responsible for updating the values of each beaconId for each dAPI. It is used to update the beacons with signed responses from Airnode's HTTP-Signed-Gateway.
Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push it on-chain in a tamper proof way.
Currently, the API3 Market has 4 different asset classes that are listed below. For each type, there are multiple providers that are running an Airnode and are providing data for the dAPIs. The providers are listed below:
When a user places an order for a managed service, the order will be created on-chain and the dAPI team will update the mapping for the dAPI to point to a particular beaconSetId with the requested deviation threshold and heartbeat. The update process is currently manual and will be automated in the future.
The proxy contract address to read from the dAPI will remain the same. Purchasing a better configuration will not change the proxy contract address for the dAPI.
With managed dAPIs, dApps can have an option to configure the dAPI's deviation threshold and heartbeat. For managed feeds, dApps have the following options to choose from based on the chain and dAPI: