FixedInterestOnlyLoans is an ERC-721 contract. Each minted NFT represents a loan that must be paid back to the NFT owner.

Loan Parameters

Each loan is parametrized by:

  • Underlying token with which funds are lent out and repaid (e.g. USDC)

  • Principal debt (minting price)

  • Period payment (interest paid at each installment)

  • Period length (a period when the borrower pays installments)

  • Period count (total number of installments)

  • End date (date of the last installment to be paid together with the principal, set when the loan is started)

  • Recipient’s address

  • Grace period (time by which borrower can be late in repayment of each installment)

  • A canBeRepaidAfterDefault flag that allows a loan to be repaid after a loan was marked as defaulted

Loan states & state transitions

A loan can have one of the possible statuses: Created, Accepted, Started, Repaid, Canceled, or Defaulted.

Upon minting the loan status is set to Created. In this state, a borrower can accept a loan by calling acceptLoan(id) and the loan status is changed to Accepted.

The NFT owner can call start(id) on loans whose status is Accepted. When a loan is started the loan end date is calculated for the loan and the loan status is changed to Started.

The NFT owner can mark loans as canceled whose status is Created or Accepted.

The NFT owner can mark loans as Defaulted whose status is Started and the current block time is after a current period endDate + gracePeriod time.

The NFT owner can update the loan's gracePeriod at any time by calling updateInstrument(id). The NFT owner must call repay(id, amount) to recalculate repaid periods and the current period end date.

The repaid amount must be equal to the period payment or period payment + principal for the last installment. The loan can be repaid after it was marked as defaulted only if the proper canBeRepaidAfterDefault flag was set to true.

Last updated