ClearingHouse

InternalOpenPositionParams

  struct InternalOpenPositionParams(
    address trader
    address baseToken
    bool isBaseToQuote
    bool isExactInput
    bool isClose
    uint256 amount
    uint160 sqrtPriceLimitX96
  )

InternalCheckSlippageParams

  struct InternalCheckSlippageParams(
    bool isBaseToQuote
    bool isExactInput
    uint256 base
    uint256 quote
    uint256 oppositeAmountBound
  )

Functions

initialize

  function initialize(
  ) public

this function is public for testing

setDelegateApproval

  function setDelegateApproval(
  ) external

remove to reduce bytecode size, might add back when we need it

addLiquidity

  function addLiquidity(
    struct IClearingHouse.AddLiquidityParams params
  ) external returns (struct IClearingHouse.AddLiquidityResponse)

Maker can call addLiquidity to provide liquidity on Uniswap V3 pool

Tx will fail if adding base == 0 && quote == 0 / liquidity == 0

  • AddLiquidityParams.useTakerBalance is only accept false now

Parameters:

Return Values:

removeLiquidity

  function removeLiquidity(
    struct IClearingHouse.RemoveLiquidityParams params
  ) external returns (struct IClearingHouse.RemoveLiquidityResponse)

Maker can call removeLiquidity to remove liquidity

remove liquidity will transfer maker impermanent position to taker position, if liquidity of RemoveLiquidityParams struct is zero, the action will collect fee from pool to maker

Parameters:

Return Values:

settleAllFunding

  function settleAllFunding(
    address trader
  ) external

Settle all markets fundingPayment to owedRealized Pnl

Parameters:

openPosition

  function openPosition(
    struct IClearingHouse.OpenPositionParams params
  ) external returns (uint256 base, uint256 quote)

Trader can call openPosition to long/short on baseToken market

  • OpenPositionParams.oppositeAmountBound

    • B2Q + exact input, want more output quote as possible, so we set a lower bound of output quote

    • B2Q + exact output, want less input base as possible, so we set a upper bound of input base

    • Q2B + exact input, want more output base as possible, so we set a lower bound of output base

    • Q2B + exact output, want less input quote as possible, so we set a upper bound of input quote

      when it's set to 0, it will disable slippage protection entirely regardless of exact input or output when it's over or under the bound, it will be reverted

  • OpenPositionParams.sqrtPriceLimitX96

    • B2Q: the price cannot be less than this value after the swap

    • Q2B: the price cannot be greater than this value after the swap

      it will fill the trade until it reaches the price limit but WON'T REVERT when it's set to 0, it will disable price limit; when it's 0 and exact output, the output amount is required to be identical to the param amount

Parameters:

Return Values:

openPositionFor

  function openPositionFor(
    address trader,
    struct IClearingHouse.OpenPositionParams params
  ) external returns (uint256 base, uint256 quote, uint256 fee)

Parameters:

Return Values:

closePosition

  function closePosition(
    struct IClearingHouse.ClosePositionParams params
  ) external returns (uint256 base, uint256 quote)

Close trader's position

Parameters:

Return Values:

liquidate

  function liquidate(
    address trader,
    address baseToken,
    int256 positionSize
  ) external

If trader is underwater, any one can call liquidate to liquidate this trader

