Price Oracles

A price oracle is any tool used to view price information about a given asset.

The PriceFeed contract accepts submissions from the price feed keeper. This keeper calculates prices using the median price of Binance, Gate.io, Kucoin, OKX, Bybit, Coinbase and a few other CEXs. There are two types of keepers:

  • Price feed keeper: submits prices routinely for swaps

  • Position keeper: submits prices when executing a position

These two keepers ensure users a real-time price when they create a position or execute a swap.

To enhance the protocol's protection against incorrect pricing, a third-party oracle (Chainlink/Pyth/API3/…) serves as a Secondary PriceFeed.

The protocol uses the price from the PriceFeed if it is within a configured percentage of the corresponding Secondary PriceFeed. If the price exceeds this threshold then a spread would be created between the keeper price and the secondary price, this threshold is based on the historical max deviation of the third-party oracle price from the median price of reference exchanges.

Prices from the keeper also have an expiry of five minutes, if the last price has been submitted more than five minutes ago, the secondary price will be used instead.

Aside from the keeper nodes, watcher nodes are also ran to verify that the prices submitted by the keepers have not been tampered with. Watcher nodes continually compute the median price and compare this with the prices submitted by keepers, if the prices submitted by a keeper does not match the computed median price, then the watcher sends a transaction to enforce a spread between the keeper price and the secondary price.

PriceFeed contracts on different networks:

  • Mantle - 0x391536D06480e554cFA60F9E2Be0f3BbE5A377CA

  • Arbitrum - 0x2e5dC67A12cdcF80124e0D2ba01b7A9F04De04C6

  • BNB Chain - 0xDe131C73602Df41Decb30E8b1ad16205af048579

Last updated