DOCS
DoomWare is infrastructure: observation, normalization, measurement, confidence, verdict, data freshness. Nothing below is a prediction. Every number the engine prints comes from the formulas on this page with the inputs printed next to it.
PIPELINE
One request runs the same nine steps for the scanner, the inspector, the compare table and the API. A step that cannot read prints UNAVAILABLE and the fields it feeds stay null; the verdict never fills a gap with a guess.
- 01Validate addresszod · 0x + 20 bytes
- 02Detect chaineth_getCode on every registered chain (or the requested one)
- 03Query RPCbytecode size · EIP-1967 / EIP-1822 slots · owner()
- 04Token metadatadecimals · symbol · name · totalSupply (Multicall3, bytes32 fallback)
- 05Pool informationevery registered factory × fee tier · live state at one block
- 06Liquidity metricsUSD reference · depth ladder simulated with each venue’s own math
- 07Holder concentrationexplorer holder list classified vs discovered pools · balanceOf(pools, burn)
- 08Observable market stateindexer: reference price · 24h volume · pool age
- 09Structured outputscores · confidence · verdict · calculations · trace
DATA SOURCES PER NETWORK
| Network | Venues (registered factories) | Quote tokens | Explorer | Indexer | Verification |
|---|---|---|---|---|---|
| Ethereum · 1 | Uniswap V3 · Uniswap V2 | USDC · USDT · WETH | Blockscout | GeckoTerminal | Blockscout + Sourcify |
| Robinhood Chain · 4663 | Uniswap V3 · Uniswap V2 · Pons curve | USDG · WETH | Blockscout | GeckoTerminal | Blockscout + Sourcify |
| Base · 8453 | Uniswap V3 · Uniswap V2 | USDC · WETH | Blockscout | GeckoTerminal | Blockscout + Sourcify |
| Arbitrum One · 42161 | Uniswap V3 · Uniswap V2 | USDC · WETH | Blockscout | GeckoTerminal | Blockscout + Sourcify |
| Solana | Provider contract declared in lib/providers/solana.ts, not wired. Never selectable, never returns data. | ||||
RPC reads are the only inputs to the verdict’s liquidity terms. Explorer and indexer values are labelled INDEXED wherever they appear; they feed concentration (holders), the agreement factor of price confidence (reference price) and the informational fields (volume, pool age). When an explorer refuses server-side callers, the scanner reads the holder list from your browser and labels it — the API verdict at that block excludes it.
FORMULAS
LIQUIDITY SCORE = 60 × min(1, log10(1 + liquidityUsd) / 6) + 25 × (1 − min(1, impact$1k / 5%)) + 15 × (1 − min(1, impact$10k / 10%))
CONCENTRATION SCORE = 100 × clamp(0.6 × topHolder% / 50% + 0.4 × top10% / 90%, 0, 1) — measured on circulating supply (pools and burn addresses excluded)
PRICE CONFIDENCE = 0.35 × min(1, liquidityUsd / $250,000) + 0.25 × (1 − min(1, impact$1k / 5%)) + 0.2 × venue + 0.2 × agreement; venue = 1 when the deepest pool comes from a registered factory and answered a live read, agreement = 1 − min(1, |onChain − indexer| / onChain / 10%) (0.5 when no indexer price)
RELIABILITY SCORE = 40 × (1 − min(1, observationAgeSec / 600)) + 30 × (resolvedFields / 6) + 30 × priceConfidence
FRESHNESS = now − blockTimestamp: FRESH < 30s, AGING < 120s, STALE ≥ 600s (UNKNOWN when the block carries no timestamp)
- 1.UNKNOWN — no live pool from a registered factory, no USD reference for its quote token, or the $1,000 reference simulation was unavailable.
- 2.CONCENTRATED — top circulating holder ≥ 30% or top-10 ≥ 80% (pools and burn addresses excluded).
- 3.UNSTABLE — price confidence < 0.5, indexer/on-chain price disagreement > 15%, or the reference size only partially fills.
- 4.THIN — quote-side liquidity < $50,000 or impact at $1,000 > 1%.
- 5.LIQUID — liquidity ≥ $250,000 and impact at $10,000 ≤ 1%.
- 6.HEALTHY — everything else: liquidity ≥ $50,000 and impact at the reference size within 1%.
THRESHOLDS
- ▲ It does not predict prices, signal trades or rate “smart money”. A verdict is a description of measurable state at one block.
- ▲ It does not fabricate. When a source is unavailable the field is null and the screen prints DATA SOURCE UNAVAILABLE.
- ▲ It does not sign. The wallet button is read-only (EIP-6963) and exists only to point a scan at your own address.
- ▲ The live feed is per instance. On serverless hosts two requests may hit two instances; the feed lists what this instance observed.
- ▲ Holder rows come from the first explorer page (up to 50). Concentration is measured on circulating supply — total minus pool and burn balances — and treats every non-pool account the same (a treasury counts as a holder).
- ▲ Pool age and 24h volume come from an indexer and are informational; they never feed the verdict.