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

Last updated