💲

Price Oracle

Currently we use Chainlink oracle for all active markets on Blueberry Bank
Blueberry Lend uses Chainlink oracle to provide price feeds for each lending market where USD is quoted. Blueberry Lend updates the token price whenever Chainlink has a new price written on-chain, and the update mechanism also follows Chainlink's trigger parameter. Each market has its own parameter.
For example, ETH/USD has 0.5% Deviation Threshold and 3,600 seconds Heartbeats, which means a new trusted price is written when Chainlink's off-chain data moves more than the 0.5% deviation threshold or 3,600 seconds have passed since the last price was written on-chain.

Oracle Latency

Using Chainlink oracle helps us to avoid price manipulation within a block, but there are still chances that Chainlink oracle has a price difference from the global price, depending on trigger parameters. In some cases, it leads users to borrow more than they are allowed, if the borrowing limit is calculated by global price.
However, Blueberry bank is an optimally-collateralized lending protocol in that users can borrow assets no more than a certain ratio of collateral value, This is defined by the Collateral Factor of each market. Thus, while we keep monitoring significant price differences between Chainlink oracle and global price, such oracle latency has little effect on the protocol.

Oracle Fallback

We use Chainlink for all active markets on Blueberry Bank by default.
While we believe in Chainlink providing accurate token prices, it is still important to monitor the price difference between our oracle and global price. If we were to find Chainlink's oracle price significantly different from the global price, we could toggle protocol price oracle from using Chainlink to other on-chain alternatives with the Guardian.
Only when Chainlink provides a stale price will we toggle oracle by Guardian.
In some cases, we will use custom oracles when an oracle solution is not supported by Chainlink.

Price Oracle Address

Contract
Address
PriceOracleProxyBB
0x3485Dc9781d7666b67DDf5eD40A28d8e7CbC9615
Core Oracle
0xdfe469ACe05C3d0D4461439e6cF5d0f46F33Ec56