Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OrderOracleExecution

Git Source

Inherits: OrderEscrowAccounting

Constants

vault

ICfdVault internal immutable vault;

engineLens

ICfdEngineLens internal immutable engineLens;

State Variables

pyth

IPyth public pyth;

pythFeedIds

bytes32[] public pythFeedIds;

quantities

uint256[] public quantities;

basePrices

uint256[] public basePrices;

inversions

bool[] public inversions;

orderExecutionStalenessLimit

uint256 public orderExecutionStalenessLimit = 60;

liquidationStalenessLimit

uint256 public liquidationStalenessLimit = 15;

pythMaxConfidenceRatioBps

uint256 public pythMaxConfidenceRatioBps = 10_000;

Functions

_revertZeroAddress

function _revertZeroAddress() internal pure virtual;

_revertEmptyFeeds

function _revertEmptyFeeds() internal pure virtual;

_revertLengthMismatch

function _revertLengthMismatch() internal pure virtual;

_revertInvalidBasePrice

function _revertInvalidBasePrice() internal pure virtual;

_revertInvalidWeights

function _revertInvalidWeights() internal pure virtual;

_revertMissingPythUpdateData

function _revertMissingPythUpdateData() internal pure virtual;

_revertInsufficientPythFee

function _revertInsufficientPythFee() internal pure virtual;

_revertMockModeDisabled

function _revertMockModeDisabled() internal pure virtual;

_revertOraclePriceTooStale

function _revertOraclePriceTooStale() internal pure virtual;

_revertOracleConfidenceTooWide

function _revertOracleConfidenceTooWide() internal pure virtual;

_revertOraclePublishTimeOutOfOrder

function _revertOraclePublishTimeOutOfOrder() internal pure virtual;

_revertMevOraclePriceTooStale

function _revertMevOraclePriceTooStale() internal pure virtual;

_revertOraclePriceNegative

function _revertOraclePriceNegative() internal pure virtual;

constructor

constructor(
    address _engine,
    address _engineLens,
    address _vault,
    address _pyth,
    bytes32[] memory _feedIds,
    uint256[] memory _quantities,
    uint256[] memory _basePrices,
    bool[] memory _inversions
) OrderEscrowAccounting(_engine);

_currentRouterExecutionContext

function _currentRouterExecutionContext() internal view returns (RouterExecutionContext memory context);

_prepareOrderExecutionOracle

function _prepareOrderExecutionOracle(
    bytes[] calldata pythUpdateData,
    uint256 mockFallbackPrice
) internal returns (OracleUpdateResult memory update, RouterExecutionContext memory executionContext);

_prepareMarkRefreshOracle

function _prepareMarkRefreshOracle(
    bytes[] calldata pythUpdateData
) internal returns (OracleUpdateResult memory update);

_prepareLiquidationOracle

function _prepareLiquidationOracle(
    bytes[] calldata pythUpdateData
) internal returns (OracleUpdateResult memory update);

_executionPolicyForOrder

function _executionPolicyForOrder(
    bool isClose,
    bool oracleFrozen,
    bool isFadWindow
) internal view returns (OracleFreshnessPolicyLib.Policy memory);

_resolveOraclePrice

function _resolveOraclePrice(
    bytes[] calldata pythUpdateData,
    uint256 mockFallbackPrice,
    uint256 maxStaleness,
    uint256 maxPublishTimeDivergence
) internal returns (uint256 price, uint64 publishTime, uint256 pythFee);

_setOracleConfig

function _setOracleConfig(
    address newPyth,
    bytes32[] memory newFeedIds,
    uint256[] memory newQuantities,
    uint256[] memory newBasePrices,
    bool[] memory newInversions
) internal;

_validateOracleConfig

function _validateOracleConfig(
    address newPyth,
    bytes32[] memory newFeedIds,
    uint256[] memory newQuantities,
    uint256[] memory newBasePrices,
    bool[] memory newInversions
) internal pure;

_computeBasketPrice

function _computeBasketPrice(
    uint256 maxStaleness,
    uint256 maxPublishTimeDivergence
) internal view returns (uint256 basketPrice, uint256 minPublishTime);

_checkSlippage

function _checkSlippage(
    CfdTypes.Order memory order,
    uint256 executionPrice
) internal pure returns (bool);

_commitReferencePrice

function _commitReferencePrice() internal view returns (uint256 price);

_canUseCommitMarkForOpenPrefilter

function _canUseCommitMarkForOpenPrefilter() internal view returns (bool);

_isOracleFrozen

function _isOracleFrozen() internal view returns (bool);

_isCloseOnlyWindow

function _isCloseOnlyWindow() internal view returns (bool);

_invertPythPrice

function _invertPythPrice(
    int64 price,
    int32 expo
) internal pure returns (uint256);

_normalizePythPrice

function _normalizePythPrice(
    int64 price,
    int32 expo
) internal pure returns (uint256);

Structs

RouterExecutionContext

struct RouterExecutionContext {
    bool oracleFrozen;
    bool isFadWindow;
    OracleFreshnessPolicyLib.Policy policy;
}

OracleUpdateResult

struct OracleUpdateResult {
    uint256 executionPrice;
    uint64 oraclePublishTime;
    uint256 pythFee;
}