Vault
Keeps track of all token reserves for all market
Methods
DEFAULT_ADMIN_ROLE
function DEFAULT_ADMIN_ROLE() external view returns (bytes32)
Returns
_0
bytes32
undefined
EMERGENCY_ADMIN
function EMERGENCY_ADMIN() external view returns (bytes32)
Returns
_0
bytes32
undefined
GOVERNANCE
function GOVERNANCE() external view returns (bytes32)
Returns
_0
bytes32
undefined
UA
function UA() external view returns (contract IERC20Metadata)
Returns
_0
contract IERC20Metadata
undefined
UA_IDX
function UA_IDX() external view returns (uint256)
Returns
_0
uint256
undefined
addWhiteListedCollateral
function addWhiteListedCollateral(contract IERC20Metadata asset, uint256 weight, uint256 maxAmount) external nonpayable
Add a new token to the list of whitelisted ERC20 which can be used as collaterals
Parameters
asset
contract IERC20Metadata
Address of the token to be whitelisted as a valid collateral in the Vault
weight
uint256
Discount weight to be applied on the asset vault
maxAmount
uint256
Maximum total amount that the Vault will accept of this collateral
changeCollateralMaxAmount
function changeCollateralMaxAmount(contract IERC20Metadata asset, uint256 newMaxAmount) external nonpayable
Change max amount of a whitelisted collateral Useful as a risk mitigation measure in case one collateral drops in value
Parameters
asset
contract IERC20Metadata
Address of asset to change max amount
newMaxAmount
uint256
New max amount for the collateral
changeCollateralWeight
function changeCollateralWeight(contract IERC20Metadata asset, uint256 newWeight) external nonpayable
Change weight of a whitelisted collateral Useful as a risk mitigation measure in case one collateral drops in value
Parameters
asset
contract IERC20Metadata
Address of asset to change collateral weight
newWeight
uint256
New weight. 18 decimals
clearingHouse
function clearingHouse() external view returns (contract IClearingHouse)
Returns
_0
contract IClearingHouse
undefined
decreaseAllowance
function decreaseAllowance(address user, address receiver, uint256 subtractedAmount, contract IERC20Metadata token) external nonpayable
Decrease the approval of another account to withdraw a user's tokens
Parameters
user
address
Address to debit Vault collateral from
receiver
address
Address to credit ERC20 token to
subtractedAmount
uint256
Amount to be decrease the current approval by. 18 decimals
token
contract IERC20Metadata
One whitelisted token
deposit
function deposit(address sender, address user, uint256 amount, contract IERC20Metadata depositToken) external nonpayable
Add an amount of a whitelisted token to the balance of a user
Parameters
sender
address
undefined
user
address
Account to deposit collateral to
amount
uint256
Amount to be used as the collateral of the position. Might not be 18 decimals (decimals of the token)
depositToken
contract IERC20Metadata
One whitelisted token
getAllowance
function getAllowance(address user, address receiver, uint256 tokenIdx) external view returns (uint256)
Get the Allowance that a user has given a receiver for a specified token
Parameters
user
address
address of the user to withdraw from
receiver
address
address of the receiver of tokens for a withdrawal
tokenIdx
uint256
Index of the token
Returns
_0
uint256
undefined
getBalance
function getBalance(address user, uint256 tokenIdx) external view returns (int256)
Get the balance of a user of a given token
Parameters
user
address
User address
tokenIdx
uint256
Index of the token
Returns
_0
int256
undefined
getNumberOfCollaterals
function getNumberOfCollaterals() external view returns (uint256)
Get number of whitelisted tokens
Returns
_0
uint256
undefined
getReserveValue
function getReserveValue(address user, bool isDiscounted) external view returns (int256)
Get the balance of a user, accounted for in USD. 18 decimals
Parameters
user
address
User address
isDiscounted
bool
Whether or not the reserve value should be discounted by the weight of the collateral
Returns
_0
int256
undefined
getRoleAdmin
function getRoleAdmin(bytes32 role) external view returns (bytes32)
Returns the admin role that controls role
. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.
Parameters
role
bytes32
undefined
Returns
_0
bytes32
undefined
getTotalValueLocked
function getTotalValueLocked() external view returns (int256)
Get total value of all tokens deposited in the vault, in USD. 18 decimals
Returns
_0
int256
undefined
getWhiteListedCollateral
function getWhiteListedCollateral(uint256 idx) external view returns (struct IVault.Collateral)
Get details of a whitelisted collateral token
Parameters
idx
uint256
Index of the whitelisted collateral to get details from
Returns
_0
IVault.Collateral
undefined
grantRole
function grantRole(bytes32 role, address account) external nonpayable
Grants role
to account
. If account
had not been already granted role
, emits a {RoleGranted} event. Requirements: - the caller must have role
's admin role. May emit a {RoleGranted} event.
Parameters
role
bytes32
undefined
account
address
undefined
hasRole
function hasRole(bytes32 role, address account) external view returns (bool)
Returns true
if account
has been granted role
.
Parameters
role
bytes32
undefined
account
address
undefined
Returns
_0
bool
undefined
increaseAllowance
function increaseAllowance(address user, address receiver, uint256 addedAmount, contract IERC20Metadata token) external nonpayable
Increase the approval of another account to withdraw a user's tokens
Parameters
user
address
Address to debit Vault collateral from
receiver
address
Address to credit ERC20 token to
addedAmount
uint256
Amount to be increase the current approval by. 18 decimals
token
contract IERC20Metadata
One whitelisted token
insurance
function insurance() external view returns (contract IInsurance)
Returns
_0
contract IInsurance
undefined
isEmergencyAdmin
function isEmergencyAdmin(address account) external view returns (bool)
Parameters
account
address
undefined
Returns
_0
bool
undefined
isGovernor
function isGovernor(address account) external view returns (bool)
Parameters
account
address
undefined
Returns
_0
bool
undefined
oracle
function oracle() external view returns (contract IOracle)
Returns
_0
contract IOracle
undefined
renounceRole
function renounceRole(bytes32 role, address account) external nonpayable
Revokes role
from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked role
, emits a {RoleRevoked} event. Requirements: - the caller must be account
. May emit a {RoleRevoked} event.
Parameters
role
bytes32
undefined
account
address
undefined
revokeRole
function revokeRole(bytes32 role, address account) external nonpayable
Revokes role
from account
. If account
had been granted role
, emits a {RoleRevoked} event. Requirements: - the caller must have role
's admin role. May emit a {RoleRevoked} event.
Parameters
role
bytes32
undefined
account
address
undefined
setClearingHouse
function setClearingHouse(contract IClearingHouse newClearingHouse) external nonpayable
Update the ClearingHouse address
Parameters
newClearingHouse
contract IClearingHouse
Address of the new ClearingHouse
setInsurance
function setInsurance(contract IInsurance newInsurance) external nonpayable
Update the Insurance address
Parameters
newInsurance
contract IInsurance
Address of the new Insurance
setOracle
function setOracle(contract IOracle newOracle) external nonpayable
Update the Oracle address
Parameters
newOracle
contract IOracle
Address of the new Oracle
settleLiquidationOnCollaterals
function settleLiquidationOnCollaterals(address liquidator, address liquidatee) external nonpayable
Allow liquidator to buy back non-UA collateral(s) of liquidated user at a discounted price whereby settling the latter debt
The liquidator buys just as much non-UA collaterals to cover the liquidatee's debt, not moreIf the USD value of all the non-UA collaterals of the liquidatee < his UA debt, Increment insurance steps in to cover the remainder of the UA debt
Parameters
liquidator
address
Address of the liquidator
liquidatee
address
Address of the liquidatee
settlePnL
function settlePnL(address user, int256 amount) external nonpayable
Settle PnL for user in UA
Parameters
user
address
Account to apply the PnL to
amount
int256
PnL amount in UA to apply. 18 decimals
supportsInterface
function supportsInterface(bytes4 interfaceId) external view returns (bool)
See {IERC165-supportsInterface}.
Parameters
interfaceId
bytes4
undefined
Returns
_0
bool
undefined
tokenToCollateralIdx
function tokenToCollateralIdx(contract IERC20Metadata) external view returns (uint256)
Map whitelisted collateral tokens to their whiteListedCollaterals indices
Parameters
_0
contract IERC20Metadata
undefined
Returns
_0
uint256
undefined
transferUa
function transferUa(address user, uint256 amount) external nonpayable
Transfer UA tokens from the vault
Important: the balance of the user from whom the UA tokens are being withdrawn must be updated separately
Parameters
user
address
Account to withdraw UA tokens to
amount
uint256
Amount of UA tokens to be withdrawn. 18 decimals
withdraw
function withdraw(address user, uint256 amount, contract IERC20Metadata withdrawToken) external nonpayable
Withdraw tokens stored by a user in the vault
Unlike deposit
, withdraw
treats withdrawals of UA differently than other collaterals
Parameters
user
address
Account to withdraw from
amount
uint256
Amount to withdraw from the vault. Might not be 18 decimals (decimals of the token)
withdrawToken
contract IERC20Metadata
Token whose balance is to be withdrawn from the vault
withdrawAll
function withdrawAll(address user, contract IERC20Metadata withdrawToken) external nonpayable
Withdraw all tokens stored by a user in the vault
Parameters
user
address
Account to withdraw from
withdrawToken
contract IERC20Metadata
Token whose balance is to be withdrawn from the vault
withdrawFrom
function withdrawFrom(address user, address receiver, uint256 amount, contract IERC20Metadata withdrawToken) external nonpayable
Withdraw tokens from a user in the vault to a receiving account
Unlike deposit
, withdraw
treats withdrawals of UA differently than other collaterals
Parameters
user
address
Account to withdraw from
receiver
address
Account that should receiver the tokens
amount
uint256
Amount to withdraw from the vault. Might not be 18 decimals (decimals of the token)
withdrawToken
contract IERC20Metadata
Token whose balance is to be withdrawn from the vault
Events
Approval
event Approval(address indexed user, address indexed receiver, uint256 tokenIdx, uint256 amount)
Emitted when a new approval value is set
Parameters
user indexed
address
undefined
receiver indexed
address
undefined
tokenIdx
uint256
undefined
amount
uint256
undefined
ClearingHouseChanged
event ClearingHouseChanged(contract IClearingHouse newClearingHouse)
Emitted when the ClearingHouse address is updated
Parameters
newClearingHouse
contract IClearingHouse
undefined
CollateralAdded
event CollateralAdded(contract IERC20Metadata asset, uint256 weight, uint256 maxAmount)
Emitted when a new collateral is added to the Vault
Parameters
asset
contract IERC20Metadata
undefined
weight
uint256
undefined
maxAmount
uint256
undefined
CollateralMaxAmountChanged
event CollateralMaxAmountChanged(contract IERC20Metadata asset, uint256 newMaxAmount)
Emitted when a collateral max amount is updated
Parameters
asset
contract IERC20Metadata
undefined
newMaxAmount
uint256
undefined
CollateralWeightChanged
event CollateralWeightChanged(contract IERC20Metadata asset, uint256 newWeight)
Emitted when a collateral weight is updated
Parameters
asset
contract IERC20Metadata
undefined
newWeight
uint256
undefined
Deposit
event Deposit(address indexed user, address indexed asset, uint256 amount)
Emitted when collateral is deposited into the vault
Parameters
user indexed
address
undefined
asset indexed
address
undefined
amount
uint256
undefined
InsuranceChanged
event InsuranceChanged(contract IInsurance newInsurance)
Emitted when the Insurance address is updated
Parameters
newInsurance
contract IInsurance
undefined
OracleChanged
event OracleChanged(contract IOracle newOracle)
Emitted when the Oracle address is updated
Parameters
newOracle
contract IOracle
undefined
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
Parameters
role indexed
bytes32
undefined
previousAdminRole indexed
bytes32
undefined
newAdminRole indexed
bytes32
undefined
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
Parameters
role indexed
bytes32
undefined
account indexed
address
undefined
sender indexed
address
undefined
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Parameters
role indexed
bytes32
undefined
account indexed
address
undefined
sender indexed
address
undefined
TraderBadDebtGenerated
event TraderBadDebtGenerated(address beneficiary, uint256 amount)
Emitted when bad debt is settled for by the insurance reserve
Parameters
beneficiary
address
undefined
amount
uint256
undefined
Withdraw
event Withdraw(address indexed user, address indexed asset, uint256 amount)
Emitted when collateral is withdrawn from the vault
Parameters
user indexed
address
undefined
asset indexed
address
undefined
amount
uint256
undefined
Errors
PRBMathSD59x18__MulInputTooSmall
error PRBMathSD59x18__MulInputTooSmall()
Emitted when one of the inputs is MIN_SD59x18.
PRBMathSD59x18__MulOverflow
error PRBMathSD59x18__MulOverflow(uint256 rAbs)
Emitted when the intermediary absolute result overflows SD59x18.
Parameters
rAbs
uint256
undefined
PRBMath__MulDivFixedPointOverflow
error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
Emitted when the result overflows uint256.
Parameters
prod1
uint256
undefined
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator)
Emitted when the result overflows uint256.
Parameters
prod1
uint256
undefined
denominator
uint256
undefined
Vault_ApproveZeroAddress
error Vault_ApproveZeroAddress()
Emitted when a user attempts to approve the zero address
Vault_ClearingHouseAlreadySet
error Vault_ClearingHouseAlreadySet()
Emitted when the clearingHouse has already been set (one time call function)
Vault_ClearingHouseZeroAddress
error Vault_ClearingHouseZeroAddress()
Emitted when the proposed clearingHouse address is equal to the zero address
Vault_CollateralAlreadyWhiteListed
error Vault_CollateralAlreadyWhiteListed()
Emitted when owner tries to whitelist a collateral already whitelisted
Vault_ExcessiveCollateralWeight
error Vault_ExcessiveCollateralWeight()
Emitted when the proposed collateral weight is above the limit
Vault_InsufficientBalance
error Vault_InsufficientBalance()
Emitted when a user attempts to withdraw more collateral than available in vault
Vault_InsufficientCollateralWeight
error Vault_InsufficientCollateralWeight()
Emitted when the proposed collateral weight is under the limit
Vault_InsuranceAlreadySet
error Vault_InsuranceAlreadySet()
Emitted when the insurance has already been set (one time call function)
Vault_InsuranceZeroAddress
error Vault_InsuranceZeroAddress()
Emitted when the proposed insurance address is equal to the zero address
Vault_MaxCollateralAmountExceeded
error Vault_MaxCollateralAmountExceeded()
Emitted when a user attempts to withdraw more collateral than available in vault
Vault_OracleZeroAddress
error Vault_OracleZeroAddress()
Emitted when the proposed oracle address is equal to the zero address
Vault_SenderNotClearingHouse
error Vault_SenderNotClearingHouse()
Emitted when the sender is not the clearing house
Vault_SenderNotInsurance
error Vault_SenderNotInsurance()
Emitted when the sender is nor the insurance
Vault_UADebt
error Vault_UADebt()
Emitted when user tries to withdraw collateral while having a UA debt
Vault_UnsupportedCollateral
error Vault_UnsupportedCollateral()
Emitted when a user attempts to use a token which is not whitelisted as collateral
Vault_WithdrawExcessiveAmount
error Vault_WithdrawExcessiveAmount()
Emitted when a user attempts to withdraw more than their balance
Vault_WithdrawInsufficientAllowance
error Vault_WithdrawInsufficientAllowance()
Emitted when a user attempts to withdraw more than their allowance
Vault_ZeroAddressConstructor
error Vault_ZeroAddressConstructor(uint8 paramIndex)
Emitted when the zero address is provided as a parameter in the constructor
Parameters
paramIndex
uint8
undefined
Last updated