Two metadata entries are maintained outside the tracked public stablecoin set for historical PSI and depeg continuity:
ust-terrairon-iron-finance
They live in shared/lib/shadow-stablecoins.ts and are intentionally separated from the tracked stablecoin registry (shared/lib/stablecoins/index.ts, backed by shared/data/stablecoins/*.json).
Purpose
Shadow stablecoins preserve historically important collapse events in systems that would otherwise undercount past systemic stress after an asset is delisted from the public dashboard.
They are used where historical continuity matters:
shared/lib/psi-eligible.tscombinesTRACKED_STABLECOINS+SHADOW_STABLECOINSintoPSI_ELIGIBLE_STABLECOINSworker/src/cron/detect-depegs.tsandworker/src/cron/compute-dews.tsuse the PSI-eligible setworker/src/cron/stability-index.tsfilters the live cache againstPSI_ELIGIBLE_IDSworker/src/cron/snapshot-supply.tsandworker/src/api/backfill-supply-history.tsuse the PSI-eligible registryworker/src/api/backfill-cg-prices.tsalso needs the PSI-eligible registry so replay-critical shadow price gaps can be repairedworker/src/api/backfill-depegs.tscan backfill shadow assets the same way it backfills tracked assetsshared/lib/stablecoin-id-registry.tsincludes shadow entries in canonical ID resolution
Current Inventory
ust-terra
llamaId: "3"detailProvider: "defillama"geckoId: "terrausd"- Included in the live DefiLlama-ID registry path via
REGISTRY_BY_LLAMA_ID - Historical PSI replay and live PSI depeg grouping also canonicalize legacy
ust-terra-classicdepeg rows ontoust-terraso shadow supply history and collapse-era depegs join back together
iron-iron-finance
- No DefiLlama stablecoin ID
detailProvider: "coingecko"geckoId: "iron-stablecoin"- Exists mainly for registry/backfill/history continuity; the source file notes that supply history needs manual DB insertion for the peak-collapse period
Public UI Boundary
Shadow stablecoins are not part of the public tracked-set metadata used for dashboard counts, filters, and table inclusion:
ACTIVE_STABLECOINS.lengthdrives public counts in page metadata and copyACTIVE_IDSis the default inclusion set used bysrc/components/stablecoin-table-logic.ts, and filtered table subsets are built fromACTIVE_STABLECOINS- taxonomy/filter pages derive their selectable universe from tracked metadata, not shadow metadata
Operational consequence:
- raw cache-backed surfaces can still contain a shadow asset if the upstream sync emits it
- public list/table UX filters those assets back out by tracked ID
Gotchas
- Do not add a shadow asset to
shared/data/stablecoins/*.jsonunless it should become publicly tracked everywhere - Do not remove a shadow asset without checking PSI, depeg backfill, and supply-history continuity first
- If a shadow asset gains a reliable live source, update both
shared/lib/shadow-stablecoins.tsand the paths that depend onPSI_ELIGIBLE_STABLECOINS
File Index
| File | Role |
|---|---|
shared/lib/shadow-stablecoins.ts | Shadow-asset metadata definitions |
shared/lib/psi-eligible.ts | Tracked + shadow PSI eligibility registry |
shared/lib/stablecoin-id-registry.ts | Canonical ID / external-ID resolution including shadow entries |
worker/src/cron/stability-index.ts | PSI computation uses PSI_ELIGIBLE_IDS |
worker/src/cron/detect-depegs.ts | Live depeg detection metadata boundary |
worker/src/cron/compute-dews.ts | DEWS iteration over PSI-eligible assets |
worker/src/cron/snapshot-supply.ts | Daily supply snapshot filter includes PSI-eligible assets |
worker/src/api/backfill-supply-history.ts | Admin supply-history backfill over PSI-eligible assets |
worker/src/api/backfill-cg-prices.ts | Admin historical price-fill over PSI-eligible assets, including shadows |
worker/src/api/backfill-depegs.ts | Admin depeg-history backfill over PSI-eligible assets |