ClearingHouse
Last updated
Was this helpful?
Last updated
Was this helpful?
this function is public for testing
remove to reduce bytecode size, might add back when we need it
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
params
struct IClearingHouse.AddLiquidityParams
AddLiquidityParams struct
response
struct IClearingHouse.AddLiquidityResponse
AddLiquidityResponse struct
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
params
struct IClearingHouse.RemoveLiquidityParams
RemoveLiquidityParams struct
response
struct IClearingHouse.RemoveLiquidityResponse
RemoveLiquidityResponse struct
Settle all markets fundingPayment to owedRealized Pnl
trader
address
The address of trader
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
params
struct IClearingHouse.OpenPositionParams
OpenPositionParams struct
base
uint256
The amount of baseToken the taker got or spent
quote
uint256
The amount of quoteToken the taker got or spent
trader
address
The address of trader
params
struct IClearingHouse.OpenPositionParams
OpenPositionParams struct is the same as openPosition()
base
uint256
The amount of baseToken the taker got or spent
quote
uint256
The amount of quoteToken the taker got or spent
fee
uint256
The trading fee
Close trader's position
params
struct IClearingHouse.ClosePositionParams
ClosePositionParams struct
base
uint256
The amount of baseToken the taker got or spent
quote
uint256
The amount of quoteToken the taker got or spent
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
trader
address
The address of trader
baseToken
address
The address of baseToken
positionSize
int256
the position size to be liquidated by liquidator
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
trader
address
The address of trader
baseToken
address
The address of baseToken
positionSize
the position size to be liquidated by liquidator
Cancel excess order of a maker
Order id can get from OrderBook.getOpenOrderIds
maker
address
The address of Maker
baseToken
address
The address of baseToken
orderIds
bytes32[]
The id of the order
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
maker
address
The address of maker
baseToken
address
The address of baseToken
Close all positions and remove all liquidities of a trader in the closed market
trader
address
The address of trader
baseToken
address
The address of baseToken
base
uint256
The amount of base token that is closed
quote
uint256
The amount of quote token that is closed
Called to msg.sender
after minting liquidity to a position from IUniswapV3Pool#mint.
namings here follow Uniswap's convention
amount0Owed
uint256
The amount of token0 due to the pool for the minted liquidity
amount1Owed
uint256
The amount of token1 due to the pool for the minted liquidity
data
bytes
Any data passed through by the caller via the IUniswapV3PoolActions#mint call
Called to msg.sender
after executing a swap via IUniswapV3Pool#swap.
namings here follow Uniswap's convention
amount0Delta
int256
The amount of token0 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 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
Get QuoteToken address
quoteToken
address
The quote token address
Get UniswapV3Factory address
factory
address
UniswapV3Factory address
Get ClearingHouseConfig address
clearingHouseConfig
address
ClearingHouseConfig address
Get Vault
address
vault
address
Vault
address
Get Exchange
address
exchange
address
Exchange
address
Get OrderBook
address
orderBook
address
OrderBook
address
Get AccountBalance address
accountBalance
address
AccountBalance
address
Get InsuranceFund
address
insuranceFund
address
InsuranceFund
address
Get DelegateApproval
address
delegateApproval
address
DelegateApproval
address
Get account value of trader
accountValue = totalCollateralValue + totalUnrealizedPnl, in 18 decimals
trader
address
The address of trader
accountValue
int256
The account value of trader
maxMarketsPerAccount
uint8
Max value of total markets per account
imRatio
uint24
Initial margin ratio
mmRatio
uint24
Maintenance margin requirement ratio
liquidationPenaltyRatio
uint24
Liquidation penalty ratio
partialCloseRatio
uint24
Partial close ratio
twapInterval
uint32
TwapInterval for funding and prices (market & index) calculations
settlementTokenBalanceCap
uint256
Max value of settlement token balance
maxFundingRate
uint24
Max value of funding rate
marketTwapInterval
uint32
MarketTwapInterval is the interval of market twap used for mark price calculations
premiumInterval
uint32
PremiumInterval is the interval of premium used for mark price calculations
Parameters:
Return Values:
Parameters:
Return Values:
Parameters:
Parameters:
Return Values:
Parameters:
Return Values:
Parameters:
Return Values:
Parameters:
Parameters:
Parameters:
Parameters:
Parameters:
Return Values:
Parameters:
Parameters:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Parameters:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values:
Return Values: