LineOfCredit.sol
Core functions and methods of LineOfCredit.sol
LineOfCredit.sol is the core contract responsible for:
- Recording credit lines, positions and accounting for Borrowers and Lenders
- Defining Line of Credit terms (Oracle, Arbiter, Borrower, loan duration, interest rate, escrow and spigot collateral)
- Coordinating the Escrow, Spigot, and InterestRateCredit modules
- External calls to Oracle.sol and InterestRateCredit.sol
- Libraries - LineLib.sol, CreditLib.sol, CreditListLib.sol
function init() external virtual returns(LineLib.STATUS)
function addCredit(uint128 drate,uint128 frate,uint256 amount,address token,address lender) external payable override nonReentrant whileActive mutualConsent(lender, borrower) returns (bytes32)
function borrow(bytes32 id, uint256 amount) external override nonReentrant whileActive onlyBorrower returns (bool)
function accrueInterest() external override returns(bool)
function counts() external view returns (uint256, uint256)
function healthcheck() external returns (LineLib.STATUS)
function increaseCredit(bytes32 id, uint256 amount) external payable override nonReentrant whileActive mutualConsentById(id)returns (bool)
function setRates(bytes32 id,uint128 drate,uint128 frate) external override mutualConsentById(id) returns (bool)
function updateOutstandingDebt() external override returns (uint256, uint256)
function withdraw(bytes32 id, uint256 amount) external override nonReentrant returns (bool)
function depositAndRepay(uint256 amount )external payable override nonReentrant whileBorrowing returns (bool)
function declareInsolvent() external returns (bool)
function depositAndClose() external payable override nonReentrant whileBorrowing onlyBorrower returns (bool)
function close(bytes32 id) external payable override nonReentrant onlyBorrower returns (bool)
function init()
: tests that any collateral facility is set up as expected, pointing to the correct address for the Line of Credit. If so, status changes to 'active'. function addCredit()
: a Lender deposits for the first time to an active Line of Creditfunction borrow(
): a Borrower draws down from an available credit positionfunction accrueInterest()
: updates the amount of Interest Accrued that the Borrower owesfunction counts(
): returns the number of active credit positions within a Line of Credit and the number of credit positions irrespective of statusfunction healthcheck()
: returns the status of the Line of Creditfunction increaseCredit()
: an existing Lender deposits additional capitalfunction setRates()
: updates the Drawn Rate and the Facility Rate for a credit positionfunction updateOutstandingDebt()
: returns total Borrower debt across all Lendersfunction withdraw()
: a Lender withdraws principal and accrued interestfunction depositAndRepay():
anyone can deposit funds to repay a Lender function declareInsolvent()
: Arbiter signifies that a Borrower is incapable of repaying debt permanently (used for secured lending)function depositAndClose()
: Borrower deposits enough Credit Tokens to repay and close a credit positionfunction close()
: deletes a credit position that has already been fully repaid
Last modified 1mo ago