Iron Bank uses Chainlink oracle to provide price feed for each lending market where USD is quote. Iron Bank updates 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.
Using Chainlink oracle helps us to avoid price manipulation within a block, but there are still chances that Chainlink oracle has 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 borrow limit is calculated by global price.
However, Iron Bank is an over-collateral lending protocol that users can borrow assets no more than a certain ratio of collateral value. This is defined by Collateral Factor of each market. Thus, while we keep monitoring significant price difference between Chainlink oracle and global price, such oracle latency has little effect on the protocol.
We use Chainlink oracle for all active markets on Iron Bank by default.
While we believe in Chainlink providing accurate token price, it is still important to monitor price difference between our oracle and global price. If we were to find Chainlink oracle price significantly different from global price, we could toggle protocol price oracle from using Chainlink to other on-chain alternatives with the Guardian.
Only when Chainlink provides stale price will we toggle oracle by Guardian.
There are some tokens that we cannot find the corresponding price feeds on Chainlink. Therefore, we use price feed alternative instead.
For WBTC, we use the combination of two price feeds WBTC/BTC and BTC/USD, to get WBTC price in USD quote as the source.
For the following stable coins, we use fiat price instead: