Structs
Corresponding to each Asset
Reserve Data
pub struct ReserveData {
pub activated: bool,
pub frozen: bool,
pub total_deposit: Balance,
pub total_debt: Balance,
pub current_deposit_rate_e18: u64,
pub current_debt_rate_e18: u64,
}
Each asset has it's corresponding Reserve Data that describes
activated - if false depositing/withdrawing and borrowing/repaying of the asset is not possible.
frozen - if true depositing and borrowing of the asset is not possible.
total_deposit - a sum of all deposits of the asset made by all account's including already accumulated interests.
total_debt - a sum of all all debts in the asset made by all account's including already accumulated interests.
current_deposit_rate_e18 - a current interest earned on the deposits of the asset per millisecond multiplied by 10^18. This rate includes fee thus to real interest earned by an account is reduced by the fee.
current_debt_rate_e18 - a current interest paid on the debt in the asset per millisecond multiplied by 10^18. This rate does NOT include fee thus the real interest paid by an account is increased by the fee.
Reserve Indexes And Fees
pub struct ReserveIndexesAndFees {
pub indexes: ReserveIndexes,
pub fees: ReserveFees,
}
pub struct ReserveIndexes {
pub deposit_index_e18: u128,
pub debt_index_e18: u128,
pub update_timestamp: Timestamp,
}
pub struct ReserveFees {
pub deposit_fee_e6: u32,
pub debt_fee_e6: u32,
}
Each asset has it's corresponding Reserve Indexes And Fees which is built from Reserve Indexes and Reserve Fees.
Reserve Indexes struct describes:
deposit_index_e18 - a measure of the accumulated deposit interest - a number that should multiply an initial deposit to get the current deposit + interest (including fees) - multiplied by 10^18.
debt_index_e18 - a measure of the accumulated debt interest - a number that should multiply an initial debt to get the current debt + interest(excluding fees) - multiplied by 10^18.
update_timestamp - a last timestamp at which the indexes where updated.
Reserve Fees struct describes:
deposit_fee_e6 - a part of accumulated deposit interest that is distributed to an account that is charged by the protocol multiplied by 10^6.
debt_fee_e6 - a part of accumulated debt interest that that is accumulated to an account that is additionally added to the account's debt and charged by the protocol.
Reserve Restrictions
pub struct ReserveRestrictions {
pub maximal_total_deposit: Option<Balance>,
pub maximal_total_debt: Option<Balance>,
pub minimal_collateral: Balance,
pub minimal_debt: Balance,
}
Each asset has it's corresponding Reserve Restrictions that describes:
maximal_total_deposit - a value that total_deposit can not exceed after deposit action. If None there is no limit.
maximal_total_debt - a value that total_debt can not exceed after borrow action. If None there is no limit.
minimal_collateral - a value that: - 1) the account's deposit must exceed so the asset can be used as collateral. - 2) if the account deposit falls below after withdraw/liquidation/transfer the asset will not be used as collateral any more.
minimal_debt - a value that the account's debt must exceed after borrow/repay/liquidation/transfer.
Reserve Abacus Tokens
pub struct ReserveAbacusTokens {
pub a_token_address: AccountId,
pub v_token_address: AccountId,
}
Each asset has it's corresponding Reserve Abacus Tokens that describes:
a_token_address - an AccountId of a proxy PSP22 Token representing accounts' deposits.
v_token_address - an AccountId of a proxy PSP22 Token representing accounts' debts.
Corresponding to each Account
AccountConfig
pub struct AccountConfig {
pub deposits: Bitmap128,
pub collaterals: Bitmap128,
pub borrows: Bitmap128,
pub market_rule_id: RuleId,
}
Each account has a corresponding AccountConfig that describes:
deposits - a bitmap in which bit on i-th position denotes if an account has deposit of an asset with AssetId = i.
collaterals - a bitmap in which bit on i-th position denotes if an account has active collateral of an asset with AssetId = i.
borrows - a bitmap in which bit on i-th position denotes if an account has debt of an asset with AssetId = i.
market_rule_id - a RuleId that represents a MarketRule chosen by the account.
Corresponding to a pair (Account, Asset);
AccountReserveData
pub struct AccountReserveData {
pub deposit: Balance,
pub debt: Balance,
pub applied_deposit_index_e18: u128,
pub applied_debt_index_e18: u128,
}
Each account has a AccountReserveData that corresponds to some asset and describes:
deposit - amount of the asset the Lending Prtocol owes the account - deposits + interests.
debt - amount of the asset the account owes the Lending Protocol - borrows + interests.
applied_deposit_index_e18 - the value of deposit_index_e18 of the asset on the last interaction (interest accumulation).
applied_debt_index_e18 - the value of the debt_index_e18 of the asset on the last interaction (interest accumulation).
Last updated