Skip to content

Commit

Permalink
[RDS-978] - improve price feeds (#68)
Browse files Browse the repository at this point in the history
* Move price feeds

* Add redirections

* Add redirections

* Add types fo feeds

* Fix lint

* Fix lint

* fix typo

* Bring back old redirection

* Fix after review

* Add link

* Lint
  • Loading branch information
roszpun authored Oct 15, 2024
1 parent 5c5f18a commit a7b1b7f
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ import Tabs from "@theme/Tabs";

The following feeds are available on-chain and are compatible with the [Chainlink interface](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol).

:::tip Detailed preview of price feeds available

**[See the feeds in our app](https://app.redstone.finance/app/feeds/)**

:::

<Tabs>
<TabItem value="Ethereum">

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ To burn LBTC and unstake BTC, a user initiates the burn by sending LBTC back to

### Overview

RedStone delivers LBTC/BTC fundamental price using both [pull](./models/redstone-pull.mdx) and [push](./models/redstone-push.md) models. The price is calculated as a ratio between BTC controlled by the Lombard protocol and the total supply of LBTC tokens across all supported chains. There are also adjustments for **total_unclaimed_lbtc** (LBTC tokens that are not yet minted but already have correlated BTC tokens deposited to the Lombard protocol) and **total_btc_unstakes_pending** (BTC tokens in the 7-day withdrawal period).
RedStone delivers LBTC/BTC fundamental price using both [pull](./../../models/redstone-pull.mdx) and [push](./../../models/redstone-push.md) models. The price is calculated as a ratio between BTC controlled by the Lombard protocol and the total supply of LBTC tokens across all supported chains. There are also adjustments for **total_unclaimed_lbtc** (LBTC tokens that are not yet minted but already have correlated BTC tokens deposited to the Lombard protocol) and **total_btc_unstakes_pending** (BTC tokens in the 7-day withdrawal period).

Currently, the value has an upper cap of 1, meaning a healthy value is 1, indicating the protocol’s stability. A value of 1 also signifies that there are as many or more BTC held by the protocol than there are LBTC tokens in circulation, ensuring full or over-collateralization. For example, if half of the BTC tokens disappear from wallets controlled by Lombard, but the LBTC supply remains the same, the ratio would drop to 0.5. Once Lombard starts generating yield, this cap will be removed, and the value will gradually increase, similar to reward bearing LST tokens like wstETH or pufETH.

Expand Down
31 changes: 31 additions & 0 deletions docs/get-started/price-feeds/types-of-feeds/types-of-feeds.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# 🎓 Types of Oracle Feeds at RedStone

Oracles deliver data feeds directly to dApps or blockchains for the correct execution of transactions in smart contracts. Throughout the past years, the DeFi market has shown various expectations and needs towards the setup of oracle feeds. RedStone is at the forefront of innovation answering the needs of developers in that sector. Therefore, we identify the following types of data feeds:

1. **Market Feed**

The regular market price derived from centralized and decentralized exchanges, i.e., ETH / USD.

2. **Contract Rate Feed**

Also known as Exchange Rate or Fundamental Feed. A ratio between the underlying asset and its derivative derived from the smart contract of a protocol, i.e., wstETH / stETH rate derived from Lido contract or weETH / eETH derived from Ether.fi contract.

3. **Real World Feed**

A feed derived from institutional API or another source providing numerical information, i.e., CESR or SOFR.

4. **Proof of Reserve Feed**

Also known as Net Asset Value (NAV) feed. A data feed based on API or another source that informs about the value of assets backing tokens issued against it, i.e., Blackrock BUIDL. Technically a subsection of Real World Feed.

5. **Protocol Native Oracle**

The custom implementation of logic supporting a particular oracle, i.e., Bitcoin Staking Oracle. For example: LBTC / BTC price feed, derived based on the number of LBTC minted and the total amount of BTC deposited into Lombard's system on the Bitcoin chain. Detailed description [here](./lombard.md).

| Feed Type | Denomination | Deviation Comes From | Complexity of Delivery |
| :------------------------- | :------------------------------------------------------- | :----------------------------------------------- | :------------------------------------------------------- |
| **Market Feed** | Mainly USD, can also be another currency i.e., ETH / BTC | Market trading | Relatively simple |
| **Contract Rate Feed** | Underlying asset i.e., ETH for Ethereum LSTs | Specified ratio changes in the smart contract | Requires understanding of edge cases and on-chain source |
| **Real World Feed** | Custom, i.e., for CESR it's a % yield from ETH staking | Custom, i.e., CESR API is updated every 24 hours | Depends on the feed, usually medium difficulty |
| **Proof of Reserve Feed** | Custom, usually USD value | Custom, usually every 24 hours from an API | Depends on the source, usually medium difficulty |
| **Protocol Native Oracle** | Custom, i.e., BTC in the case of Lombard internal Oracle | Custom, i.e., each X minutes for Lombard | Usually work-intensive |
6 changes: 5 additions & 1 deletion docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,12 @@ const config = {
{
redirects: [
{
to: "/docs/get-started/price-feeds",
from: "/docs/smart-contract-devs/price-feeds",
to: "/docs/get-started/price-feeds",
},
{
from: "/docs/get-started/lombard",
to: "/docs/get-started/price-feeds/types-of-feeds/lombard",
},
],
},
Expand Down

0 comments on commit a7b1b7f

Please sign in to comment.