Vault

Keeps track of all token reserves for all market

Methods

DEFAULT_ADMIN_ROLE

function DEFAULT_ADMIN_ROLE() external view returns (bytes32)

Returns

NameTypeDescription

_0

bytes32

undefined

EMERGENCY_ADMIN

function EMERGENCY_ADMIN() external view returns (bytes32)

Returns

NameTypeDescription

_0

bytes32

undefined

GOVERNANCE

function GOVERNANCE() external view returns (bytes32)

Returns

NameTypeDescription

_0

bytes32

undefined

UA

function UA() external view returns (contract IERC20Metadata)

Returns

NameTypeDescription

_0

contract IERC20Metadata

undefined

UA_IDX

function UA_IDX() external view returns (uint256)

Returns

NameTypeDescription

_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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

_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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

_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

NameTypeDescription

user

address

User address

tokenIdx

uint256

Index of the token

Returns

NameTypeDescription

_0

int256

undefined

getNumberOfCollaterals

function getNumberOfCollaterals() external view returns (uint256)

Get number of whitelisted tokens

Returns

NameTypeDescription

_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

NameTypeDescription

user

address

User address

isDiscounted

bool

Whether or not the reserve value should be discounted by the weight of the collateral

Returns

NameTypeDescription

_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

NameTypeDescription

role

bytes32

undefined

Returns

NameTypeDescription

_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

NameTypeDescription

_0

int256

undefined

getWhiteListedCollateral

function getWhiteListedCollateral(uint256 idx) external view returns (struct IVault.Collateral)

Get details of a whitelisted collateral token

Parameters

NameTypeDescription

idx

uint256

Index of the whitelisted collateral to get details from

Returns

NameTypeDescription

_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

NameTypeDescription

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

NameTypeDescription

role

bytes32

undefined

account

address

undefined

Returns

NameTypeDescription

_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

NameTypeDescription

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

NameTypeDescription

_0

contract IInsurance

undefined

isEmergencyAdmin

function isEmergencyAdmin(address account) external view returns (bool)

Parameters

NameTypeDescription

account

address

undefined

Returns

NameTypeDescription

_0

bool

undefined

isGovernor

function isGovernor(address account) external view returns (bool)

Parameters

NameTypeDescription

account

address

undefined

Returns

NameTypeDescription

_0

bool

undefined

oracle

function oracle() external view returns (contract IOracle)

Returns

NameTypeDescription

_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

NameTypeDescription

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

NameTypeDescription

role

bytes32

undefined

account

address

undefined

setClearingHouse

function setClearingHouse(contract IClearingHouse newClearingHouse) external nonpayable

Update the ClearingHouse address

Parameters

NameTypeDescription

newClearingHouse

contract IClearingHouse

Address of the new ClearingHouse

setInsurance

function setInsurance(contract IInsurance newInsurance) external nonpayable

Update the Insurance address

Parameters

NameTypeDescription

newInsurance

contract IInsurance

Address of the new Insurance

setOracle

function setOracle(contract IOracle newOracle) external nonpayable

Update the Oracle address

Parameters

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

interfaceId

bytes4

undefined

Returns

NameTypeDescription

_0

bool

undefined

tokenToCollateralIdx

function tokenToCollateralIdx(contract IERC20Metadata) external view returns (uint256)

Map whitelisted collateral tokens to their whiteListedCollaterals indices

Parameters

NameTypeDescription

_0

contract IERC20Metadata

undefined

Returns

NameTypeDescription

_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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

asset

contract IERC20Metadata

undefined

newMaxAmount

uint256

undefined

CollateralWeightChanged

event CollateralWeightChanged(contract IERC20Metadata asset, uint256 newWeight)

Emitted when a collateral weight is updated

Parameters

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

newInsurance

contract IInsurance

undefined

OracleChanged

event OracleChanged(contract IOracle newOracle)

Emitted when the Oracle address is updated

Parameters

NameTypeDescription

newOracle

contract IOracle

undefined

RoleAdminChanged

event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)

Parameters

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

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

NameTypeDescription

rAbs

uint256

undefined

PRBMath__MulDivFixedPointOverflow

error PRBMath__MulDivFixedPointOverflow(uint256 prod1)

Emitted when the result overflows uint256.

Parameters

NameTypeDescription

prod1

uint256

undefined

PRBMath__MulDivOverflow

error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator)

Emitted when the result overflows uint256.

Parameters

NameTypeDescription

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

NameTypeDescription

paramIndex

uint8

undefined

Last updated