Details of the protocols we cover and the depth in which we cover them.
Explorer capability matrix
included not yet built built, awaiting the first on-chain instance the protocol can't provide it — open the cell for the why
Explorer
Health factor, collateral ratio, rates read live from the protocol's contracts
USD from the protocol's own oracle — the same prices it liquidates with, not a price-API approximation
The protocol's own oracle read back at each event's block, what the position was worth when it happened, never today's price
An offline verifier re-derives the explorer's figures directly from the chain via a second data path, and checks them against the indexed values and the constants the explorer states — run against mainnet when the explorer is built or changed, not a check that runs as the page renders
Export the position as Markdown or CSV, ready to paste into an LLM or agent context
A plain-language explainer on every event card
What was seized, the premium paid, health at the moment it fired — every explorer flags and links liquidations on the timeline
Protocol-level pages that read the whole system's own state live at head — market rosters, branch comparisons, redemption queues, balance sheets; what each explorer's view shows opens from its own row of the matrix
Aave's own vault layer — savings GHO, Umbrella stake tokens and static aTokens, each vault's totals and share price read from chain at one block, and every address that holds one
A vault share has no protocol oracle to value it — the one priced figure is the census's, the balance through the vault's own convertToAssets and the chain's Aave V3 oracle on the ASSET at that block
Nobody in a vault holds a loan — there is no threshold to breach and nothing to seize, so there is no liquidation to trace
Every vault Aave's three families deploy — savings GHO, the Umbrella stake tokens and the static aTokens — grouped by family, each row carrying its totals, share price and mechanic read from the contracts at one block the page names.
Each vault position's timeline replays that wallet's whole share-transfer history live from the vault's own logs on every request and checks it wei-exact against the vault's own balance before drawing anything — a mismatch means no rows rather than a wrong one. The roster of holders comes from a daily sweep of every vault's whole history (Aave's own enumerators for its vaults, the two MetaMorpho factories for those), proven complete against each vault's own total supply; a sweep that can't prove complete doesn't get published. There's no USD, APY or yield figure — just the flows and share prices as they happened.
Self-repaying loans against a yield-bearing vault token — each position's debt and collateral stated with the grade and the block they were settled at, and the line-wide redemptions that moved them
The asset underneath by design: the Alchemist values collateral as vault shares at the vault's share price, and counts each synthetic as one unit of the asset underneath. Alchemix runs no USD feed
Alchemix states no dollar figure for a position because the protocol has none. The Alchemist values collateral as vault shares at the vault's share price, in the asset underneath, and counts each synthetic as one unit of that asset. It runs no USD feed, so a position's debt, collateral and collateralisation are stated in that asset, and the dollar figure beside the collateral is a market price the page labels as one. Debt is a read rather than a replay. A redemption emits one number with no account attached and applies a single survival ratio to every open position at once, and the weights behind it have no public getter, so the explorer reads each V3 position's debt and collateral from getCDP at the block a figure names, at every block where one can step, and checks its own event replay against that read to the wei. Each line's replay stays the served figure only until that line's first redemption. The amount set aside for repayment accrues every block, so it is stated at the block it was read and never carried forward or added to a debt taken at another block. Share prices are stored with the Alchemist readings only, so Transmuter positions and V2 accounts state amounts in the synthetic or in vault shares with no price read at the block. V2 closed on 2 April 2026 and is served as a record frozen at block 24,794,239: every account re-read at head returned the same bytes. A V2 debt is signed, a negative one is a credit, and the swept collateral appears in no position's figure. A V2 figure is never added to its V3 successor's, because the V3 position is what the V2 one became. No position has been liquidated on any line yet, so the liquidation card is built and has nothing to show.
The original cToken markets replayed over six years — every account's supplies, borrows and liquidations from the contracts' own events, with the markets themselves read live at /compound-v2/markets
Every listed market's utilisation against its own rate-model kink, with USD from the oracle the Comptroller itself reads.
Compound V2 is the original cToken deployment, and what stands out about it is how little of it is still in use: it holds on the order of $100M supplied, but under 12% of that is borrowed — and two markets, cDAI and cUSDC, carry almost all of even that. Eight of its twenty markets have had their collateral factor set to zero, which does not mean a 0% limit; it means the market has been switched off as collateral entirely. The protocol view states that from the markets' own numbers: what each holds in its own token, how much of it is working, the collateral factor it does or doesn't have, and the utilisation its own rate model was tuned to expect. Dollars come from the oracle the Comptroller reads, never a price API — with one caveat: three markets are priced by a constant stored in that oracle with no feed behind it, and the legacy SAI market's constant sits at $14.43 for a token that targets a dollar. Nothing keys on a token symbol, because symbols collide: twenty markets carry eighteen distinct ones, two different markets both answer "cDAI", and the legacy SAI token itself reports the string "DAI" — so only a cToken address identifies a market. The position explorer replays the other side of that stillness: six years of account history — 3.83M events, 26,639 liquidations across 5,864 borrowers, the deepest liquidation record on the roster — proven wei-exact against the chain per market, with each account's live standing read from the Comptroller itself. The present is quiet; the history is why the explorer exists.
Solo-fork margin accounts at the contract's own (owner, account number) grain — balances replayed from emitted absolutes, debt as negative balances, the account's own margin line read live including the LST/ETH override
Every market's own margin ladder — a multiplicative premium over the 117.65% base, including the LST/ETH override.
Dolomite is a fork of dYdX's Solo Margin, and its grain is the contract's own: a position is an (owner, account number) pair — cross-margined within an account number, isolated across them — so that is what a page is. The core has no borrow action; a negative balance IS debt, and every balance is replayed from the emitted after-state rather than summed from deltas, which is why the whole book proves wei-exact against the contract's own totals with no exclusions. The margin line is the protocol's own arithmetic re-derived exactly: a global 117.65% minimum, per-market premiums applied multiplicatively (WLFI's effective requirement is 150.0%), and an on-chain override that gives ETH-and-LST pair accounts a 111.11% line with premiums skipped — the explorer reads that override per account rather than asserting the ladder as universal. On mainnet Dolomite is in practice WLFI Markets — USD1 and WLFI dominate the book — and the pages state what is there without editorialising. Liquidations carry four named legs each, and the two that tell the story are valued at the core's own oracle price read back at the block the seizure fired in, beside the liquidation spread the core set for that exact pair of markets at that same block — the engine sizes every seizure from that constant, so the realized premium landing on it is the check that the arithmetic shown is the arithmetic the engine ran.
A Liquity V2 fork minting ebUSD across five collateral branches — each Trove's collateral and debt read straight from events, no modeled state
The branches side by side — each one's own oracle price, size, TCR and rate span, and a link per branch into the listing sorted by rate, which is that branch's redemption queue.
Instadapp's vault positions as NFTs — composite deposit/borrow events chain-read, tick-swept liquidations attributed per position from the vault's own settlement views
Debt-token units by design — each vault's oracle prices the collateral in the vault's debt token (the exact space its liquidation engine judges in); Fluid runs no USD feed
Every vault's own borrow, liquidation and absorption ladder — three rungs on one axis, with each vault's own penalty floor beside them.
Fluid prices each vault's collateral in its debt token — the vault oracle quotes debt-per-col, the exact quantity the liquidation engine judges, and the protocol has no USD feed. Positions, ratios and liquidation prices are stated in the vault's own token pair rather than converted through a feed the protocol doesn't use. Smart-vault legs hold Fluid DEX pool shares, and the protocol view resolves them into the tokens they are made of — the pool states its own per-share composition, which is a fact about what the shares ARE, not a price. Their liquidations still stay amounts-only: the DEX resolver that answers this at the head has no bytecode at the blocks those liquidations fired in, so nothing on chain can say what a share was made of back then. Liquidations sweep price-band ticks and name no position — the timeline's per-position impacts are the vault's own settlement math read at the boundary blocks, valued at the vault's own oracle read at that same block. Each token-pair vault's realized premium is shown against that vault's own liquidation penalty, read from the block it fired in — a floor the engine guarantees rather than a figure it targets. The two are computed independently, so a sweep landing on its vault's constant is the check that the price is the one the engine used; one landing above it simply cleared on better terms than the minimum, and is shown as it happened.
Oracle-free ZCHF minting positions — each a contract of its own, owner-declared liquidation prices tested by two-phase challenge auctions, everything in native units
Oracle-free by design — the liquidation price is owner-declared and enforced by challenge auctions; no USD feed exists anywhere in the protocol
Oracle-free by design — the liquidation price is owner-declared and enforced by challenge auctions; no USD feed exists anywhere in the protocol
The oracle-free system's balance sheet — ZCHF supply, the reserve's two accounts read as the contract's own identity, the Leadrate, and the challenge-auction enforcement record.
Frankencoin has no oracle anywhere — the system's one price is the liquidation price each position's owner declares, and the protocol keeps it honest with a two-phase challenge auction: anyone who thinks a declared price is too high posts collateral against it, and the auction's outcome, averted or succeeded, is the protocol's own judgment. So the explorer states everything in native units — debt in ZCHF, collateral in the position's own token — with no dollar figure and no health factor, because neither exists on chain. Two facts of the design shape what a page can say. Collateral can arrive by direct ERC-20 transfer, which emits nothing on the position, so where the event ledger never spoke the live chain read carries the true balance and the card says so. And a veto does different things by version — V1's deny pins the position's cooldown forever, V2's closes it outright and leaves it indistinguishable at head from an ordinary close — so DENIED is served from the indexed event record, the only place it survives.
Leveraged xPOSITIONs on wstETH and WBTC — every event chain-read, current state settled from the pool's own views, socialized funding reconciled explicitly
The tick ladders read off the pools' own tick storage, with tick debt shares reconciled integer-exact against the pool totals.
f(x) socializes funding, rebalances and liquidations across whole ticks without emitting per-position events. The explorer reads exact current state from the pool's own views, reconciles the socialized share explicitly, and replays tick lineage to place each tick rebalance on the timelines it touched — but those amounts are the whole tick's clear: no log states a single position's slice.
The original interest-free Trove — ETH collateral and exact LUSD debt emitted per event, no modeled state
The system's own state — TCR against the recovery line, the Stability Pool's depth against system debt, the shared base rate, and how deep the redemption queue currently is. The queue is the Trove listing sorted by ratio, and the view links there.
Curve's LLAMMA lending — isolated markets where liquidation is a band, not a line: soft-liquidation read live from the protocol's own state, cross-checked across two contracts
Every market's own amplification and band geometry, judged in the token it borrows.
LlamaLend's liquidation is a band, not a line: collateral sits in the market's AMM across a range of prices, and as the oracle falls through it the AMM converts collateral to the borrowed token continuously — soft-liquidation is a state a position lives in, not an event that happens to it. So the explorer reads it as state: the converted amount comes from the protocol's own user_state and is cross-checked wei-exact against a second contract's answer (get_sum_xy), and the band edges are re-derived from the deployed contracts' own integer math rather than approximated. Two consequences of the design shape the record. A partial hard-liquidation emits no after-state — the deployed controller logs nothing on that path — so the row reads the position's state at its block. And a hard liquidation seizes both legs of the AMM holding, the remaining collateral and the crvUSD it had already converted — two different numbers, stated separately, with the same-tx debt repayment pre-claimed so it never double-counts as the borrower's own repay. Most markets borrow crvUSD; the four that borrow WETH, tBTC, ynETH or CRV stay in that token's units.
Vaults read straight from the chain — every value traceable, no modeled state
The Vat's balance sheet decomposed by ilk — Vat.debt = Σ(Art × rate) + vice asserted live, with every ilk on the terms governance set for it.
Listed: every CdpManager vault, every LockStake urn that has ever borrowed, and the urns opened directly on the Vat that are one holder's vault — urn handlers of other CDP managers, single-owner contracts and a wallet — each shown with the urn as its owner. Left out: pure staking urns, which carry no debt; the Allocator, PSM and RWA singletons and Yield v1's pooled Treasury, which hold no one person's position; and direct urns already empty when that list was drawn on 27 September 2026.
Institutional credit pools, the lender's on-chain side — exact share balances, the withdrawal queue, and what is liquid now vs deployed to off-chain-custodied loans
USDC and USDT amounts are shown in the token, with no dollar price: Maple's own USDC price is a fixed $1 set by its governance, and it states none for USDT
A Maple lender has no liquidation surface — borrower defaults resolve at off-chain custodians, and the on-chain trace is the delegate's impairment bookkeeping (unrealizedLosses), which socializes through the exit rate rather than seizing from any lender. Chain-proven: the exit price takes a share count and no address, so under an impairment every holder's claim drops by exactly its pro-rata slice — there is no per-lender term for a loss to be aimed at
Both syrup pools' liquid/deployed split and queue coverability against liquid cash.
Maple's share price is on-chain bookkeeping of an off-chain loan book: the chain proves what the contracts recorded — principal deployed, a posted interest rate, the delegate's impairment marks — not that the loans' custodied collateral (BitGo/Copper/Anchorage/Hex Trust, tri-party) exists. Impairments are a delegate judgment posted on-chain, and withdrawals travel a delegate-operated queue. The explorer shows what a lender actually reaches: the liquid buffer versus the deployed book, live, with the caveat on every receipt.
Isolated lending markets replayed from events — positions reconstructed with zero modeled state
Prices are in the market's loan token — each market's oracle quotes the collateral in it — so the loan token has no price of its own; Morpho Blue has no USD oracle
Every Blue market grouped by the token it measures in, each carrying the single immutable loan-to-value that is its whole risk surface.
Each Morpho Blue market measures everything in one token: the loan token it was created with (USDC, for example). Debt is simply a count of that token, and the market's own oracle prices the collateral in it too — the protocol never states a dollar value anywhere. So the explorer doesn't either: showing USD would add an assumption the contracts never make, that the loan token itself is worth $1. Two more limits are the protocol's rather than the roadmap's. Blue keeps no market-wide collateral total — collateral is per-position state, so a market's loan-to-value is a fact about each borrower and not about the market, and there is no such figure to plot; what a market can state about its own shape is how much of what was supplied is currently borrowed. And a market's totals are its last-settled balance rather than its balance now: Blue accrues interest only when someone touches a market, so a market left alone carries the figures from the block it was last touched, and the explorer shows them as they are stored with the current rate beside them. Projecting them forward would be the explorer's arithmetic rather than the protocol's record, and on markets untouched for months at rates the adaptive curve has driven into the hundreds of percent, that arithmetic is the loudest number on the page.
Peer-to-peer fixed-term loans read straight from events — each loan's collateral, credit and terms traceable, no modeled state
Terms are fixed at origination — no health factor or floating rate to read
No protocol oracle — the two parties set the price
No protocol oracle — the two parties set the price
Loans default at expiry and the lender claims the collateral — nothing is liquidated
The loan book — the outcome record, the open book by soonest deadline, what secures the loans and what they owe per token.
PWN loans are peer-to-peer on fixed terms: the parties set the price, so there is no protocol oracle, no health factor, and no liquidation — an expired loan defaults and the lender claims the collateral. Those surfaces aren't missing; they don't exist in the protocol. The listing covers loans struck through PWN's SimpleLoan contracts on Ethereum; the loan book's header names the contract versions it holds and how many loans each.
Every sUSDS holder on Ethereum — the balance, its worth in USDS and the interest earned to the wei, replayed from the token's logs and checked against the contract
Sky has no price oracle for USDS, so amounts show in USDS and their dollar value goes through the LitePSM, Sky's USDS–USDC swap: one USDS is 1 ÷ (1 + exit fee) USDC, and the fee has been zero for the whole life of sUSDS. Lifetime flows count USDC as one dollar; the home page's value held prices it at the Aave V3 oracle.
Nobody in the savings module holds a loan, so there is no threshold to breach and no liquidation to trace
The Savings Rate over the whole life of sUSDS — every change governance made, each at the block that made it, drawn as steps.
A Sky Savings position is an address holding sUSDS, the share token of Sky's savings module. The share count changes only on a deposit, a withdrawal or a transfer, and what each share redeems for rises at the Savings Rate. Every figure is replayed from the token's Deposit, Withdraw and Transfer logs and stated at one sealed block, and a check every six hours compares the replay with the contract for every holder; the page states no figure until that check has passed. Interest earned is exact in USDS: what the position is worth, plus what left, less what came in. Four holders are left out of the listing and still open by address: Morpho Blue, whose sUSDS is collateral in Morpho positions, and Sky's bridge escrows for Arbitrum One, Base and OP Mainnet, whose shares back sUSDS on those chains. The home page's value held leaves out those four and the pools whose sUSDS another explorer counts: SparkLend's sUSDS reserve (spsUSDS), Asymmetry's sUSDS pool and the AMMs of LlamaLend's sUSDS markets.
Every vault the V3 factories made rather than the endorsed shortlist, each one's totals, share price and endorsement read from chain at one block
72 distinct assets across the roster and no per-asset feed to value them against, so every figure stays in the vault's own asset and no two assets are ever added together
Nobody in a vault holds a loan — there is no threshold to breach and nothing to seize, so there is no liquidation to trace
Every vault the five V3 factories made — the endorsed and the rest alike — grouped by the token each takes, with its totals, share price and endorsement read from the contracts at one block the page names.
A Yearn V3 vault takes one token and issues shares against it; nobody in it borrows, so there is no threshold to breach and no liquidation to trace. The roster is every vault the five V3 factories made, found from each factory's creation logs and censused at a block the page names — a floor, because a vault deployed by hand, without a factory, emits no creation log and appears on no list. At the census block those vaults take 72 different tokens, with no per-asset feed to value them against, so every figure stays in its vault's asset and no two tokens are ever added together. A holder's timeline replays every share transfer the vault emitted about that address, swept from the vault's logs on every request, and checks it wei-exact against the balance the vault reports before drawing anything — a mismatch means no rows rather than a wrong one. There's no USD, APY or yield figure — just the flows and share prices as they happened.
Multi-spoke lending with unified liquidity across asset classes
Prices at the block — all but three PT-USDe rows and 47 USDG rows on two reserves the catalog does not list yet, which carry no price at their block — 50 of 70,904
Aave's own vault layer — savings GHO, Umbrella stake tokens and static aTokens, each vault's totals and share price read from chain at one block, and every address that holds one
Oracle USD — a vault share has no protocol oracle to value it — the one priced figure is the census's, the balance through the vault's own convertToAssets and the chain's Aave V3 oracle on the ASSET at that block
Liquidation forensics — nobody in a vault holds a loan — there is no threshold to breach and nothing to seize, so there is no liquidation to trace
Self-repaying loans against a yield-bearing vault token — each position's debt and collateral stated with the grade and the block they were settled at, and the line-wide redemptions that moved them
Oracle USD — the asset underneath by design: the Alchemist values collateral as vault shares at the vault's share price, and counts each synthetic as one unit of the asset underneath. Alchemix runs no USD feed
Prices at the block — all but Transmuter positions and V2 accounts, whose cards state amounts in the synthetic or in vault shares with no share price read at the block
Liquidation forensics — the liquidation card is built, but no Alchemix V3 position on Ethereum has been liquidated, so there is nothing yet to show or verify against
A Liquity V2 fork minting USDaf across seven collateral branches — each Trove's collateral and debt read straight from events, no modeled state
Liquidation forensics — the liquidation lane is built, but Asymmetry has never had a liquidation — 287 troves, none ever fired — so there is nothing yet to show or verify against
The original cToken markets replayed over six years — every account's supplies, borrows and liquidations from the contracts' own events, with the markets themselves read live at /compound-v2/markets
Solo-fork margin accounts at the contract's own (owner, account number) grain — balances replayed from emitted absolutes, debt as negative balances, the account's own margin line read live including the LST/ETH override
Instadapp's vault positions as NFTs — composite deposit/borrow events chain-read, tick-swept liquidations attributed per position from the vault's own settlement views
Oracle USD — debt-token units by design — each vault's oracle prices the collateral in the vault's debt token (the exact space its liquidation engine judges in); Fluid runs no USD feed
Oracle-free ZCHF minting positions — each a contract of its own, owner-declared liquidation prices tested by two-phase challenge auctions, everything in native units
Oracle USD — oracle-free by design — the liquidation price is owner-declared and enforced by challenge auctions; no USD feed exists anywhere in the protocol
Prices at the block — oracle-free by design — the liquidation price is owner-declared and enforced by challenge auctions; no USD feed exists anywhere in the protocol
Leveraged xPOSITIONs on wstETH and WBTC — every event chain-read, current state settled from the pool's own views, socialized funding reconciled explicitly
Curve's LLAMMA lending — isolated markets where liquidation is a band, not a line: soft-liquidation read live from the protocol's own state, cross-checked across two contracts
Institutional credit pools, the lender's on-chain side — exact share balances, the withdrawal queue, and what is liquid now vs deployed to off-chain-custodied loans
Oracle USD — USDC and USDT amounts are shown in the token, with no dollar price: Maple's own USDC price is a fixed $1 set by its governance, and it states none for USDT
Liquidation forensics — a Maple lender has no liquidation surface — borrower defaults resolve at off-chain custodians, and the on-chain trace is the delegate's impairment bookkeeping (unrealizedLosses), which socializes through the exit rate rather than seizing from any lender. Chain-proven: the exit price takes a share count and no address, so under an impairment every holder's claim drops by exactly its pro-rata slice — there is no per-lender term for a loss to be aimed at
Isolated lending markets replayed from events — positions reconstructed with zero modeled state
Oracle USD — prices are in the market's loan token — each market's oracle quotes the collateral in it — so the loan token has no price of its own; Morpho Blue has no USD oracle
Every sUSDS holder on Ethereum — the balance, its worth in USDS and the interest earned to the wei, replayed from the token's logs and checked against the contract
Oracle USD — Sky has no price oracle for USDS, so amounts show in USDS and their dollar value goes through the LitePSM, Sky's USDS–USDC swap: one USDS is 1 ÷ (1 + exit fee) USDC, and the fee has been zero for the whole life of sUSDS. Lifetime flows count USDC as one dollar; the home page's value held prices it at the Aave V3 oracle.
Liquidation forensics — nobody in the savings module holds a loan, so there is no threshold to breach and no liquidation to trace
Every vault the V3 factories made rather than the endorsed shortlist, each one's totals, share price and endorsement read from chain at one block
Oracle USD — 72 distinct assets across the roster and no per-asset feed to value them against, so every figure stays in the vault's own asset and no two assets are ever added together
Liquidation forensics — nobody in a vault holds a loan — there is no threshold to breach and nothing to seize, so there is no liquidation to trace
In every explorer
Every position, not just yours — browse all open positions in the protocol, search any wallet
Read-only by design — no wallet connection, no signatures, no permissions; works when the official frontend doesn't
Full position history — every action as a card: what happened, what it changed, what it cost in gas, linked to the transaction
No modeled state — every number replayed from the protocol's own on-chain events, nothing estimated or interpolated
Provenance on every figure — open a receipt showing exactly which contract event or storage read produced a number
Live — follows the chain head, updated as blocks land
Lifetime economics — the position's flows over its whole life, interest split from principal where the flows reconcile
Saved wallets — pin wallets and positions across explorers