一个抽象合约,其中包含 FraxlendPair 的核心逻辑和存储。
构造函数在合约部署时被调用。
初始化函数initialize
在部署后立即被调用。
此函数只能由部署者调用。
_totalAssetAvailable
函数返回合约中资产代币的总余额。
_isSolvent
函数用于判断在给定的汇率下,特定借款人是否具备偿还能力。
_isPastMaturity
函数用于判断当前区块时间戳是否已经超过到期日期(maturityDate)。
在执行合约代码后检查偿还能力。
检查 msg.sender
是否为已批准的借款人。
检查 msg.sender
和 _receiver
是否都是已批准的贷款人。
确保在超过到期日期时不调用该函数。
当借款人累积利息时,发出 AddInterest
事件。
当利率更新时,发出 UpdateRate
事件。
addInterest
函数是 _addInterest
的公共实现,允许第三方触发利息的累积。
_addInterest
函数在每个外部函数调用之前被调用,用于累积利息并更新利率。
该函数每个区块只能调用一次。
当抵押品与资产的汇率更新时,发出 UpdateExchangeRate
事件。
updateExchangeRate
函数是 _updateExchangeRate
的外部实现。
由于这些查询可能会很耗费资源,该函数在每个区块中最多只能被调用一次。
_updateExchangeRate
函数用于获取最新的汇率,即购买 1e18 资产所需的抵押品数量。
由于这些查询可能会非常耗费资源,该函数在每个区块中最多只能被调用一次。
_deposit
函数是用于出借资产的内部实现。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
deposit
函数允许用户通过指定要出借的资产代币数量来出借资产。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
mint
函数允许用户通过指定要铸造的资产股份(fTokens)数量来出借资产。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
_redeem
函数是一个内部实现,允许贷款人从交易对中提取他们的资产代币。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
redeem
函数允许调用者将他们的资产股份兑换为资产代币。
withdraw
函数允许用户将他们的资产股份兑换为指定数量的资产代币。
当借款人增加其头寸时,发出 BorrowAsset
事件。
_borrowAsset
函数是借款资产的内部实现。
borrowAsset
函数允许用户开立或增加借款头寸。
如果适用,借款人必须在调用该函数之前对抵押代币合约调用 ERC20.approve
。
_addCollateral
函数是向借款人头寸添加抵押品的内部实现。
addCollateral
函数允许调用者向借款人头寸添加抵押代币。
msg.sender
必须在调用该函数之前对抵押代币合约调用 ERC20.approve()
。
当抵押品从借款人的头寸中移除时,发出 RemoveCollateral
事件。
_removeCollateral
函数是从借款人头寸中移除抵押品的内部实现。
removeCollateral
函数用于从 msg.sender
的借款头寸中移除抵押品。
调用后,msg.sender
必须保持偿付能力,否则交易将会回退。
每当债务头寸被偿还时,发出 RepayAsset
事件。
_repayAsset
函数是偿还借款头寸的内部实现。
付款人必须在调用该函数之前对资产代币合约调用 ERC20.approve()
。
repayAsset
函数允许调用者偿还特定借款人的债务。
调用者必须首先对资产代币合约调用 ERC20.approve()
。
当发生清算时,发出 Liquidate
事件。
liquidate
函数允许第三方偿还已成为不偿还能力的借款人的债务。
调用者必须在调用 Liquidate()
之前对资产代币合约调用 ERC20.approve
。
当借款人开立新的杠杆头寸时,发出 LeveragedPosition
事件。
leveragedPosition
函数允许用户以最小的前期抵押品进入杠杆借款头寸。
调用者必须在调用该函数之前对抵押代币合约调用 ERC20.approve()
。
每当调用 repayAssetWithCollateral()
时,发出 RepayAssetWithCollateral
事件。
repayAssetWithCollateral
函数允许借款人使用合约中现有的抵押品偿还其债务。
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Param | Type | Description |
---|---|---|
Return | Type | Description |
---|---|---|
_configData
bytes
abi.encode(address _asset, address _collateral, address _oracleMultiply, address _oracleDivide, uint256 _oracleNormalization, address _rateContract, bytes memory _rateInitData)
_immutables
bytes
_maxLTV
uint256
The Maximum Loan-To-Value for a borrower to be considered solvent (1e5 precision)
_liquidationFee
uint256
The fee paid to liquidators given as a % of the repayment (1e5 precision)
_maturityDate
uint256
The maturityDate date of the Pair
_penaltyRate
uint256
The interest rate after maturity date
_isBorrowerWhitelistActive
bool
Enables borrower whitelist
_isLenderWhitelistActive
bool
Enables lender whitelist
_name
string
The name of the contract
_approvedBorrowers
address[]
An array of approved borrower addresses
_approvedLenders
address[]
An array of approved lender addresses
_rateInitCallData
bytes
The configuration data for the Rate Calculator contract
_totalAsset
struct VaultAccount
VaultAccount struct which stores total amount and shares for assets
_totalBorrow
struct VaultAccount
VaultAccount struct which stores total amount and shares for borrows
[0]
uint256
The balance of Asset Tokens held by contract
_borrower
address
The borrower address to check
_exchangeRate
uint256
The exchange rate, i.e. the amount of collateral to buy 1e18 asset
[0]
bool
Whether borrower is solvent
[0]
bool
Whether or not the debt is past maturity
_borrower
address
The borrower whose solvency we will check
_receiver
address
An additional receiver address to check
_interestEarned
uint256
The total interest accrued by all borrowers
_rate
uint256
The interest rate used to calculate accrued interest
_deltaTime
uint256
The time elapsed since last interest accrual
_feesAmount
uint256
The amount of fees paid to protocol
_feesShare
uint256
The amount of shares distributed to protocol
_ratePerSec
uint256
The old interest rate (per second)
_deltaTime
uint256
The time elapsed since last update
_utilizationRate
uint256
The utilization of assets in the Pair
_newRatePerSec
uint256
The new interest rate (per second)
_interestEarned
uint256
The amount of interest accrued by all borrowers
_feesAmount
uint256
_feesShare
uint256
_newRate
uint64
_interestEarned
uint256
The amount of interest accrued by all borrowers
_feesAmount
uint256
_feesShare
uint256
_newRate
uint64
_rate
uint256
The new rate given as the amount of Collateral Token to buy 1e18 Asset Token
_exchangeRate
uint256
The new exchange rate
_exchangeRate
uint256
The new exchange rate
_totalAsset
struct VaultAccount
An in memory VaultAccount struct representing the total amounts and shares for the Asset Token
_amount
uint128
The amount of Asset Token to be transferred
_shares
uint128
The amount of Asset Shares (fTokens) to be minted
_receiver
address
The address to receive the Asset Shares (fTokens)
_amount
uint256
The amount of Asset Token to transfer to Pair
_receiver
address
The address to receive the Asset Shares (fTokens)
_sharesReceived
uint256
The number of fTokens received for the deposit
_shares
uint256
The number of Asset Shares (fTokens) that a user wants to mint
_receiver
address
The address to receive the Asset Shares (fTokens)
_amountReceived
uint256
The amount of Asset Tokens transferred to the Pair
_totalAsset
struct VaultAccount
An in-memory VaultAccount struct which holds the total amount of Asset Tokens and the total number of Asset Shares (fTokens)
_amountToReturn
uint128
The number of Asset Tokens to return
_shares
uint128
The number of Asset Shares (fTokens) to burn
_receiver
address
The address to which the Asset Tokens will be transferred
_owner
address
The owner of the Asset Shares (fTokens)
_shares
uint256
The number of Asset Shares (fTokens) to burn for Asset Tokens
_receiver
address
The address to which the Asset Tokens will be transferred
_owner
address
The owner of the Asset Shares (fTokens)
_amountToReturn
uint256
The amount of Asset Tokens to be transferred
_amount
uint256
The amount of Asset Tokens to be transferred in exchange for burning Asset Shares
_receiver
address
The address to which the Asset Tokens will be transferred
_owner
address
The owner of the Asset Shares (fTokens)
_shares
uint256
The number of Asset Shares (fTokens) burned
_borrower
address
The borrower whose account was debited
_receiver
address
The address to which the Asset Tokens were transferred
_borrowAmount
uint256
The amount of Asset Tokens transferred
_sharesAdded
uint256
The number of Borrow Shares the borrower was debited
_borrowAmount
uint128
The amount of the Asset Token to borrow
_receiver
address
The address to receive the Asset Tokens
_sharesAdded
uint256
The amount of borrow shares the msg.sender will be debited
_borrowAmount
uint256
The amount of Asset Token to borrow
_collateralAmount
uint256
The amount of Collateral Token to transfer to Pair
_receiver
address
The address which will receive the Asset Tokens
_shares
uint256
The number of borrow Shares the msg.sender will be debited
_sender
address
The source of funds for the new collateral
_collateralAmount
uint256
The amount of Collateral Token to be transferred
_borrower
address
The borrower account for which the collateral should be credited
_collateralAmount
uint256
The amount of Collateral Token to be added to borrower's position
_borrower
address
The account to be credited
_sender
address
The account from which funds are transferred
_collateralAmount
uint256
The amount of Collateral Token to be transferred
_receiver
address
The address to which Collateral Tokens will be transferred
_borrower
address
_collateralAmount
uint256
The amount of Collateral Token to remove from the borrower's position
_receiver
address
The address to receive the Collateral Token transferred
_borrower
address
The borrower whose account will be debited the Collateral amount
_collateralAmount
uint256
The amount of Collateral Token to transfer
_receiver
address
The address to receive the transferred funds
_sender
address
The msg.sender of the transaction
_borrower
address
The borrower whose account will be credited
_amountToRepay
uint256
The amount of Asset token to be transferred
_shares
uint256
The amount of Borrow Shares which will be debited from the borrower after repayment
_totalBorrow
struct VaultAccount
An in memory copy of the totalBorrow VaultAccount struct
_amountToRepay
uint128
The amount of Asset Token to transfer
_shares
uint128
The number of Borrow Shares the sender is repaying
_payer
address
The address from which funds will be transferred
_borrower
address
The borrower account which will be credited
_shares
uint256
The number of Borrow Shares which will be repaid by the call
_borrower
address
The account for which the debt will be reduced
_amountToRepay
uint256
The amount of Asset Tokens which were transferred in order to repay the Borrow Shares
_borrower
address
The borrower account for which the liquidation occured
_collateralForLiquidator
uint256
The amount of Collateral Token transferred to the liquidator
_shares
uint256
The number of Borrow Shares the liquidator repaid on behalf of the borrower
_shares
uint256
The number of Borrow Shares repaid by the liquidator
_borrower
address
The account for which the repayment is credited and from whom collateral will be taken
_collateralForLiquidator
uint256
The amount of Collateral Token transferred to the liquidator
_borrower
address
The account for which the debt is debited
_swapperAddress
address
The address of the swapper which conforms the FraxSwap interface
_borrowAmount
uint256
The amount of Asset Token to be borrowed to be borrowed
_borrowShares
uint256
The number of Borrow Shares the borrower is credited
_initialCollateralAmount
uint256
The amount of initial Collateral Tokens supplied by the borrower
_amountCollateralOut
uint256
The amount of Collateral Token which was received for the Asset Tokens
_swapperAddress
address
The address of the whitelisted swapper to use to swap borrowed Asset Tokens for Collateral Tokens
_borrowAmount
uint256
The amount of Asset Tokens borrowed
_initialCollateralAmount
uint256
The initial amount of Collateral Tokens supplied by the borrower
_amountCollateralOutMin
uint256
The minimum amount of Collateral Tokens to be received in exchange for the borrowed Asset Tokens
_path
address[]
An array containing the addresses of ERC20 tokens to swap. Adheres to UniV2 style path params.
_totalCollateralBalance
uint256
The total amount of Collateral Tokens added to a users account (initial + swap)
_borrower
address
The borrower account for which the repayment is taking place
_swapperAddress
address
The address of the whitelisted swapper to use for token swaps
_collateralToSwap
uint256
The amount of Collateral Token to swap and use for repayment
_amountAssetOut
uint256
The amount of Asset Token which was repaid
_sharesRepaid
uint256
The number of Borrow Shares which were repaid
_swapperAddress
address
The address of the whitelisted swapper to use for token swaps
_collateralToSwap
uint256
The amount of Collateral Tokens to swap for Asset Tokens
_amountAssetOutMin
uint256
The minimum amount of Asset Tokens to receive during the swap
_path
address[]
An array containing the addresses of ERC20 tokens to swap. Adheres to UniV2 style path params.
_amountAssetOut
uint256
The amount of Asset Tokens received for the Collateral Tokens, the amount the borrowers account was credited