---
name: chain-ecosystem-gap-analysis
description: Use when surveying a chain's protocols, gaps, or build PMF.
---

> Oracle native tools: `oracle_cli` (read/prepare), `vault_status`, `signer_status`, `signer_execute` (needs human confirmationNonce), `skill_load`. No generic shell. No fleet SSH.


# Chain ecosystem and gap analysis

Use when the question is about a **chain's whole landscape** rather than one contract or
one trade: "what DeFi is on X", "what's the top TVL", "what's missing", "is there PMF for
building Y here". For single-contract verification use `evm-contract-research`; for
routing one trade use `oracle-desk`.

The deliverable is a **decision**, not a protocol catalog. Most of the work is separating
real capital from double-counted, rented, or fake-wide numbers, and then trying hard to
disprove whatever build thesis emerges.

## Step 1 — Chain-level totals from live APIs

Pull these in parallel; each answers a different question.

| Source | Endpoint | Answers |
|---|---|---|
| DefiLlama chains | `api.llama.fi/v2/chains` | headline chain TVL |
| DefiLlama protocols | `api.llama.fi/protocols` (~8MB) | every protocol + `chainTvls` |
| DefiLlama DEX overview | `api.llama.fi/overview/dexs/<Chain>` | volume, per-DEX and daily series |
| DefiLlama fees | `api.llama.fi/overview/fees/<Chain>` | **real willingness to pay** |
| Stablecoins | `stablecoins.llama.fi/stablecoinchains` | idle capital sitting on chain |

Filter the 8MB protocol list **in Python**, never print it raw. Match chains by scanning
each protocol's `chainTvls` for a key starting with the chain name, excluding the
`-borrowed` / `-staking` / `-pool2` suffixed keys.

Use the **URL-encoded display name** (`Robinhood%20Chain`), not a slug. Slugs return
`Upgrade to the paid API plan`, which is a naming error, not a paywall — the
derivatives-by-chain breakdown genuinely is paywalled, so report perps as TVL-only.

**Fees are the strongest single signal.** TVL can be farmed and volume can be washed;
fees are money users chose to hand over. A five-week-old chain doing $1.5M/day in fees is
telling you something TVL cannot.

## Step 2 — Correct the four ways TVL lies

Do this before quoting any number to the user.

1. **Curator double-counting.** Sum-of-protocols will exceed chain TVL. On RH 4663 the
   parts summed to $784M against a $422M chain. The gap was Steakhouse Financial
   ($331M, "Risk Curators") sitting *on top of* Morpho Blue's $318M — the same deposits
   counted twice. DefiLlama does **not** always set the `doublecounted` flag. Treat
   `Risk Curators`, `Liquidity Manager`, and `Onchain Capital Allocator` as re-counts of
   an underlying venue, and reconcile sum-of-parts against the headline explicitly.
2. **Category counts that are one incumbent.** "30 DEXes" was Uniswap at 92.6% and 27
   others splitting $5.3M. "19 launchpads" was one at 98%. Always report the top-2
   concentration share next to any category total.
3. **Single-chain ≠ native.** Split protocols by `len(chains) == 1`. On RH, 52 protocols
   were single-chain but two perp venues held 92% of that TVL; every other "native"
   project combined was ~$2.7M. This is the difference between a real builder scene and
   a wall of forks.
4. **Rented vs sticky capital.** Query the dominant protocol's own API for market-level
   detail. Uniform high LLTV plus ~90% utilization across a few stablecoin collaterals is
   a **leveraged carry loop**, not organic demand — capital that leaves when an external
   yield compresses.

## Step 3 — Separate the supply side from the borrow side

The single highest-value check, and the one that overturned a wrong conclusion this
session. Concentration on one side says nothing about the other.

On RH Morpho: **47,060 depositors**, median position $7,506, top-1 only 3.5%, and steakUSDG
holders (46,856) ≈ USDG holders (46,828) — meaning essentially everyone holding the
stablecoin had it in the vault. Every large holder was a `SemiModularAccount7702` contract,
i.e. an EIP-7702 smart account = **the app's own retail wallet**. Meanwhile the borrow side
was 542 positions with top-10 at 68.7% and two addresses holding $103M.

