Technical explanation of Lotus loan health checks, oracle integration, modular liquidation architecture, and the Oracle Incentive Liquidation Module.
Oracles
Lotus is oracle‑agnostic. Markets specify an oracle per tranche, and Lotus only assumes it can retrieve a price for collateral/loan valuation.
Health Check
Oracles are used to evaluate borrower health during:
borrow()
withdrawCollateral()
liquidate()
Healthy means maxBorrow ≥ borrowed for the tranche (see LLTV).
Borrowed amount
Borrowed amount is derived from the borrower's borrowShares at trancheIndex, converted into assets using tranche borrow totals.
Max borrow
Max borrow is derived from collateral amount, oracle price, and the tranche LLTV.
Liquidations
Lotus modularizes liquidation policy:
The core Lotus contract is responsible for:
health checks
interest accrual
collateral approvals
position updates
bad debt accounting and cascading
A protocol-approved Liquidation Module is responsible for:
liquidation pricing (calculateLiquidation)
liquidation execution (executeLiquidation)
Liquidation flow
Accrue interest locally for the tranche.
Fetch price from oracle; verify the position is unhealthy.
Liquidation Module quotes seized collateral vs debt repaid.
Update the borrower’s position and compute any bad debt.
If bad debt > 0, accrue interest for the full market and cascade loss to current and junior suppliers by utilization.
Approve collateral to the module and execute the swap/transfer.
Liquidation Modules are pluggable. The protocol owner enables modules, and new markets choose among them at creation.
Oracle Incentive Liquidation Module
The OracleIncentiveLiquidationModule stores a per-tranche liquidationIncentiveFactor and applies it when quoting seized collateral vs repaid debt. It supports both collateral-first and debt-first quote modes.