Price Oracles
Chainlink secures the protocol from pricing attacks
OUSD is designed to stay pegged at 1 USD and be 1:1 backed with its underlying stablecoins. This is trickier than it sounds because these underlying stablecoins are constantly deviating from their own desired 1 USD pegs. While the majority of daily fluctuations are minor, there have been major swings in price that have occurred in the past and are likely to occur again in the future.
Coin | Low | High | Delta | Source |
USDC | $0.929222 Mar 13, 2020 | $1.11 Oct 15, 2018 | $0.180778 | |
USDC | $0.924188 Aug 02, 2020 | $1.17 May 08, 2019 | $0.245812 | |
DAI | $0.945505 May 10, 2020 | $1.11 Mar 13, 2020 | $0.164495 | |
DAI | $0.903243 Nov 25, 2019 | $1.22 Mar 13, 2020 | $0.316757 | |
USDT | $0.849809 Feb 02, 2017 | $1.21 May 27, 2017 | $0.360191 | |
USDT | $0.572521 Mar 02, 2015 | $1.32 Jul 24, 2018 | $0.747479 |
The rebasing function treats 1 stablecoin as 1 OUSD for simplicity and to protect OUSD balances from being affected by the daily fluctuations in the price of the underlying stablecoins. Since the rebase function only counts coins, OUSD balances should only increase.
In order to mint and redeem the appropriate number of OUSD on entry and exit, the smart contracts need to accurately price the USDT, USDC, and DAI that is entering and exiting the system.
As an added precaution, OUSD never pays more than a dollar for a stablecoin, nor sells a stablecoin for less than a dollar. In situations where DAI, USDC or USDT fall below the $1 peg, OIP-4 disables minting of additional OUSD tokens using the de-pegged asset. Oracles giving wrong prices will not result in a reduction of the number of stablecoins held. Gains that are collected as a result of stablecoins slipping from their peg are redistributed to the remaining holders of OUSD in the form of additional yield.
As a decentralized protocol, OUSD must rely on non-centralized sources for these prices. OUSD uses Chainlink oracles for pricing data for DAI, USDC and USDT. You can read more about our decision to work with Chainlink on our blog. The specific Chainlink oracles being utilized are listed in the Registry.
In a similar manner, OETH uses available Chainlink oracles to make sure that the protocol is not overpaying for LSTs that may be trading at a lower value. As of April 2023, Chainlink offered pricing oracles for stETH and rETH, but not frxETH. For Frax, the protocol utilizes Curve's time-weighted price oracle instead.
When reward tokens from the various strategies are sold for additional yield, Chainlink oracles are used to ensure that the sale price slippage has not exceeded normal bounds. The same is also true for OGV buybacks that are executed using a portion of the yield that is generated by the protocol.
When minting and redeeming, a minimum required amount can be passed into the contract call to ensure that the entire transaction fails if not enough OUSD/OETH or stablecoins/LSTs would be returned to the user due to changing prices.
Last modified 10d ago