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

OrderExecutionOrchestrator

Git Source

Inherits: OrderOracleExecution, OrderQueueBook

Constants

PANIC_SELECTOR

bytes4 internal constant PANIC_SELECTOR = 0x4e487b71;

TYPED_ORDER_FAILURE_SELECTOR

bytes4 internal constant TYPED_ORDER_FAILURE_SELECTOR = ICfdEngineCore.CfdEngine__TypedOrderFailure.selector;

MARK_PRICE_OUT_OF_ORDER_SELECTOR

bytes4 internal constant MARK_PRICE_OUT_OF_ORDER_SELECTOR = ICfdEngineCore.CfdEngine__MarkPriceOutOfOrder.selector;

State Variables

minEngineGas

uint256 public minEngineGas;

maxPruneOrdersPerCall

uint256 public maxPruneOrdersPerCall;

Functions

_maxOrderAge

function _maxOrderAge() internal view virtual returns (uint256);

_queueHeadOrderId

function _queueHeadOrderId() internal view virtual override returns (uint64);

_setQueueHeadOrderId

function _setQueueHeadOrderId(
    uint64 orderId
) internal virtual override;

_revertNoOrdersToExecute

function _revertNoOrdersToExecute() internal pure virtual;

_revertInsufficientGas

function _revertInsufficientGas() internal pure virtual;

_revertMevDetected

function _revertMevDetected() internal pure virtual;

_revertCloseOnlyMode

function _revertCloseOnlyMode() internal pure virtual;

_releaseCommittedMarginForExecution

function _releaseCommittedMarginForExecution(
    uint64 orderId
) internal virtual;

_deleteOrder

function _deleteOrder(
    uint64 orderId,
    IOrderRouterAccounting.OrderStatus terminalStatus
) internal virtual;

_skipStaleOrders

function _skipStaleOrders(
    uint64 upToId,
    uint256 executionPrice,
    uint64 oraclePublishTime
) internal returns (uint256 skipped);

_pruneExpiredHeadOrders

function _pruneExpiredHeadOrders(
    uint64 upToId,
    uint256 maxPrunes,
    uint256 executionPrice,
    uint64 oraclePublishTime
) internal returns (uint256 pruned);

_processTypedOrderExecution

function _processTypedOrderExecution(
    CfdTypes.Order memory order,
    uint256 executionPrice,
    uint256 vaultDepth,
    uint64 oraclePublishTime
) internal returns (bool success, OrderFailReason failureReason, FailedOrderOutcome failureOutcome);

_executePendingOrder

function _executePendingOrder(
    uint64 orderId,
    CfdTypes.Order memory order,
    uint256 executionPrice,
    uint64 oraclePublishTime,
    RouterExecutionContext memory executionContext,
    bool revertOnBlockedExecution,
    uint256 pythFee
) internal returns (OrderExecutionStepResult result);

_finalizeOrCleanupOrder

function _finalizeOrCleanupOrder(
    uint64 orderId,
    uint256 pythFee,
    bool success,
    FailedOrderOutcome failedOutcome,
    bool refundEthNow,
    uint256 executionPrice,
    uint64 oraclePublishTime
) internal;

_decodeTypedOrderFailure

function _decodeTypedOrderFailure(
    bytes memory revertData
)
    internal
    pure
    returns (CfdEnginePlanTypes.ExecutionFailurePolicyCategory failureCategory, uint8 failureCode, bool isClose);

_failedOutcomeFromEngineRevert

function _failedOutcomeFromEngineRevert(
    CfdTypes.Order memory order,
    bytes memory revertData
) internal pure returns (FailedOrderOutcome outcome);

_failedOutcomeForTerminalFailure

function _failedOutcomeForTerminalFailure(
    CfdTypes.Order memory order
) internal pure returns (FailedOrderOutcome outcome);

_failedOutcomeForSlippageFailure

function _failedOutcomeForSlippageFailure(
    CfdTypes.Order memory order
) internal pure returns (FailedOrderOutcome outcome);

_cleanupOrder

function _cleanupOrder(
    uint64 orderId,
    FailedOrderOutcome,
    uint256 executionPrice,
    uint64 oraclePublishTime
) internal returns (uint256 executionBountyUsdc);

_finalizeExecution

function _finalizeExecution(
    uint64 orderId,
    uint256 executionPrice,
    uint64 oraclePublishTime
) internal;

_sendEth

function _sendEth(
    address to,
    uint256 amount
) internal virtual;

Events

OrderExecuted

event OrderExecuted(uint64 indexed orderId, uint256 executionPrice);

OrderFailed

event OrderFailed(uint64 indexed orderId, OrderFailReason reason);

Enums

OrderExecutionStepResult

enum OrderExecutionStepResult {
    Continue,
    Break,
    Return
}

FailedOrderOutcome

enum FailedOrderOutcome {
    ClearerFull
}

OrderFailReason

enum OrderFailReason {
    Expired,
    CloseOnly,
    SlippageExceeded,
    EnginePanic,
    AccountLiquidated,
    EngineRevert
}