For a while now we have been toiling on what is now a minimal standard for oracle value feeds.
Some oracle implementations from the community: GitHub - alcueca/awesome-oracles: Common Oracle Specification and Adaptors
Some oracle implementations from Euler: GitHub - euler-xyz/euler-price-oracle: Euler Price Oracles, a library of immutable oracle adapters and components
This all probably started when I wrote this article about using value conversions instead of prices in smart contracts:
In very short, this is a minimal standard with a single function, from the spec:
getQuote
Returns the value of baseAmount
of base
in quote
terms.
MUST round down towards 0.
MUST revert with OracleUnsupportedPair
if not capable to provide data for the specified base
and quote
pair.
MUST revert with OracleUntrustedData
if not capable to provide data within a degree of confidence publicly specified.
- name: getQuote
type: function
stateMutability: view
inputs:
- name: baseAmount
type: uint256
- name: base
type: address
- name: quote
type: address
outputs:
- name: quoteAmount
type: uint256
There is a bit more info on the spec, including the lack of a priceOf function.
Although due to process the discussion should take place here, where it is public and searchable, we also have a telegram group that you are welcome to join: Telegram: Join Group Chat