Building Modules
Modules manage collateral for loans.
interface ILoanModule { function setup(address caller, TermKey calldata termKey, bytes calldata data) external returns (bool); function verify(address caller, TermKey calldata termKey, LoanKey calldata loanKey, bytes calldata data) external returns (bool); function beforeLoan(address caller, LoanKey calldata loanKey, bytes calldata data) external returns (bool); function afterLoan(address caller, LoanKey calldata loanKey, bytes calldata data) external returns (bool); function liquidate(TermKey calldata termKey, LoanKey calldata loanKey, address beneficiary, uint256 repayment, bytes calldata data) external;}setup(), Configure module for a term
verify(), Validate loan parameters before allocation (must revert if unsafe)
beforeLoan(), Lock collateral from borrower
afterLoan(), Release collateral after settlement
liquidate(), Handle defaulted loans
Built-in modules: ERC20LTV (token collateral with LTV validation), ERC721 (NFT collateral for P2P lending), Attestation (identity/credential-based lending)
- Implement the interface above
- Validate thoroughly in
verify() - Only release collateral after confirming settlement
- Reference deployed contracts for implementation details