Vault
Functions
receive
function receive(
) external
only used for unwrapping weth in withdrawETH
initialize
function initialize(
) external
setTrustedForwarder
function setTrustedForwarder(
) external
setClearingHouse
function setClearingHouse(
) external
setCollateralManager
function setCollateralManager(
) external
setWETH9
function setWETH9(
) external
deposit
function deposit(
address token,
uint256 amount
) external
Deposit collateral into vault
Parameters:
token
address
The address of the token to deposit
amount
uint256
The amount of the token to deposit
depositFor
function depositFor(
address to,
address token,
uint256 amount
) external
Deposit the collateral token for other account
Parameters:
to
address
The address of the account to deposit to
token
address
The address of collateral token
amount
uint256
The amount of the token to deposit
depositEther
function depositEther(
) external
Deposit ETH as collateral into vault
depositEtherFor
function depositEtherFor(
address to
) external
Deposit ETH as collateral for specified account
Parameters:
to
address
The address of the account to deposit to
withdraw
function withdraw(
address token,
uint256 amount
) external
Withdraw collateral from vault
Parameters:
token
address
The address of the token to withdraw
amount
uint256
The amount of the token to withdraw
withdrawEther
function withdrawEther(
uint256 amount
) external
Withdraw ETH from vault
Parameters:
amount
uint256
The amount of the ETH to withdraw
withdrawAll
function withdrawAll(
address token
) external returns (uint256 amount)
Withdraw all free collateral from vault
Parameters:
token
address
The address of the token to withdraw
Return Values:
amount
uint256
The amount of the token withdrawn
withdrawAllEther
function withdrawAllEther(
) external returns (uint256 amount)
Withdraw all free collateral of ETH from vault
Return Values:
amount
uint256
The amount of ETH withdrawn
liquidateCollateral
function liquidateCollateral(
address trader,
address token,
uint256 amount,
bool isDenominatedInSettlementToken
) external returns (uint256)
Liquidate trader's collateral by given settlement token amount or non settlement token amount
Parameters:
trader
address
The address of trader that will be liquidated
token
address
The address of non settlement collateral token that the trader will be liquidated
amount
uint256
The amount of settlement token that the liquidator will repay for trader or
the amount of non-settlement collateral token that the liquidator will charge from trader
|isDenominatedInSettlementToken
| bool | Whether the amount is denominated in settlement token or not
Return Values:
returnAmount
uint256
The amount of a non-settlement token (in its native decimals) that is liquidated
when `isDenominatedInSettlementToken` is true or the amount of settlement token that is repaid
when `isDenominatedInSettlementToken` is false
getSettlementToken
function getSettlementToken(
) external returns (address)
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:
settlementToken
address
The address of the settlement token
decimals
function decimals(
) external returns (uint8)
Get settlement token decimals
cached the settlement token's decimal for gas optimization
Return Values:
decimals
uint8
The decimals of settlement token
getTotalDebt
function getTotalDebt(
) external returns (uint256)
(Deprecated) Get the borrowed settlement token amount from insurance fund
Return Values:
debtAmount
uint256
The debt amount (in settlement token's decimals)
getClearingHouseConfig
function getClearingHouseConfig(
) external returns (address)
Get ClearingHouseConfig
contract address
Return Values:
clearingHouseConfig
address
The address of ClearingHouseConfig
contract
getAccountBalance
function getAccountBalance(
) external returns (address)
Get AccountBalance
contract address
Return Values:
accountBalance
address
The address of AccountBalance
contract
getInsuranceFund
function getInsuranceFund(
) external returns (address)
Get InsuranceFund
contract address
Return Values:
insuranceFund
address
The address of InsuranceFund
contract
getExchange
function getExchange(
) external returns (address)
Get Exchange
contract address
Return Values:
exchange
address
The address of Exchange
contract
getClearingHouse
function getClearingHouse(
) external returns (address)
Get ClearingHouse
contract address
Return Values:
clearingHouse
address
The address of ClearingHouse
contract
getCollateralManager
function getCollateralManager(
) external returns (address)
Get CollateralManager
contract address
Return Values:
clearingHouse
address
The address of CollateralManager
contract
getWETH9
function getWETH9(
) external returns (address)
Get WETH9
contract address
Return Values:
clearingHouse
address
The address of WETH9
contract
getFreeCollateral
function getFreeCollateral(
address trader
) external returns (uint256)
Get the free collateral value denominated in the settlement token of the specified trader
Parameters:
trader
address
The address of the trader
Return Values:
freeCollateral
uint256
the value (in settlement token's decimals) of free collateral available
for withdraw or opening new positions or orders)
getFreeCollateralByRatio
function getFreeCollateralByRatio(
address trader,
uint24 ratio
) external returns (int256)
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:
trader
address
The address of the trader
ratio
uint24
The margin requirement ratio, imRatio or mmRatio
Return Values:
freeCollateralByRatio
int256
freeCollateral (in settlement token's decimals), by using the
input margin requirement ratio; can be negative
getSettlementTokenValue
function getSettlementTokenValue(
address trader
) external returns (int256)
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:
trader
address
The address of the trader
Return Values:
balance
int256
The balance amount (in settlement token's decimals)
getAccountValue
function getAccountValue(
address trader
) external returns (int256)
Get account value of the specified trader
Parameters:
trader
address
The address of the trader
Return Values:
accountValueX10_S
int256
account value (in settlement token's decimals)
getCollateralTokens
function getCollateralTokens(
address trader
) external returns (address[])
Get the array of collateral token addresses that a trader has in their account
Parameters:
trader
address
The address of the trader
Return Values:
collateralTokens
address[]
array of collateral token addresses
getBalance
function getBalance(
address trader
) public returns (int256)
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:
trader
address
The address of the trader
Return Values:
balance
int256
The balance amount (in settlement token's decimals)
getBalanceByToken
function getBalanceByToken(
address trader,
address token
) public returns (int256)
Get the balance of Vault of the specified collateral token and trader
Parameters:
trader
address
The address of the trader
token
address
The address of the collateral token
Return Values:
balance
int256
The balance amount (in its native decimals)
getFreeCollateralByToken
function getFreeCollateralByToken(
address trader,
address token
) public returns (uint256)
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:
trader
address
The address of the trader
token
address
The address of the collateral token
Return Values:
freeCollateral
uint256
amount of that token (in the token's native decimals)
isLiquidatable
function isLiquidatable(
address trader
) public returns (bool)
Parameters:
trader
address
The address of the trader
Return Values:
isLiquidatable
bool
If the trader can be liquidated
getMarginRequirementForCollateralLiquidation
function getMarginRequirementForCollateralLiquidation(
address trader
) public returns (int256)
get the margin requirement for collateral liquidation of a trader
this value is compared with ClearingHouse.getAccountValue()
(int)
Parameters:
trader
address
The address of the trader
Return Values:
marginRequirement
int256
margin requirement (in 18 decimals)
getCollateralMmRatio
function getCollateralMmRatio(
) public returns (uint24)
Get the maintenance margin ratio for collateral liquidation
Return Values:
collateralMmRatio
uint24
The maintenance margin ratio for collateral liquidation
getRepaidSettlementByCollateral
function getRepaidSettlementByCollateral(
address token,
uint256 collateral
) public returns (uint256 settlementX10_S)
Get a trader's repaid settlement amount by a given collateral amount
Parameters:
token
address
The address of the token of the trader's collateral
collateral
uint256
The amount of collateral token the liquidator wants to get
Return Values:
settlementX10_S
uint256
The settlement amount(in settlement token's decimals) the liquidator needs to pay
getLiquidatableCollateralBySettlement
function getLiquidatableCollateralBySettlement(
address token,
uint256 settlementX10_S
) public returns (uint256 collateral)
Get a trader's liquidatable collateral amount by a given settlement amount
Parameters:
token
address
The address of the token of the trader's collateral
settlementX10_S
uint256
The amount of settlement token the liquidator wants to pay
Return Values:
collateral
uint256
The collateral amount(in its native decimals) the liquidator can get
getMaxRepaidSettlementAndLiquidatableCollateral
function getMaxRepaidSettlementAndLiquidatableCollateral(
address trader,
address token
) public returns (uint256 maxRepaidSettlementX10_S, uint256 maxLiquidatableCollateral)
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:
trader
address
The address of the trader
token
address
The address of the token of the trader's collateral
Return Values:
maxRepaidSettlementX10_S
uint256
The maximum settlement amount(in settlement token's decimals)
the liquidator needs to pay to liquidate a trader's collateral token
|maxLiquidatableCollateral
| uint256 | The maximum liquidatable collateral amount (in the collateral token's native decimals) of a trader
settleBadDebt
function settleBadDebt(
address trader
) public
Settle trader's bad debt
will only settle the bad debt when trader didn't have position and non-settlement collateral
Parameters:
trader
address
The address of trader that will be settled
Last updated
Was this helpful?