Skip to main content
Keepers repay USDG and receive stock. The core gates the call. The module sizes the seize. Network: Robinhood Chain testnet. Addresses: Addresses. ABIs: Stockline.json, LiquidationModule.json.
1

Watch positions

Index Borrow, Repay, SupplyCollateral, WithdrawCollateral, and Liquidate from the indexer, or poll RiskLens.snapshot on known accounts.A candidate is health < 1e18. Confirm regime is LIVE or DARK and the core is not paused.
2

Price the Dutch auction

Call LiquidationModule.quote(account, bookId, repayAmount) offchain. discountOf ramps from 0 to the book max over auctionWindow. Pass type(uint256).max as repay to let the module cap at the target-health need.
3

Submit through the core

Do not call LiquidationModule.liquidate yourself. It reverts NotCore. Approve USDG on Stockline, then:
4

Respect the allowlist flag

RiskRegistry.liquidatorAllowlist(bookId) is true at launch.The module does not enforce it. LiquidationModule NatSpec: liquidations are permissionless. If governance later wires a check, this guide will change on the next generate of the contract page. Today, anyone who can pay q.repay can liquidate.Still read the flag. If you operate an allowlisted keeper set, do not assume competitors are blocked.

What can go wrong

  • NotLiquidatable if health recovered between quote and send.
  • RegimeBlocked / Paused if the book left LIVE/DARK or the guardian paused.
  • NothingToSeize if collateral or debt is now zero.
  • Quote vs execution: discount rises with time. Re-quote in the same block you send, or you may overpay relative to the UI.
  • You need USDG, not sUSDG. Zap first if you hold another dollar.
  • Thin exit: selling seized stock onchain can move more than the auction bonus. Size for offchain hedges. See Risk.

Parameters that size the auction

Next: Liquidations, Indexer.