Vault
Functions
receive
only used for unwrapping weth in withdrawETH
initialize
setTrustedForwarder
setClearingHouse
setCollateralManager
setWETH9
deposit
Deposit collateral into vault
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the token to deposit |
| uint256 | The amount of the token to deposit |
depositFor
Deposit the collateral token for other account
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the account to deposit to |
| address | The address of collateral token |
| uint256 | The amount of the token to deposit |
depositEther
Deposit ETH as collateral into vault
depositEtherFor
Deposit ETH as collateral for specified account
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the account to deposit to |
withdraw
Withdraw collateral from vault
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the token to withdraw |
| uint256 | The amount of the token to withdraw |
withdrawEther
Withdraw ETH from vault
Parameters:
Name | Type | Description |
---|---|---|
| uint256 | The amount of the ETH to withdraw |
withdrawAll
Withdraw all free collateral from vault
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the token to withdraw |
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | The amount of the token withdrawn |
withdrawAllEther
Withdraw all free collateral of ETH from vault
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | The amount of ETH withdrawn |
liquidateCollateral
Liquidate trader's collateral by given settlement token amount or non settlement token amount
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of trader that will be liquidated |
| address | The address of non settlement collateral token that the trader will be liquidated |
| uint256 | The amount of settlement token that the liquidator will repay for trader or |
|isDenominatedInSettlementToken
| bool | Whether the amount is denominated in settlement token or not
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | The amount of a non-settlement token (in its native decimals) that is liquidated |
getSettlementToken
Get the settlement token address
We assume the settlement token should match the denominator of the price oracle. i.e. if the settlement token is USDC, then the oracle should be priced in USD
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of the settlement token |
decimals
Get settlement token decimals
cached the settlement token's decimal for gas optimization
Return Values:
Name | Type | Description |
---|---|---|
| uint8 | The decimals of settlement token |
getTotalDebt
(Deprecated) Get the borrowed settlement token amount from insurance fund
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | The debt amount (in settlement token's decimals) |
getClearingHouseConfig
Get ClearingHouseConfig
contract address
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of |
getAccountBalance
Get AccountBalance
contract address
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of |
getInsuranceFund
Get InsuranceFund
contract address
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of |
getExchange
Get Exchange
contract address
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of |
getClearingHouse
Get ClearingHouse
contract address
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of |
getCollateralManager
Get CollateralManager
contract address
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of |
getWETH9
Get WETH9
contract address
Return Values:
Name | Type | Description |
---|---|---|
| address | The address of |
getFreeCollateral
Get the free collateral value denominated in the settlement token of the specified trader
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | the value (in settlement token's decimals) of free collateral available |
getFreeCollateralByRatio
Get the free collateral amount of the specified trader and collateral ratio
There are three configurations for different insolvency risk tolerances: conservative, moderate &aggressive. We will start with the conservative one and gradually move to aggressive to increase capital efficiency
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
| uint24 | The margin requirement ratio, imRatio or mmRatio |
Return Values:
Name | Type | Description |
---|---|---|
| int256 | freeCollateral (in settlement token's decimals), by using the |
getSettlementTokenValue
Get the specified trader's settlement value, including pending fee, funding payment, owed realized PnL and unrealized PnL
Note the difference between settlementTokenBalanceX10_S
, getSettlementTokenValue()
and getBalance()
: They are all settlement token balances but with or without pending fee, funding payment, owed realized PnL, unrealized PnL, respectively In practical applications, we use getSettlementTokenValue()
to get the trader's debt (if < 0)
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
Return Values:
Name | Type | Description |
---|---|---|
| int256 | The balance amount (in settlement token's decimals) |
getAccountValue
Get account value of the specified trader
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
Return Values:
Name | Type | Description |
---|---|---|
| int256 | account value (in settlement token's decimals) |
getCollateralTokens
Get the array of collateral token addresses that a trader has in their account
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
Return Values:
Name | Type | Description |
---|---|---|
| address[] | array of collateral token addresses |
getBalance
Get the specified trader's settlement token balance, without pending fee, funding payment and owed realized PnL
The function is equivalent to getBalanceByToken(trader, settlementToken)
We keep this function solely for backward-compatibility with the older single-collateral system. In practical applications, the developer might want to use getSettlementTokenValue()
instead because the latter includes pending fee, funding payment etc. and therefore more accurately reflects a trader's settlement (ex. USDC) balance
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
Return Values:
Name | Type | Description |
---|---|---|
| int256 | The balance amount (in settlement token's decimals) |
getBalanceByToken
Get the balance of Vault of the specified collateral token and trader
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
| address | The address of the collateral token |
Return Values:
Name | Type | Description |
---|---|---|
| int256 | The balance amount (in its native decimals) |
getFreeCollateralByToken
Get the free collateral amount of the specified collateral token of specified trader
getFreeCollateralByToken(token) = (getSettlementTokenValue() >= 0) ? min(getFreeCollateral() / indexPrice[token], getBalanceByToken(token)) : 0 if token is settlementToken, then indexPrice[token] = 1
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
| address | The address of the collateral token |
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | amount of that token (in the token's native decimals) |
isLiquidatable
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
Return Values:
Name | Type | Description |
---|---|---|
| bool | If the trader can be liquidated |
getMarginRequirementForCollateralLiquidation
get the margin requirement for collateral liquidation of a trader
this value is compared with ClearingHouse.getAccountValue()
(int)
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
Return Values:
Name | Type | Description |
---|---|---|
| int256 | margin requirement (in 18 decimals) |
getCollateralMmRatio
Get the maintenance margin ratio for collateral liquidation
Return Values:
Name | Type | Description |
---|---|---|
| uint24 | The maintenance margin ratio for collateral liquidation |
getRepaidSettlementByCollateral
Get a trader's repaid settlement amount by a given collateral amount
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the token of the trader's collateral |
| uint256 | The amount of collateral token the liquidator wants to get |
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | The settlement amount(in settlement token's decimals) the liquidator needs to pay |
getLiquidatableCollateralBySettlement
Get a trader's liquidatable collateral amount by a given settlement amount
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the token of the trader's collateral |
| uint256 | The amount of settlement token the liquidator wants to pay |
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | The collateral amount(in its native decimals) the liquidator can get |
getMaxRepaidSettlementAndLiquidatableCollateral
Get a trader's max repaid settlement & max liquidatable collateral by a given collateral token
formula: maxRepaidSettlement = maxLiquidatableCollateral (indexTwap (1 - discountRatio)) maxLiquidatableCollateral = min(maxRepaidSettlement / (indexTwap * (1 - discountRatio)), getBalanceByToken(trader, token))
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of the trader |
| address | The address of the token of the trader's collateral |
Return Values:
Name | Type | Description |
---|---|---|
| uint256 | The maximum settlement amount(in settlement token's decimals) |
|maxLiquidatableCollateral
| uint256 | The maximum liquidatable collateral amount (in the collateral token's native decimals) of a trader
settleBadDebt
Settle trader's bad debt
will only settle the bad debt when trader didn't have position and non-settlement collateral
Parameters:
Name | Type | Description |
---|---|---|
| address | The address of trader that will be settled |
Last updated