Loan Extensions

📘

Background

The loan extension (also referred to as rollover) process can be agreed upon by the same lender as the original loan or initialized with a new lender.

The borrower must pay interest in the full amount owed on the original loan to complete/fund this transaction.

Please note that depending on the terms of the transaction, the principal (and repayment) amounts may differ between the old and new loans. The borrower may receive or be required to pay in order to make up any shortfall on the difference of amounts (net payments) between the old and new loans - including interest.

  1. The borrower agrees with existing or new Lender on the terms of new loan extension. After this is complete, the borrower initiates a loan rollover request.

  2. The OriginationController communicates the loan rollover request to LoanCore.

rolloverLoan(), rolloverLoanWithItems()
  1. The Origination Controller then makes additional calls to LoanCore to validate the borrower and lender and passes the agreed upon loan terms.
validateLoanTerms(), validateRollover(), validateCounterparties()
  1. Once validated, LoanCore initiates a rollover function in order to atomically repay and close the old loan and re-open a new loan with the same underlying collateral.
rollover()
  1. The Origination Controller calculates the net payments associated with the loan extension to either pay (or withdraw) from the borrower and any payment owed to the original lender on the old loan at the completion of the rollover transaction.
calculateRolloverAmounts()
  1. LoanCore then burns both PromissoryNotes (BorrowerNote and LenderNote) relating to the old loan.
burnLoanNotes()
  1. LoanCore sets up the new loan referencing the terms from the OriginationController and mints PromissoryNotes (BorrowerNote and LenderNote).
mintLoanNotes()
  1. LoanCore completes the process by transferring the appropriate PromissoryNotes for the new loan to both the borrower and the lender. Finally, the net payments associated with the rollover transaction may be distributed to the original lender depending on the terms of the old and new loans.
safeTransferFrom(), transferIfNonzero()