Read: **retail supplies, a handful of whales lever.** Retail deposits are sticky (they are
app users, not yield tourists); the leverage on top is not. Calling the whole stack
"mercenary capital" was wrong.

Method: pull vault positions with pagination (`positions(first:1000, skip:N)`), sort, and
report top-1 / top-5 / top-N shares plus median — then cross-check depositor count against
the underlying token's `holders_count` on the explorer. Identify what the top holders
*are* (`implementations[]` on the address record names the contract).

## Step 4 — Diff categories against mature L2s

Aggregate category → (TVL, protocol count) for the target chain and for Base and Arbitrum,
then bucket: **absent entirely**, **present but dead (<$100k)**, **healthy**.

Two mandatory corrections:
- **Strip false positives.** `CEX` is exchange proof-of-reserve wallets, not deployable
  protocols; it will top any naive diff at >$1B. `Chain` and `Bug Bounty` are bookkeeping
  rows. Exclude them and say why.
- **Rank by concentration, not just size.** A category worth $100M where one protocol holds
  100% is a ~$0 addressable market. A smaller category at 40% top-2 concentration is
  genuinely competitive and a better target.

"Present but dead" is often more informative than "absent" — it means someone tried and
capital declined.

## Step 5 — Try to KILL the thesis before recommending it

This is the part that separates analysis from pitch. **Fetch the incumbent venue's actual
docs and API and attempt to disprove your own idea.**

A worked example from this session. Thesis: equity perps trade 24/7 while the underlying
trades 6.5h/day, so weekend funding should dislocate — build a basis vault.

- The venue's docs stated funding is **locked to a base rate (SOFR + 0.5%) when the
  underlying is dark**, explicitly to remove weekend uncertainty.
- Confirmed live: 20 of 28 RWA perps pinned to the byte-identical hourly rate.
- Confirmed historically: 1,000 hourly points x 41.6 days showed dark-window mean funding
  **below** lit-window on 2 of 3 names, with variance collapsing (stdev 0.85-5.28 dark vs
  7.87-18.20 lit).

The thesis was dead — the venue engineered the gap away by design. **Run a control**:
crypto perps over the identical window varied normally, proving the flatness was a real
regime and not an API artifact. A flat series with no control is indistinguishable from a
broken query.

Also check whether the "gap" is actually **built-and-rejected** rather than unbuilt. Equity
collateral markets existed on Morpho and held $2,789 total against $315M of stablecoin
collateral. That is not a hole to fill; it is a demonstrated capital-side refusal you would
have to overturn. Those are very different difficulty levels and the distinction must reach
the user.

**Salvage the insight, change the instrument.** When a thesis dies, ask what *is* still true.
Weekend volatility was real; only the funding channel was closed. That points at options
(sell the gamma) rather than basis (harvest the funding) — same underlying observation,
different product.

## Step 6 — Report

- Lead with the corrected, de-duplicated picture, not the raw table.
- Show concentration next to every total.
- State confidence separately for **data** (high, from live APIs) and **judgment**
  (usually moderate — a 5-week-old chain cannot distinguish "wave dying" from
  "post-launch normalization").
- Name what would invalidate the read.
- When you were wrong earlier in the session, say so plainly and show the number that
  overturned it. Do not quietly revise.

## Pitfalls

- Trailing-volume trend matters more than the TVL snapshot. TVL at an all-time high while
  volume is down 28% fortnight-over-fortnight is a stablecoin loop growing while users
  leave, not adoption.
- Count only markets with real state. Filter out zero-price / never-launched markets before
  computing venue totals, and mention them separately as a signal.
- A venue can be "an equities exchange" by market count and a crypto exchange by flow. RH's
  Arcus had 34 of 43 markets in RWA but RWA was only 12.9% of volume.
- Aggregate liquidity across many pools hides that most are dust. 226 equity pools, 194
  under $50k. Report the count above a meaningful threshold, not the sum.
- Verify subagent findings independently before folding them into a conclusion — and run a
  control when a result looks suspiciously uniform.

## References

- `references/rh-4663-worked-example.md` — the full Robinhood Chain 4663 pass: corrected
  TVL table, category diff vs Base/Arbitrum, the Morpho depositor-vs-borrower split, the
  killed basis thesis with its control, and the Arcus API endpoint map.
