Oracles are price feed modules that report the value of assets in the oneToken Vault through a normalized interface. In the ICHI and oneToken system, Oracles are used for providing price feeds for project tokens, Collateral Tokens, and oneTokens. Price Oracles are vital to the correct operation of the system and are chosen based on preference for price feed source, interpretation (e.g. smoothing), and volatility-detection logic.
oneToken Oracles are structured in a reusable fashion. As Replaceable Modules, we expect Oracles to evolve and be customized towards the oneTokens they will be used for so the system assumes nothing about the operation of the Oracle itself. Instead, we define a normalized interface so that new implementations can be wrapped and used to report back the results of inspecting external sources. The figure below shows how the Oracle inheritance is structured. This enables flexibility and customization yet keeps to certain boundaries to ensure security.
The contracts in RED are each examples of different oracle implementations that can be used/implemented for certain oneTokens. Each implements separate logic and can be used as a price feed for certain assets.
oneToken Governance determines which Oracle to use for each token in the oneToken Vault and sets the values of parameters the Oracle needs. Multiple different oneToken Vaults can share the same Oracle.