SortedOracles
SortedOracles stores and maintains the state of oracle reports. Oracle clients insert their rates into a sorted linked list and the contract checks newly inserted rates against the on-chain circuit breaker BreakerBox.sol. If valid, the rate can be used by the protocol to price swaps, otherwise, trading will be halted.
Unique Rate Feed Identifiers
Each oracle rate, internally called rate feed, is uniquely identified by a rateFeedID
. It is used when adding oracle rates to the SortedOracles smart contract by calling the addOracle
function in a Celo governance proposal:
For CELO/cStable
rate feeds, the unique identifier is the address of the stable token. Since this doesn't work for more than one pair including the same stable token, which was not initially planned, a new formula is used to create unique rate feed identifiers for rate feeds other than CELO/cStable
.
These identifiers can be derived using the following formula:
For example, USDCUSD
inserted gives the following formula:
Rates that are relayed from Chainlink price feeds have the prefix "relayed:" added to the pair.
An example can be found in this Celo Governance Proposal.
Last updated