87 txs
88 calls
constructor
constructor(address _usdc, address _vault, address _stakingContract, address _treasuryVault)
functions
annualInterestSum
viewfunction annualInterestSum() view returns (uint256)
CREDIT_OPENER
viewfunction CREDIT_OPENER() view returns (bytes32)
currentInterestForPrincipalPayPreview
viewfunction currentInterestForPrincipalPayPreview(uint256 _creditLineID) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getCurrentWeightedAverageRate
viewfunction getCurrentWeightedAverageRate() view returns (uint256)
getNextInterestPayDate
viewfunction getNextInterestPayDate(uint256 _creditLineID) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getUnpaidInterestPeriods
viewfunction getUnpaidInterestPeriods(uint256 _creditLineID) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
interestPaymentPeriodDurations
viewfunction interestPaymentPeriodDurations(uint8) view returns (uint256)
loans
viewfunction loans(uint256) view returns (address borrower, uint256 amount, uint16 annualRate, uint8 interestPaymentPeriod, uint256 duration, uint256 borrowedAt, uint256 principalDebt, bool borrowed, bool repaid, uint256 daysInPeriodPaid, uint256 lastInterestPaidAt)
loansCount
viewfunction loansCount() view returns (uint256)
owner
viewfunction owner() view returns (address)
previewInterestToPay
viewfunction previewInterestToPay(uint256 _creditLineID) view returns (uint256, uint256)
protocolFee
viewfunction protocolFee() view returns (uint16)
stakingContract
viewfunction stakingContract() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalBorrowed
viewfunction totalBorrowed() view returns (uint256)
treasuryVault
viewfunction treasuryVault() view returns (address)
usdc
viewfunction usdc() view returns (address)
vault
viewfunction vault() view returns (address)
borrow
nonpayablefunction borrow(uint256 _creditLineID)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
openCreditLine
nonpayablefunction openCreditLine(tuple params)
payInterest
nonpayablefunction payInterest(uint256 _creditLineID)
payPrincipal
nonpayablefunction payPrincipal(uint256 _creditLineID, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setProtocolFee
nonpayablefunction setProtocolFee(uint16 _protocolFee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Borrowed
event Borrowed(uint256 creditLineID)
InterestPaid
event InterestPaid(uint256 creditLineID, uint256 amount)
Opened
event Opened(uint256 creditLineID, address borrower, uint256 amount, uint256 annualRate, uint256 duration, uint256 paymentPeriod)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Repaid
event Repaid(uint256 creditLineID)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040526006805461ffff60a01b1916604b60a21b17905534801561002457600080fd5b50604051611d91380380611d918339810160408190526100439161037e565b338061006a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61007381610264565b506001600160a01b0384166100b95760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610061565b6001600160a01b0383166100fe5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610061565b6001600160a01b0382166101435760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610061565b6001600160a01b0381166101885760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610061565b6101936000336102b6565b50600380546001600160a01b039586166001600160a01b03199182161790915560048054948616948216949094179093556005805492851692841692909217909155600680549190931691161790556002602081905262278d007fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b556276a7007fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0556000526301da9c007f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c556103d2565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610358576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556103103390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161035c565b5060005b92915050565b80516001600160a01b038116811461037957600080fd5b919050565b6000806000806080858703121561039457600080fd5b61039d85610362565b93506103ab60208601610362565b92506103b960408601610362565b91506103c760608601610362565b905092959194509250565b6119b0806103e16000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639d11ed751161010f578063c5ebeaec116100a2578063e4467f3511610071578063e4467f35146104bb578063ee99205c146104ce578063f2fde38b146104e1578063fbfa77cf146104f457600080fd5b8063c5ebeaec146103e1578063d547741f146103f4578063d9c42cc314610407578063e1ec3c681461042f57600080fd5b8063b0e21e8a116100de578063b0e21e8a14610373578063bcb43dcc1461039b578063c1708215146103ae578063c371c85e146103ce57600080fd5b80639d11ed751461033c578063a217fddf14610345578063ad452d751461034d578063af8b1c6f1461036057600080fd5b80633e413bee116101875780638da5cb5b116101565780638da5cb5b146102e95780639146ef59146102fa57806391d148541461032157806391ea36671461033457600080fd5b80633e413bee1461029a57806348317f95146102c55780634c19386c146102d8578063715018a6146102e157600080fd5b8063248a9ca3116101c3578063248a9ca31461023c5780632f2ff15d1461025f57806336568abe1461027457806337bc744d1461028757600080fd5b806301ffc9a7146101ea5780630942f6b6146102125780630a01112714610229575b600080fd5b6101fd6101f8366004611724565b610507565b60405190151581526020015b60405180910390f35b61021b60095481565b604051908152602001610209565b61021b61023736600461174e565b61053e565b61021b61024a36600461174e565b60009081526020819052604090206001015490565b61027261026d366004611783565b6105e6565b005b610272610282366004611783565b610611565b61021b61029536600461174e565b610649565b6003546102ad906001600160a01b031681565b6040516001600160a01b039091168152602001610209565b6102726102d33660046117af565b610797565b61021b60085481565b610272610a40565b6001546001600160a01b03166102ad565b61021b7fff73fdc63e763a1daa53b2ad840a4e95dc50a98df503604fb70e98c9928264b281565b6101fd61032f366004611783565b610a54565b61021b610a7d565b61021b60075481565b61021b600081565b61027261035b36600461174e565b610a9d565b6006546102ad906001600160a01b031681565b60065461038890600160a01b900461ffff1681565b60405161ffff9091168152602001610209565b6102726103a93660046117d1565b610bfb565b61021b6103bc3660046117ec565b60026020526000908152604090205481565b61021b6103dc36600461174e565b610e92565b6102726103ef36600461174e565b610f25565b610272610402366004611783565b611171565b61041a61041536600461174e565b611196565b60408051928352602083019190915201610209565b6104a461043d36600461174e565b600a602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460078801546008909801546001600160a01b0390971697959661ffff86169660ff6201000090970487169683811693610100900416918b565b6040516102099b9a99989796959493929190611823565b6102726104c93660046118ad565b611296565b6005546102ad906001600160a01b031681565b6102726104ef3660046118d1565b6112c0565b6004546102ad906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b148061053857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000818152600a60205260408120600681015460ff6101009091041615156001148061056f5750600681015460ff16155b1561057d5750600092915050565b600881015460028083015460009190829062010000900460ff16828111156105a7576105a761180d565b60028111156105b8576105b861180d565b81526020019081526020016000205482426105d39190611902565b6105dd9190611915565b95945050505050565b600082815260208190526040902060010154610601816112fe565b61060b8383611308565b50505050565b6001600160a01b038116331461063a5760405163334bd91960e11b815260040160405180910390fd5b610644828261139a565b505050565b6000818152600a602052604081206006015460ff6101009091041615156001148061068657506000828152600a602052604090206006015460ff16155b1561069357506000919050565b600061069e8361053e565b905080600003610720576000838152600a6020526040812060029081015490919062010000900460ff16828111156106d8576106d861180d565b60028111156106e9576106e961180d565b815260200190815260200160002054600a6000858152602001908152602001600020600801546107199190611937565b9392505050565b6000838152600a6020526040812060029081015490919062010000900460ff16828111156107505761075061180d565b60028111156107615761076161180d565b8152602001908152602001600020548161077b919061194a565b6000848152600a60205260409020600801546107199190611937565b6000828152600a60205260409020600501546107ea5760405162461bcd60e51b815260206004820152600d60248201526c185b1c99591e481c995c185a59609a1b60448201526064015b60405180910390fd5b6000828152600a602052604090206005015481111561084b5760405162461bcd60e51b815260206004820152601860248201527f616d6f756e742067726561746572207468656e2064656274000000000000000060448201526064016107e1565b6000828152600a602052604090206002810154600582015461ffff909116906108779061271090611915565b610881919061194a565b600960008282546108929190611902565b9250508190555081600860008282546108ab9190611902565b9091555050600881015460009062015180906108c79042611902565b6108d19190611915565b905060006108de85611405565b905060006108ec828461194a565b60045460035491925061090e916001600160a01b039081169133911688611489565b600354610926906001600160a01b0316333084611489565b61092f816114f0565b828460070160008282546109439190611937565b925050819055508484600501600082825461095e9190611902565b90915550506002840154600585015461ffff909116906109819061271090611915565b61098b919061194a565b6009600082825461099c9190611937565b909155505060058401546000036109ff5742600885015560068401805461ff0019166101001790556040517f33a382daad6aace935340a474d09fec82af4bec7e2b69518d283231b03a65f24906109f69088815260200190565b60405180910390a15b60408051878152602081018390527f1f68787782361d72df9db26edc0ebfbbdb8e9dfbe6bd56d39cb67cdf20d95115910160405180910390a1505050505050565b610a486115c6565b610a5260006115f3565b565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600080600854600954612710610a93919061194a565b6105389190611915565b6000818152600a602052604090206006015460ff161515600114610af25760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd08189bdc9c9bddd95960a21b60448201526064016107e1565b6000818152600a6020526040902060060154610100900460ff1615610b4a5760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481c995c185a5960921b60448201526064016107e1565b600080610b5683611196565b90925090508115610644576000838152600a60205260409020600354610b87906001600160a01b0316333086611489565b610b90836114f0565b60006007820155610ba4826201518061194a565b816008016000828254610bb79190611937565b909155505060408051858152602081018590527f1f68787782361d72df9db26edc0ebfbbdb8e9dfbe6bd56d39cb67cdf20d95115910160405180910390a150505050565b7fff73fdc63e763a1daa53b2ad840a4e95dc50a98df503604fb70e98c9928264b2610c25816112fe565b60408051610160810190915260009080610c4260208601866118d1565b6001600160a01b0316815260200184602001358152602001846040016020810190610c6d91906118ad565b61ffff168152602001610c8660808601606087016117ec565b6002811115610c9757610c9761180d565b81526020018460800135815260200160008152602001600081526020016000151581526020016000151581526020016000815260200142815250905060076000815480929190610ce690611961565b90915550506007546000908152600a6020908152604091829020835181546001600160a01b0319166001600160a01b03909116178155908301516001820155908201516002808301805461ffff19811661ffff90941693841782556060860151869594909362ffffff19909216179062010000908490811115610d6b57610d6b61180d565b0217905550608082810151600383015560a0830151600483015560c0830151600583015560e08301516006830180546101008087015115150261ff00199315159390931661ffff19909116179190911790556101208301516007808401919091556101409093015160089092019190915590548251602084015160408501519385015160608601517f8c26c1650c61db2f5fa79b29d0d3bb5a4653167cb86ea9c8f0b3a369598da93095919060029060009082811115610e2d57610e2d61180d565b6002811115610e3e57610e3e61180d565b815260208082019290925260409081016000205481519788526001600160a01b039096169187019190915285019290925261ffff166060840152608083015260a082015260c00160405180910390a1505050565b6000818152600a60205260408120600681015460ff61010090910416151560011480610ec35750600681015460ff16155b15610ed15750600092915050565b6000620151808260070154836008015442610eec9190611902565b610ef69190611937565b610f009190611915565b90506000610f0d85611405565b90506000610f1b828461194a565b9695505050505050565b6000818152600a60205260409020546001600160a01b03163314610f7a5760405162461bcd60e51b815260206004820152600c60248201526b3737ba103137b93937bbb2b960a11b60448201526064016107e1565b6000818152600a602052604090206006015460ff1615610fcf5760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48189bdc9c9bddd95960821b60448201526064016107e1565b6000818152600a6020526040902060060154610100900460ff16156110275760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481c995c185a5960921b60448201526064016107e1565b600480546000838152600a602052604090819020600181015490549151630967fa2960e31b8152938401526001600160a01b0390811660248401521690634b3fd14890604401600060405180830381600087803b15801561108757600080fd5b505af115801561109b573d6000803e3d6000fd5b5050506000828152600a60205260408120600101546008805491935091906110c4908490611937565b90915550506000818152600a60205260409020426004820181905560068201805460ff19166001908117909155820154600583018190556008830191909155600282015461ffff169061111a9061271090611915565b611124919061194a565b600960008282546111359190611937565b90915550506040518281527f69c0ed5a77051ba5f0c42418bb6db6d3f73884dea69811c50bf320298df6ca5c9060200160405180910390a15050565b60008281526020819052604090206001015461118c816112fe565b61060b838361139a565b6000818152600a60205260408120600681015482919060ff610100909104161515600114806111ca5750600681015460ff16155b156111db5750600093849350915050565b60006111e68561053e565b9050806000036111fd575060009485945092505050565b6000826007015462015180600260008660020160029054906101000a900460ff16600281111561122f5761122f61180d565b60028111156112405761124061180d565b8152602001908152602001600020546112599190611915565b611263908461194a565b61126d9190611902565b9050600061127a87611405565b90506000611288828461194a565b989297509195505050505050565b61129e6115c6565b6006805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b6112c86115c6565b6001600160a01b0381166112f257604051631e4fbdf760e01b8152600060048201526024016107e1565b6112fb816115f3565b50565b6112fb8133611645565b60006113148383610a54565b611392576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561134a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610538565b506000610538565b60006113a68383610a54565b15611392576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610538565b6000818152600a60209081526040822060028084529091527f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c54829061144f906201518090611915565b6002830154600584015461ffff9091169061146d9061271090611915565b611477919061194a565b6114819190611915565b949350505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261060b9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611682565b600654600090600160a01b900461ffff1661150d61271084611915565b611517919061194a565b600654600354919250611537916001600160a01b039081169116836116f3565b60006115438284611902565b600554600354919250611563916001600160a01b039081169116836116f3565b60055460405163199c164b60e31b8152600481018390526001600160a01b039091169063cce0b25890602401600060405180830381600087803b1580156115a957600080fd5b505af11580156115bd573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b03163314610a525760405163118cdaa760e01b81523360048201526024016107e1565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61164f8282610a54565b61167e5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016107e1565b5050565b600080602060008451602086016000885af1806116a5576040513d6000823e3d81fd5b50506000513d915081156116bd5780600114156116ca565b6001600160a01b0384163b155b1561060b57604051635274afe760e01b81526001600160a01b03851660048201526024016107e1565b6040516001600160a01b0383811660248301526044820183905261064491859182169063a9059cbb906064016114be565b60006020828403121561173657600080fd5b81356001600160e01b03198116811461071957600080fd5b60006020828403121561176057600080fd5b5035919050565b80356001600160a01b038116811461177e57600080fd5b919050565b6000806040838503121561179657600080fd5b823591506117a660208401611767565b90509250929050565b600080604083850312156117c257600080fd5b50508035926020909101359150565b600060a08284031280156117e457600080fd5b509092915050565b6000602082840312156117fe57600080fd5b81356003811061071957600080fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038c168152602081018b905261ffff8a166040820152610160810160038a1061186357634e487b7160e01b600052602160045260246000fd5b8960608301528860808301528760a08301528660c083015261188960e083018715159052565b84151561010083015261012082019390935261014001529998505050505050505050565b6000602082840312156118bf57600080fd5b813561ffff8116811461071957600080fd5b6000602082840312156118e357600080fd5b61071982611767565b634e487b7160e01b600052601160045260246000fd5b81810381811115610538576105386118ec565b60008261193257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610538576105386118ec565b8082028115828204841417610538576105386118ec565b600060018201611973576119736118ec565b506001019056fea26469706673582212203e13ca60ee794f8fc0ad8323b9e9be82e6492b7ae5f1a65fc1852dc8fd3d646864736f6c634300081c0033000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000e5d2eb7f4f1ecfa1113e8a5b5c6df42d8376460f000000000000000000000000134ee64ccf2151452b0fbd757f9ae1a09304036b000000000000000000000000c0136886b5cf415d039ae190cb8ebaa3cd0bfadc