SiloLens
SiloLens
Utility contract that simplifies reading data from Silo protocol contracts
Methods
balanceOfUnderlying
Get underlying balance of collateral or debt token
You can think about debt and collateral tokens as cToken in compound. They represent ownership of debt or collateral in given Silo. This method converts that ownership to exact amount of underlying token.
Parameters
Name | Type | Description |
---|---|---|
_assetTotalDeposits | uint256 | Total amount of assets that has been deposited or borrowed. For collateral token, use |
_shareToken | contract IShareToken | share token address. It's the collateral and debt share token address. You can find these addresses in: - |
_user | address | wallet address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | balance of underlying token deposited or borrowed of given user |
borrowAPY
Yearly interest rate for borrowing asset token, dynamically calculated for current block timestamp
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | APY with 18 decimals |
borrowShare
Get debt token balance of a user
Debt token represents a share in total debt of given asset. This method calls balanceOf(_user) on that token.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
_user | address | wallet address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | balance of debt token of given user |
calcFee
Calculate amount of entry fee for given amount
Parameters
Name | Type | Description |
---|---|---|
_amount | uint256 | amount for which to calculate fee |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | Amount of token fee to be paid |
calculateBorrowValue
Calculate value of borrowed asset by user
It dynamically adds interest earned to borrowed amount
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_user | address | account for which calculation are done |
_asset | address | token address for which calculation are done |
_3 | uint256 | undefined |
_4 | uint256 | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | value of debt denominated in ETH with 18 decimal |
calculateCollateralValue
Calculate value of collateral asset for user
It dynamically adds interest earned. Takes for account collateral only deposits as well.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_user | address | account for which calculation are done |
_asset | address | token address for which calculation are done |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | value of collateral denominated in ETH with 18 decimal |
collateralBalanceOfUnderlying
Get underlying balance of all deposits of given token of given user including "collateralOnly" deposits
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
_user | address | wallet address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | balance of debt token of given user |
collateralOnlyDeposits
Get amount of asset token that has been deposited to Silo with option "collateralOnly"
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | amount of all "collateralOnly" deposits made for given asset |
debtBalanceOfUnderlying
Get amount of debt of underlying token for given user
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
_user | address | wallet address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | balance of underlying token owed |
depositAPY
Yearly interest rate for depositing asset token, dynamically calculated for current block timestamp
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | APY with 18 decimals |
getBorrowAmount
Calculates current borrow amount for user with interest
Interest is calculated based on the provided timestamp with is expected to be current time.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | token address for which calculation are done |
_user | address | account for which calculation are done |
_timestamp | uint256 | timestamp used for interest calculations |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | total amount of asset user needs to repay at provided timestamp |
getModel
gets interest rates model object
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset for which to calculate interest rate |
Returns
Name | Type | Description |
---|---|---|
_0 | contract IInterestRateModel | IInterestRateModel interest rates model object |
getUserLTV
Returns Loan-To-Value for an account
Each Silo has multiple asset markets (bridge assets + unique asset). This function calculates a sum of all deposits and all borrows denominated in ETH. Returns fraction between borrow value and deposit value with 18 decimals.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_user | address | wallet address for which LTV is calculated |
Returns
Name | Type | Description |
---|---|---|
userLTV | uint256 | user current LTV with 18 decimals |
getUserLiquidationThreshold
Get combined liquidation threshold for a user
Methodology for calculating liquidation threshold is as follows. Each Silo is combined form multiple assets (bridge assets + unique asset). Each of these assets may have different liquidation threshold. That means effective liquidation threshold must be calculated per asset based on current deposits and borrows of given account.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_user | address | wallet address for which to read data |
Returns
Name | Type | Description |
---|---|---|
liquidationThreshold | uint256 | liquidation threshold of given user |
getUserMaximumLTV
Get combined maximum Loan-To-Value for a user
Methodology for calculating maximum LTV is as follows. Each Silo is combined form multiple assets (bridge assets + unique asset). Each of these assets may have different maximum Loan-To-Value for opening borrow position. That means effective maximum LTV must be calculated per asset based on current deposits and borrows of given account.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_user | address | wallet address for which to read data |
Returns
Name | Type | Description |
---|---|---|
maximumLTV | uint256 | Maximum Loan-To-Value of given user |
getUtilization
Calculates fraction between borrowed and deposited amount of tokens for given asset denominated in percentage
Utilization is calculated current values in storage so it does not take for account earned interest and ever-increasing total borrow amount. It assumes 1e18 = 100%.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | utilization value |
inDebt
Check if user is in debt
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_user | address | wallet address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | bool | TRUE if user borrowed any amount of any asset, otherwise FALSE |
lensPing
Method for sanity check
Returns
Name | Type | Description |
---|---|---|
_0 | bool | always true |
liquidity
Amount of token that is available for borrowing.
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | Silo liquidity |
protocolFees
Get amount of fees earned by protocol to date
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | amount of fees earned by protocol to date |
siloRepository
Returns
Name | Type | Description |
---|---|---|
_0 | contract ISiloRepository | undefined |
totalBorrowAmount
Get amount of asset that has been borrowed
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | amount of asset that has been borrowed |
totalBorrowAmountWithInterest
returns total borrow amount with interest dynamically calculated at current block timestamp
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | undefined |
_asset | address | asset address |
Returns
Name | Type | Description |
---|---|---|
_totalBorrowAmount | uint256 | total deposits amount with interest |
totalBorrowShare
Get totalSupply of debt token
Debt token represents a share in total debt of given asset
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | totalSupply of debt token |
totalDeposits
Get amount of asset token that has been deposited to Silo
It reads directly from storage so interest generated between last update and now is not taken for account
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | Silo address from which to read data |
_asset | address | asset address for which to read data |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | amount of all deposits made for given asset |
totalDepositsWithInterest
returns total deposits with interest dynamically calculated at current block timestamp
Parameters
Name | Type | Description |
---|---|---|
_silo | contract ISilo | undefined |
_asset | address | asset address |
Returns
Name | Type | Description |
---|---|---|
_totalDeposits | uint256 | total deposits amount with interest |
Errors
IncorrectDataLength
Last updated