If trader has open orders, need to call cancelAllExcessOrders first If positionSize is greater than maxLiquidatePositionSize, liquidate maxLiquidatePositionSize by default If margin ratio >= 0.5 mmRatio, maxLiquidateRatio = MIN((1, 0.5 totalAbsPositionValue / absPositionValue) If margin ratio < 0.5 mmRatio, maxLiquidateRatio = 1 maxLiquidatePositionSize = positionSize maxLiquidateRatio

Parameters:

liquidate

  function liquidate(
    address trader,
    address baseToken,
     positionSize
  ) external

If trader is underwater, any one can call liquidate to liquidate this trader

If trader has open orders, need to call cancelAllExcessOrders first If positionSize is greater than maxLiquidatePositionSize, liquidate maxLiquidatePositionSize by default If margin ratio >= 0.5 mmRatio, maxLiquidateRatio = MIN((1, 0.5 totalAbsPositionValue / absPositionValue) If margin ratio < 0.5 mmRatio, maxLiquidateRatio = 1 maxLiquidatePositionSize = positionSize maxLiquidateRatio

Parameters:

cancelExcessOrders

  function cancelExcessOrders(
    address maker,
    address baseToken,
    bytes32[] orderIds
  ) external

Cancel excess order of a maker

Order id can get from OrderBook.getOpenOrderIds

Parameters:

cancelAllExcessOrders

  function cancelAllExcessOrders(
    address maker,
    address baseToken
  ) external

Cancel all excess orders of a maker if the maker is underwater

This function won't fail if the maker has no order but fails when maker is not underwater

Parameters:

quitMarket

  function quitMarket(
    address trader,
    address baseToken
  ) external returns (uint256 base, uint256 quote)

Close all positions and remove all liquidities of a trader in the closed market

Parameters:

Return Values:

uniswapV3MintCallback

  function uniswapV3MintCallback(
    uint256 amount0Owed,
    uint256 amount1Owed,
    bytes data
  ) external

Called to msg.sender after minting liquidity to a position from IUniswapV3Pool#mint.

namings here follow Uniswap's convention

Parameters:

uniswapV3SwapCallback

  function uniswapV3SwapCallback(
    int256 amount0Delta,
    int256 amount1Delta,
    bytes data
  ) external

Called to msg.sender after executing a swap via IUniswapV3Pool#swap.

namings here follow Uniswap's convention

Parameters:

the end of the swap. If positive, the callback must send that amount of token0 to the pool. |amount1Delta | int256 | The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool. |data | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#swap call

getQuoteToken

  function getQuoteToken(
  ) external returns (address)

Get QuoteToken address

Return Values:

getUniswapV3Factory

  function getUniswapV3Factory(
  ) external returns (address)

Get UniswapV3Factory address

Return Values:

getClearingHouseConfig

  function getClearingHouseConfig(
  ) external returns (address)

Get ClearingHouseConfig address

Return Values:

getVault

  function getVault(
  ) external returns (address)

Get Vault address

Return Values:

getExchange

  function getExchange(
  ) external returns (address)

Get Exchange address

Return Values:

getOrderBook

  function getOrderBook(
  ) external returns (address)

Get OrderBook address

Return Values:

getAccountBalance

  function getAccountBalance(
  ) external returns (address)

Get AccountBalance address

Return Values:

getInsuranceFund

  function getInsuranceFund(
  ) external returns (address)

Get InsuranceFund address

Return Values:

getDelegateApproval

  function getDelegateApproval(
  ) external returns (address)

Get DelegateApproval address

Return Values:

getAccountValue

  function getAccountValue(
    address trader
  ) public returns (int256)

Get account value of trader

accountValue = totalCollateralValue + totalUnrealizedPnl, in 18 decimals

Parameters:

Return Values:

ClearingHouseConfig

Functions

initialize

  function initialize(
  ) external

setLiquidationPenaltyRatio

  function setLiquidationPenaltyRatio(
  ) external

setPartialCloseRatio

  function setPartialCloseRatio(
  ) external

setTwapInterval

  function setTwapInterval(
  ) external

setMaxMarketsPerAccount

  function setMaxMarketsPerAccount(
  ) external

setSettlementTokenBalanceCap

  function setSettlementTokenBalanceCap(
  ) external

setMaxFundingRate

  function setMaxFundingRate(
  ) external

setMarkPriceMarketTwapInterval

  function setMarkPriceMarketTwapInterval(
  ) external

setMarkPricePremiumInterval

  function setMarkPricePremiumInterval(
  ) external

getMaxMarketsPerAccount

  function getMaxMarketsPerAccount(
  ) external returns (uint8)

Return Values:

getImRatio

  function getImRatio(
  ) external returns (uint24)

Return Values:

getMmRatio

  function getMmRatio(
  ) external returns (uint24)

Return Values:

getLiquidationPenaltyRatio

  function getLiquidationPenaltyRatio(
  ) external returns (uint24)

Return Values:

getPartialCloseRatio

  function getPartialCloseRatio(
  ) external returns (uint24)

Return Values:

getTwapInterval

  function getTwapInterval(
  ) external returns (uint32)

Return Values:

getSettlementTokenBalanceCap

  function getSettlementTokenBalanceCap(
  ) external returns (uint256)

Return Values:

getMaxFundingRate

  function getMaxFundingRate(
  ) external returns (uint24)

Return Values:

getMarkPriceConfig

  function getMarkPriceConfig(
  ) external returns (uint32, uint32)

Return Values:

Last updated