Blightscan

Verify the organism

Blightscan converts holder distribution and activity into a deterministic biological form. This page defines the quantities and makes the rendering contract explicit.

API contract

Query a checksummed or lowercase ERC-20 address on Robinhood Chain (chain ID 4663):

GET /api/organism/:address

The endpoint returns:

{
  "ok": true,
  "token": { ... },
  "metrics": { ... },
  "raw": { ... },
  "organism": { ... },
  "meta": { ... }
}

The frontend only renders a successful response. Errors remain visible inline and never open blocking browser dialogs.

Metric formulae

MetricDefinitionRange
Vitality35% holders + 25% transfers/24h + 25% liquidity + 15% unique senders/24h. Each input is logarithmically normalised.0–100
Dispersion100 × (1 − Gini(holder balances))0–100
Toxicity100 × (0.6 × top10 share + 0.4 × whale count/20), clamped. A whale owns over 1% of circulating supply.0–100
Growth100 × tanh(((holders now − holders 24h ago) / holders 24h ago) × 5)−100–100
Decay100 × dead addresses / addresses that ever held0–100
Nutrient100 × (liquidity / market cap) / 0.15, clamped.0–100
Health.30V + .25D + .20N + .15(50 + G/2) − .20T − .10X, clamped.0–100

Species bands

HealthSpecies
80–100Flourishing
60–79.99Established
40–59.99Struggling
20–39.99Parasitic
5–19.99Necrotic
0–4.99Extinct

Tokens with fewer than 50 current holders are labelled Too young to classify, regardless of score.

Visual encoding

Determinism

The renderer hashes the lowercase token address with 32-bit FNV-1a and seeds a Mulberry32 pseudo-random number generator. It does not use Math.random(). Given identical address, metrics, and canvas dimensions, branch geometry and particle positions are byte-for-byte identical. Export uses the already rendered Canvas 2D bitmap.

Reproduction checklist

  1. Record the meta block identifier in the response.
  2. Reconstruct positive holder balances through that block from ERC-20 Transfer logs.
  3. Exclude burn balances and calculate the metrics using the formulae above.
  4. Lowercase the token address and feed it, the metrics, and the same dimensions to the renderer.