Links

Supply

When a user supplies funds to the protocol, they receive rTokens. We use the following formula (as per EIP 4626) to decide how many tokens are minted for the user.
rTokensnew=AssetnewrTokenstotalAssettotal rTokens_{new} = \frac{Asset_{new} \cdot rTokens_{total}}{Asset_{total}}
The formula uses existing total rTokens supply and Total asset supply to decide the quantity of rTokens to be minted for their deposit.
Assettotal=Asset.balanceOf(contract)+Assetslent+InterestaccruedAsset_{total} = Asset.balanceOf(contract) + Assets_{lent} + Interest_{accrued}
// Definitions
Assets_lent => Assets borrowed by borrower contract to issue loans to the user
Interest_accrued => Interest recievable by suppliers since last update
The contract exposes the following features for user and open contracts to interact with:
  1. 1.
    User: Technically, a user can usually perform 3 main actions with supplier contract: Deposit, Withdraw & Transfer. User can further use the received rTokens as collateral to borrow or stake to earn higher yield.
Fig. 2 - Supply use-cases
  1. 2.
    Open: The supply contract provides special privileges to the Open contract to allow it for some book-keeping. These options include:
  • Accrue the interest
  • Lock/unlock supply - to prevent the transfer of collateralised supply
  • Transfer & withdraw supplied funds on the users behalf - to liquidate the loan
  • Borrow and repay - to utilise funds to issue & close loans