CreditLine
CreditLine
Deployment on Ethereum mainnet:
https://etherscan.io/address/0x86db002dbBb64D67ef4B43C76C432BF5BCBF7197
A contract that represents the agreement between Backers and a Borrower. Includes the terms of the loan, as well as the accounting state such as interest owed. A CreditLine instance belongs to a TranchedPool instance and is fully controlled by that TranchedPool instance. It should not operate in any standalone capacity and should generally be considered internal to the TranchedPool instance.
INTEREST_DECIMALS
uint256 INTEREST_DECIMALS
SECONDS_PER_DAY
uint256 SECONDS_PER_DAY
SECONDS_PER_YEAR
uint256 SECONDS_PER_YEAR
config
contract GoldfinchConfig config
borrower
address borrower
currentLimit
uint256 currentLimit
maxLimit
uint256 maxLimit
interestApr
uint256 interestApr
lateFeeApr
uint256 lateFeeApr
balance
uint256 balance
totalInterestPaid
uint256 totalInterestPaid
Cumulative interest paid back up to now
lastFullPaymentTime
uint256 lastFullPaymentTime
_totalInterestAccrued
uint256 _totalInterestAccrued
_totalInterestOwed
uint256 _totalInterestOwed
_checkpointedAsOf
uint256 _checkpointedAsOf
schedule
struct PaymentSchedule schedule
initialize
function initialize(address _config, address owner, address _borrower, uint256 _maxLimit, uint256 _interestApr, contract ISchedule _schedule, uint256 _lateFeeApr) public
Initialize a brand new credit line
pay
function pay(uint256 paymentAmount) external returns (struct ILoan.PaymentAllocation)
Process a bulk payment, allocating the payment amount based on the payment waterfall
pay
function pay(uint256 principalPayment, uint256 interestPayment) public returns (struct ILoan.PaymentAllocation)
Process a payment according to the waterfall described in Accountant.allocatePayment
II: insufficient interest
Parameters
Name | Type | Description |
---|---|---|
principalPayment | uint256 | principal payment amount |
interestPayment | uint256 | interest payment amount |
Return Values
Name | Type | Description |
---|---|---|
[0] | struct ILoan.PaymentAllocation | payment allocation |
drawdown
function drawdown(uint256 amount) external
Drawdown on the line
Parameters
Name | Type | Description |
---|---|---|
amount | uint256 | amount to drawdown. Cannot exceed the line's limit |
setLimit
function setLimit(uint256 newAmount) external
setMaxLimit
function setMaxLimit(uint256 newAmount) external
interestAccruedAsOf
function interestAccruedAsOf() public view virtual returns (uint256)
We keep this to conform to the ICreditLine interface, but it's redundant information
now that we have checkpointedAsOf
isLate
function isLate() external view returns (bool)
withinPrincipalGracePeriod
function withinPrincipalGracePeriod() public view returns (bool)
interestOwed
function interestOwed() public view virtual returns (uint256)
interestOwedAt
function interestOwedAt(uint256 timestamp) public view returns (uint256)
Interest that would be owed at timestamp
totalInterestAccrued
function totalInterestAccrued() public view returns (uint256)
Cumulative interest accrued up to now
totalInterestAccruedAt
function totalInterestAccruedAt(uint256 timestamp) public view returns (uint256)
Cumulative interest accrued up to timestamp
totalInterestOwedAt
function totalInterestOwedAt(uint256 timestamp) public view returns (uint256)
Cumulative interest owed up to timestamp
limit
function limit() public view returns (uint256)
totalPrincipalPaid
function totalPrincipalPaid() public view returns (uint256)
Returns the total amount of principal thats been paid
totalInterestOwed
function totalInterestOwed() public view returns (uint256)
Cumulative interest owed up to now
interestAccrued
function interestAccrued() public view returns (uint256)
Interest accrued in the current payment period up to now. Converted to owed interest once we cross into the next payment period. Is 0 if the current time is after loan maturity (all interest accrued immediately becomes interest owed).
principalOwedAt
function principalOwedAt(uint256 timestamp) public view returns (uint256)
Principal owed up to timestamp
totalPrincipalOwedAt
function totalPrincipalOwedAt(uint256 timestamp) public view returns (uint256)
Cumulative principal owed at timestamp
principalOwed
function principalOwed() public view returns (uint256)
interestAccruedAt
function interestAccruedAt(uint256 timestamp) public view returns (uint256)
Interest accrued in the current payment period for timestamp
. Coverted to
owed interest once we cross into the payment period after timestamp
. Is 0
if timestamp
is after loan maturity (all interest accrued immediately becomes
interest owed).
nextDueTime
function nextDueTime() external view returns (uint256)
nextDueTimeAt
function nextDueTimeAt(uint256 timestamp) external view returns (uint256)
termStartTime
function termStartTime() public view returns (uint256)
Time of first drawdown
termEndTime
function termEndTime() public view returns (uint256)
totalPrincipalOwed
function totalPrincipalOwed() public view returns (uint256)
Cumulative principal owed at current timestamp
_checkpoint
function _checkpoint() internal
Updates accounting variables. This should be called before any changes to balance
!
_interestAccruedOverPeriod
function _interestAccruedOverPeriod(uint256 start, uint256 end) internal view returns (uint256)
_lateFeesAccuredOverPeriod
function _lateFeesAccuredOverPeriod(uint256 start, uint256 end) internal view returns (uint256)
_isLate
function _isLate(uint256 timestamp) internal view returns (bool)
PaymentSchedule
struct PaymentSchedule {
contract ISchedule schedule;
uint64 startTime;
}
PaymentScheduleLib
startAt
function startAt(struct PaymentSchedule s, uint256 timestamp) internal
previousDueTimeAt
function previousDueTimeAt(struct PaymentSchedule s, uint256 timestamp) internal view returns (uint256)
previousInterestDueTimeAt
function previousInterestDueTimeAt(struct PaymentSchedule s, uint256 timestamp) internal view returns (uint256)
principalPeriodAt
function principalPeriodAt(struct PaymentSchedule s, uint256 timestamp) internal view returns (uint256)
totalPrincipalPeriods
function totalPrincipalPeriods(struct PaymentSchedule s) internal view returns (uint256)
isActive
function isActive(struct PaymentSchedule s) internal view returns (bool)
termEndTime
function termEndTime(struct PaymentSchedule s) internal view returns (uint256)
termStartTime
function termStartTime(struct PaymentSchedule s) internal view returns (uint256)
nextDueTimeAt
function nextDueTimeAt(struct PaymentSchedule s, uint256 timestamp) internal view returns (uint256)
withinPrincipalGracePeriodAt
function withinPrincipalGracePeriodAt(struct PaymentSchedule s, uint256 timestamp) internal view returns (bool)
isActiveMod
modifier isActiveMod(struct PaymentSchedule s)