Skip to content

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