From 2e60ec57f6ddfe6222297692257765647bd6c09a Mon Sep 17 00:00:00 2001 From: Vansh Wassan <007blackhacker@gmail.com> Date: Sat, 22 Jul 2023 18:07:37 +0530 Subject: [PATCH 1/8] reference section updates: - managed dapis - self-funded dapis --- docs/reference/dapis/sidebar.js | 8 ++ docs/reference/dapis/understand/managed.md | 114 ++++++++++++++++++ .../reference/dapis/understand/self-funded.md | 75 ++++++++++++ 3 files changed, 197 insertions(+) create mode 100644 docs/reference/dapis/understand/managed.md create mode 100644 docs/reference/dapis/understand/self-funded.md diff --git a/docs/reference/dapis/sidebar.js b/docs/reference/dapis/sidebar.js index d07f16ff..7c4311fb 100644 --- a/docs/reference/dapis/sidebar.js +++ b/docs/reference/dapis/sidebar.js @@ -7,6 +7,14 @@ module.exports = [ text: 'dAPIs are data feeds', link: '/reference/dapis/understand/', }, + { + text: 'Managed dAPIs', + link: '/reference/dapis/understand/managed', + }, + { + text: 'Self-funded dAPIs', + link: '/reference/dapis/understand/self-funded', + }, { text: 'Reading dAPIs', link: '/reference/dapis/understand/read-dapis', diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md new file mode 100644 index 00000000..2a909555 --- /dev/null +++ b/docs/reference/dapis/understand/managed.md @@ -0,0 +1,114 @@ +--- +title: Managed dAPIs +sidebarHeader: Reference +sidebarSubHeader: dAPIs +pageHeader: Reference → dAPIs → Understanding dAPIs +path: /reference/dapis/understand/managed.html +outline: deep +tags: +--- + + + + + + + +# {{$frontmatter.title}} + +Managed dAPIs are sourced directly from mulitple [first-party]() data providers +running an [Airnode]() and aggregated using Airnode's signed data. The gas costs +and avaibality of Managed dAPIs is managed by the dAPI team within [API3 DAO](). + +## How it works + +[Datafeed values are stored on-chain](/reference/dapis/understand/#data-feeds-values-stored-on-chain) +and are managed by the [`Api3ServerV1.sol`]() contract. The +`beaconId` for each dAPI gets updated when the price hits the set +[deviation threshold]()/[heartbeat]() using [Airseeker](). +The Airseeker is responsible for updating each individual `beaconId` for each +dAPI. + +A dAPI Name is a human readable name that represents a `beaconId` or +`beaconSetId`. + +A `beaconId` for each dAPI is derived from the hash of the provider's Airnode's +address, Template ID and encoded parameters of the dAPI. + +Providers who are running an Airnode are also running an Airseeker that is +responsible for updating the values of each `beaconId` for each dAPI. Currently, +the dAPI team is running an Airseeker for each dAPI with different +configurations. + +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 (`updateBeaconWithSignedData`) and then calling the update beacon set +function (`updateBeaconSetWithBeacons`) + +For each beacon, there is a dedicated Sponsor wallet that is used to pay for the +gas costs of updating the beacon. The Sponsor wallet is derived from the +`beaconId` and its update parameters. + +## Airseeker + +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 gateway](). + +Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push +it on-chain in a tamper proof way. + +Similar to Airnode's OIS, Airseeker also requires a configuration file that is +used to configure the Airseeker. +[Click here to see an example of an Airseeker configuration file.](https://github.com/api3dao/airseeker/blob/main/config/airseeker.example.json). +The configuration file is used to configure the deviation thresholds and +heartbeat for each `beaconId`. + +## Providers for Managed dAPIs + +Currently, the [API3 Market]() has 4 differnet 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: + +| Asset Type | Data Provider | +| -------------- | ----------------------------------------------------------------------- | +| Cryptocurrency | Nodary, Coinpaprika, Finage, Twelvedata, NCFX, Kaiko, dxFeed | +| Forex | Nodary, Finage, Twelvedata, NCFX, IEXCloud, Finnhub, dxFeed, Tradermade | +| Commodities | Nodary, Finage, Twelvedata, dxFeed, Tradermade | +| Equities | Nodary, Finage, Twelvedata, IEXCloud, finnhub, dxfeed | + +All the data providers listed here are selected and properly tested by the dAPI +team to ensure the highest quality data availability for the listed dAPIs. + +## Update Process + +When a user places an order for a Managed service, the order will be created +on-chain and the dAPI team will manually 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. + +::: info Note + +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 devation +threshold and heartbeat. For each Managed feed, the dApp have the following +options to choose from: + +| Deviation | Heartbeat | +| --------- | --------- | +| 0.25% | 2 minutes | +| 0.25% | 24 hours | +| 0.5% | 24 hours | +| 1% | 24 hours | + + diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md new file mode 100644 index 00000000..a32a51db --- /dev/null +++ b/docs/reference/dapis/understand/self-funded.md @@ -0,0 +1,75 @@ +--- +title: Self-funded dAPIs +sidebarHeader: Reference +sidebarSubHeader: dAPIs +pageHeader: Reference → dAPIs → Understanding dAPIs +path: /reference/dapis/understand/self-funded.html +outline: deep +tags: +--- + + + + + + + +# {{$frontmatter.title}} + +Self-funded dAPIs are single-source data feeds that are funded by the users with +their own funds. The amount of gas supplied determines how long the dAPI will be +available to use. If it runs out of gas, the dAPI will no longer be updated +unless it is funded again. + +## How it works + +Unlike [Managed dAPIs](), self-funded dAPIs are single-source datafeeds. The +data is sourced from a single [first-party]() data provider running an +[Airnode]() and an [Airseeker]() which updates the `beaconId` with Airnode's +signed data. The gas costs for self-funded dAPIs are managed by the users +themselves. As long as the sponsor wallet of the dAPI has enough gas, it will be +updated. + +A `beaconId` for each dAPI is derived from the hash of the provider's Airnode's +address, Template ID and encoded parameters of the dAPI. + +The provider who is running an Airnode is also running an Airseeker that is +responsible for updating the values of each `beaconId` for each dAPI. + +For each beacon, there is a dedicated Sponsor wallet that is used to pay for the +gas costs of updating the beacon. The Sponsor wallet is derived from the +`beaconId` and its update parameters. + +## Airseeker + +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 gateway](). + +Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push +it on-chain in a tamper proof way. + +Similar to Airnode's OIS, Airseeker also requires a configuration file that is +used to configure the Airseeker. +[Click here to see an example of an Airseeker configuration file.](https://github.com/api3dao/airseeker/blob/main/config/airseeker.example.json). +The configuration file is used to configure the [deviation thresholds]() and +[heartbeat]() for each `beaconId`. For self-funded dAPIs, the deviation +threshold is set to 1% and the heartbeat is set to 24 hours. + +No aggregation services are provided for self-funded dAPIs. + +For Self-funded dAPIs, the data provider is running its own Airnode and +Airseeker and the dAPIs are pointed to it's own `beaconIds`. Anyone who decides +to fund a self-funded dAPI will be funding the the Nodary's underlying +`beaconId` and their wallet that the dAPI is pointed towards. + +## Provider for Self-funded dAPIs + +Currently, for self-funded dAPIs, [Nodary]() is the data +provider. Nodary is an independent group within the API3 ecosystem that are +building high-impact oracle services. They currently operate 139 crypto, forex, +stock and commodity asset price data feeds each on 24 chains, adding up to a +total 3336 unique data feeds. + + From 26ca8fb9011344a178495bdd0304e3517c5b5d1f Mon Sep 17 00:00:00 2001 From: Vansh Wassan <007blackhacker@gmail.com> Date: Sat, 22 Jul 2023 19:35:14 +0530 Subject: [PATCH 2/8] dapi reference updates and typos. --- docs/reference/dapis/understand/managed.md | 8 +++++--- docs/reference/dapis/understand/self-funded.md | 16 +++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md index 2a909555..e1982393 100644 --- a/docs/reference/dapis/understand/managed.md +++ b/docs/reference/dapis/understand/managed.md @@ -23,7 +23,7 @@ and avaibality of Managed dAPIs is managed by the dAPI team within [API3 DAO](). ## How it works [Datafeed values are stored on-chain](/reference/dapis/understand/#data-feeds-values-stored-on-chain) -and are managed by the [`Api3ServerV1.sol`]() contract. The +and are updated by the [`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) contract. The `beaconId` for each dAPI gets updated when the price hits the set [deviation threshold]()/[heartbeat]() using [Airseeker](). The Airseeker is responsible for updating each individual `beaconId` for each @@ -37,7 +37,7 @@ address, Template ID and encoded parameters of the dAPI. Providers who are running an Airnode are also running an Airseeker that is responsible for updating the values of each `beaconId` for each dAPI. Currently, -the dAPI team is running an Airseeker for each dAPI with different +the dAPI team is also running an Airseeker for each dAPI with different configurations. To provide aggregated data, beacon sets are used which are a collection of @@ -56,7 +56,7 @@ gas costs of updating the beacon. The Sponsor wallet is derived from the 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 gateway](). +[Airnode's HTTP-Gateway](). Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push it on-chain in a tamper proof way. @@ -111,4 +111,6 @@ options to choose from: | 0.5% | 24 hours | | 1% | 24 hours | +See the guide [Subscribing to Managed dAPIs]() and learn more on how to access Managed dAPIs. + diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md index a32a51db..bda21286 100644 --- a/docs/reference/dapis/understand/self-funded.md +++ b/docs/reference/dapis/understand/self-funded.md @@ -30,6 +30,10 @@ signed data. The gas costs for self-funded dAPIs are managed by the users themselves. As long as the sponsor wallet of the dAPI has enough gas, it will be updated. +Self-funded dAPIs also use the same [`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) contract to store and update datafeed values. + +A dAPI Name is a human readable name that represents a `beaconId`. + A `beaconId` for each dAPI is derived from the hash of the provider's Airnode's address, Template ID and encoded parameters of the dAPI. @@ -45,7 +49,7 @@ gas costs of updating the beacon. The Sponsor wallet is derived from the 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 gateway](). +[Airnode's HTTP-Gateway](). Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push it on-chain in a tamper proof way. @@ -59,17 +63,19 @@ threshold is set to 1% and the heartbeat is set to 24 hours. No aggregation services are provided for self-funded dAPIs. -For Self-funded dAPIs, the data provider is running its own Airnode and +For Self-funded dAPIs, A single data provider is running its own Airnode and Airseeker and the dAPIs are pointed to it's own `beaconIds`. Anyone who decides -to fund a self-funded dAPI will be funding the the Nodary's underlying -`beaconId` and their wallet that the dAPI is pointed towards. +to fund a self-funded dAPI will be funding the the data provider's underlying +`beaconId` and their wallet that the dAPI is mapped towards. ## Provider for Self-funded dAPIs Currently, for self-funded dAPIs, [Nodary]() is the data -provider. Nodary is an independent group within the API3 ecosystem that are +provider. Nodary is an independent group within the API3 Ecosystem that are building high-impact oracle services. They currently operate 139 crypto, forex, stock and commodity asset price data feeds each on 24 chains, adding up to a total 3336 unique data feeds. +See the guide [Subscribing to Self-funded dAPIs]() and learn more on how to access Self-funded dAPIs. + From c22f8e5143f44a34dd19be640e2d4706f02bc259 Mon Sep 17 00:00:00 2001 From: Vansh Wassan <007blackhacker@gmail.com> Date: Sat, 22 Jul 2023 19:35:40 +0530 Subject: [PATCH 3/8] dapi reference update + typos --- docs/reference/dapis/understand/managed.md | 8 +++++--- docs/reference/dapis/understand/self-funded.md | 7 +++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md index e1982393..6002d183 100644 --- a/docs/reference/dapis/understand/managed.md +++ b/docs/reference/dapis/understand/managed.md @@ -23,8 +23,9 @@ and avaibality of Managed dAPIs is managed by the dAPI team within [API3 DAO](). ## How it works [Datafeed values are stored on-chain](/reference/dapis/understand/#data-feeds-values-stored-on-chain) -and are updated by the [`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) contract. The -`beaconId` for each dAPI gets updated when the price hits the set +and are updated by the +[`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) +contract. The `beaconId` for each dAPI gets updated when the price hits the set [deviation threshold]()/[heartbeat]() using [Airseeker](). The Airseeker is responsible for updating each individual `beaconId` for each dAPI. @@ -111,6 +112,7 @@ options to choose from: | 0.5% | 24 hours | | 1% | 24 hours | -See the guide [Subscribing to Managed dAPIs]() and learn more on how to access Managed dAPIs. +See the guide [Subscribing to Managed dAPIs]() and learn more on how to access +Managed dAPIs. diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md index bda21286..36740579 100644 --- a/docs/reference/dapis/understand/self-funded.md +++ b/docs/reference/dapis/understand/self-funded.md @@ -30,7 +30,9 @@ signed data. The gas costs for self-funded dAPIs are managed by the users themselves. As long as the sponsor wallet of the dAPI has enough gas, it will be updated. -Self-funded dAPIs also use the same [`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) contract to store and update datafeed values. +Self-funded dAPIs also use the same +[`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) +contract to store and update datafeed values. A dAPI Name is a human readable name that represents a `beaconId`. @@ -76,6 +78,7 @@ building high-impact oracle services. They currently operate 139 crypto, forex, stock and commodity asset price data feeds each on 24 chains, adding up to a total 3336 unique data feeds. -See the guide [Subscribing to Self-funded dAPIs]() and learn more on how to access Self-funded dAPIs. +See the guide [Subscribing to Self-funded dAPIs]() and learn more on how to +access Self-funded dAPIs. From c590171b5dec545d6e89a239676690f85947a67d Mon Sep 17 00:00:00 2001 From: Vansh Wassan <007blackhacker@gmail.com> Date: Thu, 27 Jul 2023 06:45:58 +0530 Subject: [PATCH 4/8] dAPI Reference section fixes --- docs/reference/dapis/understand/managed.md | 50 +++++++++---------- .../reference/dapis/understand/self-funded.md | 14 +++--- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md index 6002d183..3fa98844 100644 --- a/docs/reference/dapis/understand/managed.md +++ b/docs/reference/dapis/understand/managed.md @@ -23,34 +23,32 @@ and avaibality of Managed dAPIs is managed by the dAPI team within [API3 DAO](). ## How it works [Datafeed values are stored on-chain](/reference/dapis/understand/#data-feeds-values-stored-on-chain) -and are updated by the +within the [`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) -contract. The `beaconId` for each dAPI gets updated when the price hits the set -[deviation threshold]()/[heartbeat]() using [Airseeker](). -The Airseeker is responsible for updating each individual `beaconId` for each +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 certain `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 entites who have access to Airnode's +signed data are responsible for updating each individual `beaconId` for each dAPI. -A dAPI Name is a human readable name that represents a `beaconId` or -`beaconSetId`. - A `beaconId` for each dAPI is derived from the hash of the provider's Airnode's -address, Template ID and encoded parameters of the dAPI. - -Providers who are running an Airnode are also running an Airseeker that is -responsible for updating the values of each `beaconId` for each dAPI. Currently, -the dAPI team is also running an Airseeker for each dAPI with different -configurations. - -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 (`updateBeaconWithSignedData`) and then calling the update beacon set -function (`updateBeaconSetWithBeacons`) +address and its Template ID(a hash of one of the Airnode's `endpointId` and +encoded parameters). -For each beacon, there is a dedicated Sponsor wallet that is used to pay for the -gas costs of updating the beacon. The Sponsor wallet is derived from the -`beaconId` and its update 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 entites that serve as additional fallback which operate at an even +higher deviation threshold/heartbeat. ## Airseeker @@ -66,7 +64,7 @@ Similar to Airnode's OIS, Airseeker also requires a configuration file that is used to configure the Airseeker. [Click here to see an example of an Airseeker configuration file.](https://github.com/api3dao/airseeker/blob/main/config/airseeker.example.json). The configuration file is used to configure the deviation thresholds and -heartbeat for each `beaconId`. +heartbeat for each `beaconId` or `beaconSetId`. ## Providers for Managed dAPIs @@ -102,8 +100,8 @@ the dAPI. ::: With Managed dAPIs, dApps can have an option to configure the dAPI's devation -threshold and heartbeat. For each Managed feed, the dApp have the following -options to choose from: +threshold and heartbeat. For Managed feeds, the dApp have the following options +to choose from: | Deviation | Heartbeat | | --------- | --------- | diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md index 36740579..62d71563 100644 --- a/docs/reference/dapis/understand/self-funded.md +++ b/docs/reference/dapis/understand/self-funded.md @@ -30,17 +30,17 @@ signed data. The gas costs for self-funded dAPIs are managed by the users themselves. As long as the sponsor wallet of the dAPI has enough gas, it will be updated. -Self-funded dAPIs also use the same +Datafeed values for Self-funded dAPIs are also stored on-chain within the same [`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) -contract to store and update datafeed values. +contract and are updated on the basis of `beaconIds`. The provider who is +running an Airnode is also running an Airseeker that is responsible for updating +the values of each `beaconId` for each dAPI. -A dAPI Name is a human readable name that represents a `beaconId`. +dAPIs are human-readable mappings that maps to a certain `beaconId`. A `beaconId` for each dAPI is derived from the hash of the provider's Airnode's -address, Template ID and encoded parameters of the dAPI. - -The provider who is running an Airnode is also running an Airseeker that is -responsible for updating the values of each `beaconId` for each dAPI. +address and its Template ID(a hash of one of the Airnode's `endpointId` and +encoded parameters). For each beacon, there is a dedicated Sponsor wallet that is used to pay for the gas costs of updating the beacon. The Sponsor wallet is derived from the From 845902be19303b729afbd703984166884654e404 Mon Sep 17 00:00:00 2001 From: Vansh Wassan <007blackhacker@gmail.com> Date: Fri, 11 Aug 2023 03:24:22 +0530 Subject: [PATCH 5/8] Added links --- docs/reference/dapis/understand/managed.md | 18 +++++++++--------- docs/reference/dapis/understand/self-funded.md | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md index 3fa98844..aecea063 100644 --- a/docs/reference/dapis/understand/managed.md +++ b/docs/reference/dapis/understand/managed.md @@ -16,9 +16,9 @@ tags: # {{$frontmatter.title}} -Managed dAPIs are sourced directly from mulitple [first-party]() data providers -running an [Airnode]() and aggregated using Airnode's signed data. The gas costs -and avaibality of Managed dAPIs is managed by the dAPI team within [API3 DAO](). +Managed dAPIs are sourced directly from mulitple [first-party](/explore/airnode/why-first-party-oracles.html) data providers +running an [Airnode](/reference/airnode/latest/understand/) and aggregated using Airnode's signed data. The gas costs +and avaibality of Managed dAPIs is managed by the dAPI team within [API3 DAO](/explore/dao-members/). ## How it works @@ -35,8 +35,8 @@ set `updateBeaconSetWithBeacons`. dAPIs are human-readable mappings that maps to a certain `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 entites who have access to Airnode's +set [deviation threshold](/reference/dapis/understand/deviations.html)/[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) using [Airnode's Signed Data](/reference/airnode/latest/understand/http-gateways.html). +[Airseeker](/reference/dapis/understand/managed.html#airseeker) and other entites who have access to Airnode's signed data are responsible for updating each individual `beaconId` for each dAPI. @@ -52,10 +52,10 @@ higher deviation threshold/heartbeat. ## Airseeker -Like [Airnode](), [Airseeker]() is a serverless lambda +Like Airnode, [Airseeker](https://github.com/api3dao/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-Gateway](). +[Airnode's HTTP-Gateway](/reference/airnode/latest/understand/http-gateways.html). Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push it on-chain in a tamper proof way. @@ -68,7 +68,7 @@ heartbeat for each `beaconId` or `beaconSetId`. ## Providers for Managed dAPIs -Currently, the [API3 Market]() has 4 differnet asset classes +Currently, the [API3 Market](https://market.api3.org/) has 4 differnet 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: @@ -110,7 +110,7 @@ to choose from: | 0.5% | 24 hours | | 1% | 24 hours | -See the guide [Subscribing to Managed dAPIs]() and learn more on how to access +See the guide [Subscribing to Managed dAPIs](/guides/dapis/subscribing-managed-dapis/) and learn more on how to access Managed dAPIs. diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md index 62d71563..24fd759a 100644 --- a/docs/reference/dapis/understand/self-funded.md +++ b/docs/reference/dapis/understand/self-funded.md @@ -23,9 +23,9 @@ unless it is funded again. ## How it works -Unlike [Managed dAPIs](), self-funded dAPIs are single-source datafeeds. The -data is sourced from a single [first-party]() data provider running an -[Airnode]() and an [Airseeker]() which updates the `beaconId` with Airnode's +Unlike [Managed dAPIs](/reference/dapis/understand/managed.html), self-funded dAPIs are single-source datafeeds. The +data is sourced from a single [first-party](/explore/airnode/why-first-party-oracles.html) data provider running an +[Airnode](/reference/airnode/latest/understand/) and an [Airseeker](/reference/dapis/understand/self-funded.html#airseeker) which updates the `beaconId` with Airnode's signed data. The gas costs for self-funded dAPIs are managed by the users themselves. As long as the sponsor wallet of the dAPI has enough gas, it will be updated. @@ -48,10 +48,10 @@ gas costs of updating the beacon. The Sponsor wallet is derived from the ## Airseeker -Like [Airnode](), [Airseeker]() is a serverless lambda +Like Airnode, [Airseeker](https://github.com/api3dao/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-Gateway](). +[Airnode's HTTP-Gateway](/reference/airnode/latest/understand/http-gateways.html). Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push it on-chain in a tamper proof way. @@ -59,8 +59,8 @@ it on-chain in a tamper proof way. Similar to Airnode's OIS, Airseeker also requires a configuration file that is used to configure the Airseeker. [Click here to see an example of an Airseeker configuration file.](https://github.com/api3dao/airseeker/blob/main/config/airseeker.example.json). -The configuration file is used to configure the [deviation thresholds]() and -[heartbeat]() for each `beaconId`. For self-funded dAPIs, the deviation +The configuration file is used to configure the [deviation thresholds](/reference/dapis/understand/deviations.html) and +[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) for each `beaconId`. For self-funded dAPIs, the deviation threshold is set to 1% and the heartbeat is set to 24 hours. No aggregation services are provided for self-funded dAPIs. @@ -72,13 +72,13 @@ to fund a self-funded dAPI will be funding the the data provider's underlying ## Provider for Self-funded dAPIs -Currently, for self-funded dAPIs, [Nodary]() is the data +Currently, for self-funded dAPIs, [Nodary](https://nodary.io/) is the data provider. Nodary is an independent group within the API3 Ecosystem that are building high-impact oracle services. They currently operate 139 crypto, forex, stock and commodity asset price data feeds each on 24 chains, adding up to a total 3336 unique data feeds. -See the guide [Subscribing to Self-funded dAPIs]() and learn more on how to +See the guide [Subscribing to Self-funded dAPIs](/guides/dapis/subscribing-self-funded-dapis/) and learn more on how to access Self-funded dAPIs. From e08fd9cd47cc92b9ac0b9039d6a0c20b5a0ec7d4 Mon Sep 17 00:00:00 2001 From: Vansh Wassan <007blackhacker@gmail.com> Date: Fri, 11 Aug 2023 03:24:42 +0530 Subject: [PATCH 6/8] prettier format --- docs/reference/dapis/understand/managed.md | 40 +++++++++------- .../reference/dapis/understand/self-funded.md | 46 +++++++++++-------- 2 files changed, 51 insertions(+), 35 deletions(-) diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md index aecea063..275eb668 100644 --- a/docs/reference/dapis/understand/managed.md +++ b/docs/reference/dapis/understand/managed.md @@ -16,9 +16,11 @@ tags: # {{$frontmatter.title}} -Managed dAPIs are sourced directly from mulitple [first-party](/explore/airnode/why-first-party-oracles.html) data providers -running an [Airnode](/reference/airnode/latest/understand/) and aggregated using Airnode's signed data. The gas costs -and avaibality of Managed dAPIs is managed by the dAPI team within [API3 DAO](/explore/dao-members/). +Managed dAPIs are sourced directly from mulitple +[first-party](/explore/airnode/why-first-party-oracles.html) data providers +running an [Airnode](/reference/airnode/latest/understand/) and aggregated using +Airnode's signed data. The gas costs and avaibality of Managed dAPIs is managed +by the dAPI team within [API3 DAO](/explore/dao-members/). ## How it works @@ -35,10 +37,13 @@ set `updateBeaconSetWithBeacons`. dAPIs are human-readable mappings that maps to a certain `beaconId` or `beaconSetId`. The `beaconId` for each dAPI gets updated when the price hits the -set [deviation threshold](/reference/dapis/understand/deviations.html)/[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) using [Airnode's Signed Data](/reference/airnode/latest/understand/http-gateways.html). -[Airseeker](/reference/dapis/understand/managed.html#airseeker) and other entites who have access to Airnode's -signed data are responsible for updating each individual `beaconId` for each -dAPI. +set +[deviation threshold](/reference/dapis/understand/deviations.html)/[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) +using +[Airnode's Signed Data](/reference/airnode/latest/understand/http-gateways.html). +[Airseeker](/reference/dapis/understand/managed.html#airseeker) and other +entites 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 @@ -52,9 +57,11 @@ higher deviation threshold/heartbeat. ## Airseeker -Like Airnode, [Airseeker](https://github.com/api3dao/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 +Like Airnode, +[Airseeker](https://github.com/api3dao/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-Gateway](/reference/airnode/latest/understand/http-gateways.html). Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push @@ -68,10 +75,10 @@ heartbeat for each `beaconId` or `beaconSetId`. ## Providers for Managed dAPIs -Currently, the [API3 Market](https://market.api3.org/) has 4 differnet 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: +Currently, the [API3 Market](https://market.api3.org/) has 4 +differnet 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: | Asset Type | Data Provider | | -------------- | ----------------------------------------------------------------------- | @@ -110,7 +117,8 @@ to choose from: | 0.5% | 24 hours | | 1% | 24 hours | -See the guide [Subscribing to Managed dAPIs](/guides/dapis/subscribing-managed-dapis/) and learn more on how to access -Managed dAPIs. +See the guide +[Subscribing to Managed dAPIs](/guides/dapis/subscribing-managed-dapis/) and +learn more on how to access Managed dAPIs. diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md index 24fd759a..64c4c668 100644 --- a/docs/reference/dapis/understand/self-funded.md +++ b/docs/reference/dapis/understand/self-funded.md @@ -23,12 +23,14 @@ unless it is funded again. ## How it works -Unlike [Managed dAPIs](/reference/dapis/understand/managed.html), self-funded dAPIs are single-source datafeeds. The -data is sourced from a single [first-party](/explore/airnode/why-first-party-oracles.html) data provider running an -[Airnode](/reference/airnode/latest/understand/) and an [Airseeker](/reference/dapis/understand/self-funded.html#airseeker) which updates the `beaconId` with Airnode's -signed data. The gas costs for self-funded dAPIs are managed by the users -themselves. As long as the sponsor wallet of the dAPI has enough gas, it will be -updated. +Unlike [Managed dAPIs](/reference/dapis/understand/managed.html), self-funded +dAPIs are single-source datafeeds. The data is sourced from a single +[first-party](/explore/airnode/why-first-party-oracles.html) data provider +running an [Airnode](/reference/airnode/latest/understand/) and an +[Airseeker](/reference/dapis/understand/self-funded.html#airseeker) which +updates the `beaconId` with Airnode's signed data. The gas costs for self-funded +dAPIs are managed by the users themselves. As long as the sponsor wallet of the +dAPI has enough gas, it will be updated. Datafeed values for Self-funded dAPIs are also stored on-chain within the same [`Api3ServerV1.sol`](https://github.com/api3dao/airnode-protocol-v1/tree/79b509f0e88a96fa4ea3cd576685051d37c9a504/contracts/api3-server-v1) @@ -48,9 +50,11 @@ gas costs of updating the beacon. The Sponsor wallet is derived from the ## Airseeker -Like Airnode, [Airseeker](https://github.com/api3dao/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 +Like Airnode, +[Airseeker](https://github.com/api3dao/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-Gateway](/reference/airnode/latest/understand/http-gateways.html). Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push @@ -59,9 +63,11 @@ it on-chain in a tamper proof way. Similar to Airnode's OIS, Airseeker also requires a configuration file that is used to configure the Airseeker. [Click here to see an example of an Airseeker configuration file.](https://github.com/api3dao/airseeker/blob/main/config/airseeker.example.json). -The configuration file is used to configure the [deviation thresholds](/reference/dapis/understand/deviations.html) and -[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) for each `beaconId`. For self-funded dAPIs, the deviation -threshold is set to 1% and the heartbeat is set to 24 hours. +The configuration file is used to configure the +[deviation thresholds](/reference/dapis/understand/deviations.html) and +[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) for each +`beaconId`. For self-funded dAPIs, the deviation threshold is set to 1% and the +heartbeat is set to 24 hours. No aggregation services are provided for self-funded dAPIs. @@ -72,13 +78,15 @@ to fund a self-funded dAPI will be funding the the data provider's underlying ## Provider for Self-funded dAPIs -Currently, for self-funded dAPIs, [Nodary](https://nodary.io/) is the data -provider. Nodary is an independent group within the API3 Ecosystem that are -building high-impact oracle services. They currently operate 139 crypto, forex, -stock and commodity asset price data feeds each on 24 chains, adding up to a -total 3336 unique data feeds. +Currently, for self-funded dAPIs, +[Nodary](https://nodary.io/) is the data provider. Nodary is +an independent group within the API3 Ecosystem that are building high-impact +oracle services. They currently operate 139 crypto, forex, stock and commodity +asset price data feeds each on 24 chains, adding up to a total 3336 unique data +feeds. -See the guide [Subscribing to Self-funded dAPIs](/guides/dapis/subscribing-self-funded-dapis/) and learn more on how to -access Self-funded dAPIs. +See the guide +[Subscribing to Self-funded dAPIs](/guides/dapis/subscribing-self-funded-dapis/) +and learn more on how to access Self-funded dAPIs. From 180e3509972e69cf0063a1726e062b525fa163b7 Mon Sep 17 00:00:00 2001 From: Ashar Shahid Date: Sat, 12 Aug 2023 16:04:19 -0400 Subject: [PATCH 7/8] corrections --- docs/reference/dapis/understand/managed.md | 8 ++++---- docs/reference/dapis/understand/self-funded.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md index 275eb668..f5b0e254 100644 --- a/docs/reference/dapis/understand/managed.md +++ b/docs/reference/dapis/understand/managed.md @@ -35,7 +35,7 @@ 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 certain `beaconId` or +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](/reference/dapis/understand/deviations.html)/[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) @@ -62,7 +62,7 @@ Like Airnode, 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-Gateway](/reference/airnode/latest/understand/http-gateways.html). +[Airnode's HTTP-Signed-Gateway](/reference/airnode/latest/understand/http-gateways.html). Airseeker uses Airnode's built-in HTTP-Gateway to receive signed data and push it on-chain in a tamper proof way. @@ -107,8 +107,8 @@ the dAPI. ::: With Managed dAPIs, dApps can have an option to configure the dAPI's devation -threshold and heartbeat. For Managed feeds, the dApp have the following options -to choose from: +threshold and heartbeat. For Managed feeds, dApps have the following options +to choose from based on the chain and dAPI: | Deviation | Heartbeat | | --------- | --------- | diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md index 64c4c668..68c6869c 100644 --- a/docs/reference/dapis/understand/self-funded.md +++ b/docs/reference/dapis/understand/self-funded.md @@ -46,7 +46,7 @@ encoded parameters). For each beacon, there is a dedicated Sponsor wallet that is used to pay for the gas costs of updating the beacon. The Sponsor wallet is derived from the -`beaconId` and its update parameters. +`beaconId` ,its update parameters and the extended Public key of the `Airseeker` mnemonic. ## Airseeker @@ -74,7 +74,7 @@ No aggregation services are provided for self-funded dAPIs. For Self-funded dAPIs, A single data provider is running its own Airnode and Airseeker and the dAPIs are pointed to it's own `beaconIds`. Anyone who decides to fund a self-funded dAPI will be funding the the data provider's underlying -`beaconId` and their wallet that the dAPI is mapped towards. +`beaconId` and their Sponsor wallets. ## Provider for Self-funded dAPIs From ee2323530e9482747521d2f0bc66b39ad892b513 Mon Sep 17 00:00:00 2001 From: Ashar Shahid Date: Sat, 12 Aug 2023 16:18:53 -0400 Subject: [PATCH 8/8] corrections --- docs/reference/dapis/understand/managed.md | 9 ++++----- docs/reference/dapis/understand/self-funded.md | 5 +++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/reference/dapis/understand/managed.md b/docs/reference/dapis/understand/managed.md index f5b0e254..91c97c99 100644 --- a/docs/reference/dapis/understand/managed.md +++ b/docs/reference/dapis/understand/managed.md @@ -35,9 +35,8 @@ 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 +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](/reference/dapis/understand/deviations.html)/[heartbeat](/reference/dapis/understand/deviations.html#heartbeat) using [Airnode's Signed Data](/reference/airnode/latest/understand/http-gateways.html). @@ -107,8 +106,8 @@ the dAPI. ::: With Managed dAPIs, dApps can have an option to configure the dAPI's devation -threshold and heartbeat. For Managed feeds, dApps have the following options -to choose from based on the chain and dAPI: +threshold and heartbeat. For Managed feeds, dApps have the following options to +choose from based on the chain and dAPI: | Deviation | Heartbeat | | --------- | --------- | diff --git a/docs/reference/dapis/understand/self-funded.md b/docs/reference/dapis/understand/self-funded.md index 68c6869c..f1517945 100644 --- a/docs/reference/dapis/understand/self-funded.md +++ b/docs/reference/dapis/understand/self-funded.md @@ -46,7 +46,8 @@ encoded parameters). For each beacon, there is a dedicated Sponsor wallet that is used to pay for the gas costs of updating the beacon. The Sponsor wallet is derived from the -`beaconId` ,its update parameters and the extended Public key of the `Airseeker` mnemonic. +`beaconId` ,its update parameters and the extended Public key of the `Airseeker` +mnemonic. ## Airseeker @@ -74,7 +75,7 @@ No aggregation services are provided for self-funded dAPIs. For Self-funded dAPIs, A single data provider is running its own Airnode and Airseeker and the dAPIs are pointed to it's own `beaconIds`. Anyone who decides to fund a self-funded dAPI will be funding the the data provider's underlying -`beaconId` and their Sponsor wallets. +`beaconId` and their Sponsor wallets. ## Provider for Self-funded dAPIs