Skip to article content

Compoundv2 liquidations: Shortfall vs. Deprecation

Updated:

Compound V2 liquidations on Ethereum let a liquidator repay debt and seize a borrower's cToken collateral. The V2 Comptroller implementation has an ordinary shortfall route and a separate exception for qualifying deprecated markets.

Ordinary Trigger
A positive account shortfall under the Comptroller's collateral requirements. The requested repayment cannot exceed the close factor multiplied by the borrower's outstanding debt in the borrowed market.
Deprecated-Market Predicate
The borrowed market must have a zero collateral factor, paused borrowing and a 100% reserve factor together. The V2 Comptroller calls this state isDeprecated .
Exception's Repayment Limit
When the borrowed market satisfies isDeprecated , liquidation does not require a shortfall or apply the ordinary close-factor cap. The requested repayment can reach that market's full outstanding borrow balance, subject to the remaining execution checks.
Collateral Allocation
The documented CToken implementation removes collateral cTokens from the borrower. It allocates the protocol seizure share to reserves and credits the remaining cTokens to the liquidator.

Wind-Down Parameters and Contract State

Gauntlet published Compound V2 Deprecation Proposal v2 on December 2, 2025. The executed proposal, numbered 512, specifies paused borrowing and minting across V2, with reserve factors of 100% for all assets.

Those changes alone do not establish the Comptroller's full deprecation predicate, which also requires a zero collateral factor in the borrowed market. A governance proposal's deprecation label therefore cannot replace the contract-state test.

The predicate concerns the borrowed cToken, which can differ from the cToken that supplies seized collateral. For a deployed market, that exception depends on both its implementation and its actual parameters.

Shortfall and the Close Factor

The Comptroller values collateral in entered markets using cToken balances, exchange rates, oracle prices and collateral factors. Ordinary liquidation requires the account's oracle-valued debt to exceed that adjusted collateral value. The account-level shortfall determines eligibility, while the close-factor cap uses debt in the specific borrowed market.

Borrowing interest can increase that debt between observations. Before checking liquidation permission, the cToken liquidation method accrues interest in both the borrowed market and selected collateral market. The debt balance used by the permission check therefore includes that accrual.

The close factor limits the requested repayment amount for an ordinary liquidation call. It does not specify a percentage of the borrower's collateral or total debt across every market.

When a borrowed market satisfies isDeprecated , the Comptroller skips both the shortfall requirement and ordinary close-factor limit. It still rejects a requested repayment that exceeds the borrower's outstanding balance in that market.


Repayment Assets and Collateral Allocation

Liquidators repay the underlying asset owed in the borrowed market. For ERC-20 debt, CErc20 requires sufficient payer balance and allowance for that cToken's transfer call. The CEther liquidation method accepts Ether through its payable call.

The amount that the borrowed market actually receives reduces the borrower's debt and drives the collateral-seizure calculation. If an underlying token charges a transfer fee, that amount can differ from the submitted repayment amount. The Comptroller uses both assets' oracle prices and the liquidation incentive to convert the actual repayment into collateral units. The collateral cToken exchange rate converts that amount into the total cTokens to seize. Both oracle prices must be nonzero, including under the deprecated-market exception.

In the CToken implementation, liquidation removes the calculated seizure amount from the borrower's cToken balance. It credits the liquidator with the remainder after the protocol seizure share. The protocol's portion reduces cToken supply and increases reserves by its underlying-equivalent value.

The protocol seizure share differs from the reserve factor, which allocates accrued borrowing interest. Liquidation transfers cToken claims; redemption exchanges those claims for underlying assets. Redemption remains a separate operation, subject to available market cash and applicable account-liquidity checks.


Remaining Execution Conditions

Liquidation eligibility alone does not move collateral; a liquidator must execute a valid liquidateBorrow call.

Visual summary: Compoundv2 liquidations: Remaining Execution Conditions

View full-size image

  • Both the borrowed market and collateral market must pass the Comptroller's listing checks.
  • The borrowed cToken and collateral cToken must identify the same Comptroller for seizure.
  • The Comptroller's seizure pause must permit collateral seizure.
  • The liquidator must differ from the borrower.
  • The repayment must be positive and must not equal type(uint).max .
  • The borrower must hold at least the collateral cToken amount that the seizure calculation requires.

The maximum unsigned-integer value requests full repayment in the ERC-20 repayBorrow implementation. The liquidation method rejects that value, including when the deprecated-market exception permits full-balance liquidation.

The contracts support seizure from the borrowed cToken itself or another compatible collateral cToken. Same-market liquidation uses an internal seizure call; cross-market liquidation calls the collateral cToken. Neither path removes the applicable permission or collateral-balance checks.


Liquidation Events and Balance Changes

The RepayBorrow event records the payer, borrower, actual repayment, resulting account debt and total market borrows. The final LiquidateBorrow event identifies the participants, actual repayment amount, collateral cToken and total seized cTokens.

The seized amount includes the protocol's share, so it can exceed the cTokens credited to the liquidator. Collateral Transfer events distinguish the liquidator's allocation from the portion assigned to the protocol. A partial liquidation leaves a borrow balance that can continue accruing interest.

Compoundv2 liquidations: Liquidation Events and Balance Changes

View full-size image