Where is the price oracle?

AFAIK Dfinity uses a price oracle to calculate conversion rate of ICP to Cycles.

Can someone reveal more details about this price oracle? Is it also a canister? If yes, then how can other application/canister access this info? If not, what is the mechanism that relay price info into the network?

Not sure who to ask, cc @ililic

AFAIK the mechanism to decide for the price of one ICP is through proposals and voting. Every x minutes there is a proposal regarding the market value of one ICP in SDR, people then vote on if this price is correct. If the vote is passed, the conversion rate is updated.

#ExchangeRate: All proposals provide information in “real time” about the market value of ICP, as measured by an International Monetary Fund (IMF) Special Drawing Right (SDR) , which allows the NNS to convert ICP to cycles (which power computation) at a rate that keeps their real-world cost constant. Because proposals on this topic are very frequent, they have a shorter voting period, and votes on this topic are not included in the voting history of the neuron.

[source]

3 Likes

Good to know. Do you also know how to access the latest ExchangeRate on IC?

1 Like

Currently, this is happening every 10 minutes, with the price coming from a single exchange (usually Coinbase, Binance, or Huobi). It would be good to have to have more information on:

  • Is this price spot, TWAP, or VWAP? On what pair?
  • How is that single exchange determined? Is it highest volume over the past 10 minute window?
  • Is 10 minutes fast enough to use as a true price oracle? During periods of high market volatility, this too slow. Can this frequency be increased?
  • How is this process running? I assume a single cronjob on one instance for now, but can it be decentralized?
1 Like

Does this price oracle process run in the IC network or outside?