Market
Last updated
Was this helpful?
Last updated
Was this helpful?
The Market is the main contract of the protocol. It exposes all user-oriented actions for fixed and variable borrows, deposits, repayments, and withdrawals.
The contract is also an token itself. Following the standard, exaTokens
are minted to the user once he deposits underlying assets into the variable pool. These tokens are then burned once the underlying assets are withdrawn. If transferred, the variable deposit position is also transferred.
Tracks fixed deposit and borrow map and floating borrow shares of an account.
Address of underlying ERC20 asset.
Auditor contract that validates health factor of accounts that operate with this Market.
Rate charged to the fixed pool to be retained by the floating pool for initially providing liquidity.
Damp speed factor to update floatingAssetsAverage
when floatingAssets
is lower.
Damp speed factor to update floatingAssetsAverage
when floatingAssets
is higher.
Accumulated earnings from extraordinary sources to be gradually distributed.
Factor used for gradual accrual of earnings to the floating pool.
Tracks account's fixed borrow positions by maturity, account and position.
Tracks account's fixed deposit positions by maturity, account and position.
Tracks fixed pools state by maturity.
Amount of floating assets deposited to the pool.
Average of the floating assets to get fixed borrow rates and prevent rate manipulation.
Amount of assets lent by the floating pool to the fixed pools.
Amount of assets lent by the floating pool to accounts.
Current floating utilization used to get the new floating borrow rate.
Interest rate model contract used to get the borrow rates.
Last time the accumulator distributed earnings.
Last time the floating assets average was updated.
Last time the floating debt was updated.
Number of fixed pools to be active at the same time.
Rate per second to be charged to delayed fixed pools borrowers after maturity.
Percentage factor that represents the liquidity reserves that can't be borrowed.
Address of the treasury that will receive the allocated earnings.
Rate to be charged by the treasury to floating and fixed borrows.
Gets current snapshot for an account across all maturities.
Parameters
account
address
account to return status snapshot in the specified maturity date.
Returns
uint256
The amount of assets the account deposited to the floating pool
uint256
The amount of debt the account owes from fixed and floating borrows
Returns the amount of assets that would be exchanged by the pool for the amount of shares provided.
Parameters
shares
uint256
amount of shares.
Returns
uint256
amount of exchanged assets.
Returns the amount of shares that would be exchanged by the vault for the amount of assets provided.
Parameters
assets
uint256
amount of assets.
Returns
uint256
amount of exchanged shares.
Returns the maximum amount of shares that can be redeem from the owner balance through a redeem call.
Parameters
owner
address
owner of the shares.
Returns
uint256
max amount of redeemable shares.
Returns the maximum amount of underlying assets that can be withdrawn from the owner balance with a single withdraw call.
Parameters
owner
address
owner of the assets.
Returns
uint256
max amount of withdrawable assets.
Simulates the effects of a borrow at the current time, given current contract conditions.
Parameters
assets
uint256
amount of assets to borrow.
Returns
uint256
amount of shares that will be assigned to the account after the borrow.
Gets all borrows and penalties for an account.
Parameters
borrower
address
account to return status snapshot for fixed and floating borrows.
Returns
debt
uint256
the total debt, denominated in number of assets.
Allows users to simulate the effects of their deposit at the current block.
Parameters
assets
uint256
assets to be deposited.
Returns
uint256
shares to receive in exchange of deposited assets.
Gets the current floatingAssetsAverage
without updating the storage variable.
Returns
uint256
projected floatingAssetsAverage
.
Allows users to simulate the effects of their mint at the current block.
Parameters
shares
uint256
shares to be minted.
Returns
uint256
assets to deposit in exchange of minted shares.
Allows users to simulate the effects of their redemption at the current block.
Parameters
shares
uint256
shares to be redeem.
Returns
uint256
assets to receive in exchange of burned shares.
Simulates the effects of a refund at the current time, given current contract conditions.
Parameters
shares
uint256
amount of shares to subtract from caller's accountability.
Returns
uint256
amount of assets that will be repaid.
Simulates the effects of a repay at the current time, given current contract conditions.
Parameters
assets
uint256
amount of assets to repay.
Returns
uint256
amount of shares that will be subtracted from the account after the repay.
Allows users to simulate the effects of their withdrawal at the current block.
Parameters
assets
uint256
assets to be withdrawn.
Returns
uint256
burned shares in exchange of withdrawn assets.
Calculates the floating pool balance plus earnings to be accrued at current timestamp from maturities and accumulator.
Returns
uint256
actual floatingAssets plus earnings to be accrued at current timestamp.
Calculates the total floating debt, considering elapsed time since last update and current interest rate.
Returns
uint256
actual floating debt plus projected interest.
Total amount of floating borrow shares assigned to floating borrow accounts.
Borrows a certain amount from the floating pool.
Parameters
assets
uint256
amount to be sent to receiver and repaid by borrower.
receiver
address
address that will receive the borrowed assets.
borrower
address
address that will repay the borrowed assets.
Returns
borrowShares
uint256
shares corresponding to the borrowed assets.
Borrows a certain amount from a maturity.
Parameters
maturity
uint256
maturity date for repayment.
assets
uint256
amount to be sent to receiver and repaid by borrower.
maxAssets
uint256
maximum amount of debt that the account is willing to accept.
receiver
address
address that will receive the borrowed assets.
borrower
address
address that will repay the borrowed assets.
Returns
assetsOwed
uint256
total amount of assets (principal + fee) to be repaid at maturity.
Clears floating and fixed debt for an account spreading the losses to the earningsAccumulator
.
Can only be called from the auditor.
Parameters
borrower
address
account with insufficient collateral to be cleared the debt.
Parameters
assets
uint256
amount of assets to deposit.
receiver
address
address of the account that will receive the minted shares.
Returns
shares
uint256
amount of minted shares.
Deposits a certain amount to a maturity.
Parameters
maturity
uint256
maturity date where the assets will be deposited.
assets
uint256
amount to receive from the msg.sender.
minAssetsRequired
uint256
minimum amount of assets required by the depositor for the transaction to be accepted.
receiver
address
address that will be able to withdraw the deposited assets.
Returns
positionAssets
uint256
total amount of assets (principal + fee) to be withdrawn at maturity.
Liquidates undercollateralized position(s).
Msg.sender liquidates borrower's position(s) and repays a certain amount of debt for multiple maturities, seizing a part of borrower's collateral.
Parameters
borrower
address
wallet that has an outstanding debt across all maturities.
maxAssets
uint256
maximum amount of debt that the liquidator is willing to accept. (it can be less)
seizeMarket
contract Market
market from which the collateral will be seized to give the liquidator.
Returns
repaidAssets
uint256
actual amount repaid.
Parameters
shares
uint256
amount of shares to mint.
receiver
address
address of account that will receive the minted shares.
Returns
assets
uint256
amount of deposited assets.
Redeems the owner's floating pool assets to the receiver address.
Makes sure that the owner doesn't have shortfall after withdrawing.
Parameters
shares
uint256
amount of shares to be redeemed for underlying asset.
receiver
address
address to which the assets will be transferred.
owner
address
address which owns the floating pool assets.
Returns
assets
uint256
amount of underlying asset that was withdrawn.
Repays a certain amount of shares to the floating pool.
Parameters
borrowShares
uint256
shares to be subtracted from the borrower's accountability.
borrower
address
address of the account that has the debt.
Returns
assets
uint256
subtracted assets from the borrower's accountability.
actualShares
uint256
actual subtracted shares from the borrower's accountability.
Repays a certain amount of assets to the floating pool.
Parameters
assets
uint256
assets to be subtracted from the borrower's accountability.
borrower
address
address of the account that has the debt.
Returns
actualRepay
uint256
the actual amount that should be transferred into the protocol.
borrowShares
uint256
subtracted shares from the borrower's accountability.
Repays a certain amount to a maturity.
Parameters
maturity
uint256
maturity date where the assets will be repaid.
positionAssets
uint256
amount to be paid for the borrower's debt.
maxAssets
uint256
maximum amount of debt that the account is willing to accept to be repaid.
borrower
address
address of the account that has the debt.
Returns
actualRepayAssets
uint256
the actual amount that was transferred into the protocol.
Public function to seize a certain amount of assets.
Public function for liquidator to seize borrowers assets in the floating pool. This function will only be called from another Market, on liquidation
calls. That's why msg.sender needs to be passed to the private function (to be validated as a market)
Parameters
liquidator
address
address which will receive the seized assets.
borrower
address
address from which the assets will be seized.
assets
uint256
amount to be removed from borrower's possession.
Withdraws the owner's floating pool assets to the receiver address.
Makes sure that the owner doesn't have shortfall after withdrawing.
Parameters
assets
uint256
amount of underlying to be withdrawn.
receiver
address
address to which the assets will be transferred.
owner
address
address which owns the floating pool assets.
Returns
shares
uint256
amount of shares redeemed for underlying asset.
Withdraws a certain amount from a maturity.
It's expected that this function can't be paused to prevent freezing account funds.
Parameters
maturity
uint256
maturity date where the assets will be withdrawn.
positionAssets
uint256
position size to be reduced.
minAssetsRequired
uint256
minimum amount required by the account (if discount included for early withdrawal).
receiver
address
address that will receive the withdrawn assets.
owner
address
address that previously deposited the assets.
Returns
assetsDiscounted
uint256
amount of assets withdrawn (can include a discount for early withdraw).