FallbackOracleImpl

Git Source

Inherits: OracleError, RedstoneOracleImpl, ChainlinkOracleImpl

This contract is used to get the exchange rate from a main oracle feed and a fallback oracle feed.

State Variables

_FALLBACK_ORACLE_MAIN_SOURCE

*which oracle to use as main source:

  • 1 = Chainlink ONLY (no fallback)
  • 2 = Chainlink with Redstone Fallback
  • 3 = Redstone with Chainlink Fallback*
uint8 internal immutable _FALLBACK_ORACLE_MAIN_SOURCE;

Functions

constructor

sets the main source, Chainlink Oracle and Redstone Oracle data.

constructor(
    uint8 mainSource_,
    ChainlinkConstructorParams memory chainlinkParams_,
    RedstoneOracleData memory redstoneOracle_
)
    ChainlinkOracleImpl(chainlinkParams_)
    RedstoneOracleImpl(
        address(redstoneOracle_.oracle) == address(0)
            ? RedstoneOracleData(IRedstoneOracle(_REDSTONE_ORACLE_NOT_SET_ADDRESS), false, 1)
            : redstoneOracle_
    );

Parameters

NameTypeDescription
mainSource_uint8which oracle to use as main source: - 1 = Chainlink ONLY (no fallback) - 2 = Chainlink with Redstone Fallback - 3 = Redstone with Chainlink Fallback
chainlinkParams_ChainlinkConstructorParamschainlink Oracle constructor params struct.
redstoneOracle_RedstoneOracleDataRedstone Oracle data. (address can be set to zero address if using Chainlink only)

_getRateWithFallback

returns the exchange rate for the main oracle source, or the fallback source (if configured) if the main exchange rate fails to be fetched. If returned rate is 0, fetching rate failed or something went wrong.

function _getRateWithFallback() internal view returns (uint256 exchangeRate_, bool fallback_);

Returns

NameTypeDescription
exchangeRate_uint256exchange rate
fallback_boolwhether fallback was necessary or not

_getChainlinkOrRedstoneAsFallback

returns the exchange rate for Chainlink, or Redstone if configured & Chainlink fails.

function _getChainlinkOrRedstoneAsFallback() internal view returns (uint256 exchangeRate_);