Skip to content

FluidCenterPriceL2 ​

Git Source

Inherits:IFluidCenterPrice, OracleError

Base contract that any Fluid Center Price L2 must implement

State Variables ​

_infoName ​

short helper string to easily identify the center price oracle. E.g. token symbols

solidity
bytes32 private immutable _infoName;

_TARGET_DECIMALS ​

solidity
uint8 internal constant _TARGET_DECIMALS = 27;

_SEQUENCER_ORACLE ​

Chainlink L2 Sequencer Uptime feed to detect sequencer outages

solidity
IChainlinkAggregatorV3 internal immutable _SEQUENCER_ORACLE;

_SEQUENCER_MAX_GRACE_PERIOD ​

max time period until oracle assumes normal behavior after a sequencer outage.

solidity
uint256 internal constant _SEQUENCER_MAX_GRACE_PERIOD = 45 minutes;

Functions ​

constructor ​

solidity
constructor(string memory infoName_, address sequencerUptimeFeed_);

sequencerL2Data ​

returns all sequencer uptime feed related data

solidity
function sequencerL2Data()
    public
    view
    returns (
        address sequencerUptimeFeed_,
        uint256 maxGracePeriod_,
        bool isSequencerUp_,
        uint256 lastUptimeStartedAt_,
        uint256 gracePeriod_,
        bool gracePeriodPassed_,
        uint256 lastOutageStartedAt_,
        bool isSequencerUpAndValid_
    );

_ensureSequencerUpAndValid ​

ensures that the sequencer is up and grace period has passed

solidity
function _ensureSequencerUpAndValid() internal view;

targetDecimals ​

target decimals of the returned rate. for center price contracts it is always 27

solidity
function targetDecimals() public pure virtual returns (uint8);

infoName ​

helper string to easily identify the oracle. E.g. token symbols

solidity
function infoName() public view virtual returns (string memory);

centerPrice ​

Retrieves the center price for the pool

This function is marked as non-constant (potentially state-changing) to allow flexibility in price fetching mechanisms. While typically used as a read-only operation, this design permits write operations if needed for certain token pairs (e.g., fetching up-to-date exchange rates that may require state changes).

solidity
function centerPrice() external virtual returns (uint256 price_);

Returns

NameTypeDescription
price_uint256The current price ratio of token1 to token0, expressed with 27 decimal places

_lastSequencerOutageStart ​

finds last round before uptimeStartRoundId_ where sequencer status was down, incl. handling cases of consecutive rounds where status was down.

solidity
function _lastSequencerOutageStart(uint80 uptimeStartRoundId_) private view returns (uint256 outageStartedAt_);

_sequencerUpStatus ​

finds last round where sequencer status was up, incl. handling cases of consecutive rounds where status was up.

solidity
function _sequencerUpStatus()
    private
    view
    returns (bool isSequencerUp_, uint80 uptimeStartRoundId_, uint256 uptimeStartedAt_);

_gracePeriod ​

returns the gracePeriod_ duration and if the grace period has passed_ based on current uptime round data vs the last sequencer outage duration.

solidity
function _gracePeriod(uint80 uptimeStartRoundId_, uint256 uptimeStartedAt_)
    private
    view
    returns (uint256 gracePeriod_, bool passed_, uint256 outageStartedAt_);