URD ATLAS
StatusTrack RecordThresholdsGlossaryFAQAPI DocsMethodology
Account
ChainsStatusTrack RecordThresholdsGlossaryFAQAPI DocsMethodology
Account
© 2026 Urd Atlas.
AboutTermsPrivacy
No price data · No forecasts · No recommendations
Chain analysis
◼

L2

STABLE

Stable regime: Demand Normal; Friction Normal; Capacity Balanced.

View historyMethodology →Glossary →
Key metrics
as of 2026-05-22
Confidence0.856Good
Observed lag8d
Demand
Normal
40
Friction
Normal
54
Capacity
Balanced
50
Hash23c97a76408b
Latest 7-day Brief
Briefs →

Base remained STABLE-dominant across the latest 7 published days, with STABLE persisting for 7 consecutive days.

Window
2026-05-16 → 2026-05-22
Dominant
STABLE · 7/7 days
Brief confidence
0.840 avg 7d
Volatility
low
Chain profile
More →

Base is an Ethereum Layer 2 built on the OP Stack, so its operating state depends on both local L2 activity and L1 security publication costs.

Base differs from ETH mainnet because a user transaction typically contains both an L2 execution cost and an L1 security / publication cost. That makes fee interpretation more two-dimensional than on a standalone L1.

What to watch

Same two-part fee environment as Arbitrum: local execution + L1 publishing cost. Watch tx_count_daily and median_tx_fee_native. A lag of ~7d is part of the expected publication cadence. Low local demand does not guarantee low total fee if L1 conditions worsen.

Brief driver

demand: normal stable

Why users care

Users care whether Base is heating or congested because apparent cheapness can still change quickly when L1 posting cost rises or when local demand begins to absorb available L2 block capacity.

Profile details

How L2 behaves

More →

Base is an Ethereum Layer 2 built on the OP Stack, so its operating state depends on both local L2 activity and L1 security publication costs.

Base differs from ETH mainnet because a user transaction typically contains both an L2 execution cost and an L1 security / publication cost. That makes fee interpretation more two-dimensional than on a standalone L1.

Primary drivers

Demand is primarily read from tx_count_daily and unique_active_addresses.

Friction is read from median_tx_fee_native and failed_tx_rate where published.

Capacity is read from capacity_util_pct and block-time behaviour.

Caveats

Low local demand does not guarantee low total fee if parent-chain conditions worsen.

Chart 1

median_tx_fee_native

Median transaction fee in native units is a direct friction indicator: it helps show how costly transacting currently looks on this chain.

Units: wei
30d90d180d

L2 chain profile

Why this chain is interpreted the way it is on this page.
×
Basic

This is an Ethereum-style L2. The chain is interpreted through usage, fee behavior, and execution tightness, but the readings must also be understood in the context of a rollup-style network rather than a base-layer chain.

In plain language: throughput may look strong while fees stay moderate, or fees may change for reasons that are specific to the L2 environment. That is why the site explains each metric separately instead of assuming one universal meaning.

Advanced

Arbitrum and Base are handled as L2 profiles, not as miniature copies of ETH L1. Their fee stack has both local execution semantics and parent-chain settlement/security cost, so a simple “high fees means the chain is constrained” interpretation is often too naive. A visible fee move on an L2 can reflect some combination of local execution demand and parent-chain posting cost rather than one single bottleneck.

The product therefore uses a profile layer to suppress L1-only signals where they would be misleading and to privilege the metrics that remain stable and interpretable on an L2. In practice, the page is asking: is the rollup currently carrying unusual demand, unusual fee burden, or unusual tightness relative to its own recent history? It is not claiming that L2 and L1 values are directly fungible.

The advanced reader should think of the L2 page as a constrained descriptive mapping under a chain-specific semantic contract. The model preserves comparability at the regime/state level while explicitly limiting comparability at the raw-metric level.

Traceability
  • Chain: base
  • Profile label: L2

Why this reading order is recommended

×
Basic

The recommended reading order is simple: first check freshness and confidence, then read the regime label, then open the scorecard and drivers, and only after that use the charts to put the current reading into visible historical context.

The point is to stop the user from jumping straight to line movement without first knowing whether the row is fresh and how strongly supported the current label is.

Advanced

This reading order mirrors the structure of the published data contract. Freshness and confidence are gating variables; regime is the compressed state output; scorecard is the axis-level decomposition; drivers are the ranked evidence rows; charts are the time-series visualization layer. In methodological terms, the page is arranged from contract-level validity checks to semantic compression to granular evidence.

The advanced reason for this order is to avoid a common analytical error: over-weighting the visual salience of a recent line move before establishing whether the visible row is timely, publish-eligible, and semantically well-supported. The charts contextualize the state; they do not define it.

Traceability
  • Freshness: confidence.lag_days_vs_utc_today
  • Confidence: confidence.confidence_score
  • Regime: status.label

What regime means

Current label: STABLE
×
Basic

Regime is the page’s top-line descriptive state. It is meant to answer one fast question: what does the chain currently look like relative to its own recent history?

Heating means the chain looks hotter than its own recent baseline. That usually means stronger activity pressure, tighter conditions, or both, but it does not automatically mean the chain is fully constrained.

The regime is useful because it gives the user a fast summary before diving into the scorecard, drivers, and charts.

Advanced

The browser does not infer regime. It reads the canonical published label from meta.status.label, where the upstream pipeline has already combined axis conditions, chain profile rules, and the confidence gate. In other words, the visible label is an audited output of the meta layer, not a UI heuristic.

The regime vocabulary is a finite state set: STABLE, HEATING, CONGESTED, CHEAP, and UNKNOWN/DEGRADED. These states are meant to compress the chain’s location in a three-axis space defined by Demand, Friction, and Capacity, with the final label then constrained by publish-confidence eligibility. The confidence threshold is therefore part of the state machine: if confidence is below the canonical gate, the UI must treat the row as UNKNOWN/DEGRADED even when the raw axis pattern might otherwise resemble a named state.

The correct technical interpretation is: regime is a deterministic classification over the published meta payload, not a probability of future returns and not a recommendation class. The current label STABLE is a descriptive compression of the present chain state conditional on methodology version, chain profile, window, and confidence gate.

Traceability

What confidence means

Band: Good
×
Basic

Confidence is the product’s evidence-strength score for the current published label. It does not tell you what will happen next. It tells you how well-supported the current descriptive reading is by the available published evidence.

Higher confidence means the label rests on fuller and more internally consistent support. Lower confidence means the page is warning you not to over-read the label.

The visible band is Good. In the current row, the published confidence is 0.856.

Advanced

Confidence is a published meta-layer quantity in confidence.confidence_score. The UI never rebuilds it. It is used in two roles at once: first as an evidentiary score for how strongly the current descriptive row is supported, and second as a governance gate for whether the visible regime may remain a named state or must degrade to UNKNOWN/DEGRADED under the canonical threshold contract.

In the patched meta files, confidence is conceptually a synthesis of row usability and label support. The payload may expose component views such as data_quality_score and label_confidence_score; in the current row they are 1.000 and 0.733. The key question confidence answers is: “given the currently published row, how much descriptive weight should be placed on the label?”.

Technically, this is not a confidence interval, not a posterior probability, and not a forecast probability. It is a bounded support score on [0,1]. The current product contract uses a hard publish gate at 0.40: values below that threshold force degraded semantics, while values above it permit named states. The UI bands (Good / Caution / Degraded) are presentation tiers layered on top of the scalar. They do not replace the underlying number.

What data as-of means

×
Basic

“Data as of” tells you the latest chain-level date behind the visible state. It is one of the first things to check before interpreting any label or chart.

In plain language: before asking “what does the chain look like?”, first ask “how fresh is the row I am looking at?”. The current visible as-of date is 2026-05-22.

Advanced

As-of is the temporal anchor of the visible row. The page surfaces the latest published date from the canonical meta bundle; it does not infer freshness from chart endpoints or browser time. In a reproducible system, every descriptive statement must be traceable to a concrete observation date, and as-of is that date-level binding.

The advanced reason this matters is that a regime label is only meaningful conditional on its information set. A label computed on one date and viewed later may be equally well-defined, but it is not equally current. This is why the product separates temporal recency (as-of and lag) from evidentiary support (confidence): they answer different questions and should not be collapsed into one omnibus quality number.

In practice, as-of is the date to use when reconciling the visible page against dataset manifests, daily published files, and any downstream audit. If a reader cannot pin the visible state to a concrete observation date, the state is not operationally traceable.

Traceability
  • Visible date: 2026-05-22
  • Hero path: landing/base/hero.json

What observed lag means

×
Basic

Observed lag tells you how many days behind today this chain currently is. Lag is shown separately from confidence so “old” is not confused with “weakly supported”.

The current observed lag is 7d.

Advanced

Lag is an operational freshness statistic measured in days from the latest published observation to “today” in the product’s UTC framing. It is not a reliability score and not a confidence penalty by itself. A low-lag row may still be weakly supported; a higher-lag row may still be internally coherent. The UI separates these concepts because conflating them would hide whether the issue is timeliness or evidentiary strength.

Formally, lag answers a scheduling question: how far is the visible row behind the current calendar? It should be read relative to the chain’s publish-lag policy, not in isolation. For BTC/ETH a 1-day lag is normal; for Base/Arbitrum a materially larger expected lag is part of the product contract. So the advanced user should interpret lag as a deviation from chain-specific publication cadence, not as a universal freshness threshold.

The reason lag belongs on the page is auditability. It makes it explicit whether the state is operationally current enough for the user’s purpose. It does not tell you that the label is wrong; it tells you whether the label is temporally up to date.

Traceability
  • Field: confidence.lag_days_vs_utc_today
  • Value: 7d

What determinism means

×
Basic

Determinism is the page’s reproducibility handle. It tells a technical reader that the visible state belongs to a stable published calculation context, not to a hidden browser-side reinterpretation.

The hash is a compact identity for that published context. The window-days value shows which time window the canonical reading belongs to.

Advanced

regime.determinism_hash is published for auditability: it is a hash over the input data and parameter context used to produce the regime/meta output. The UI does not derive it. Its presence is a reproducibility guarantee that the visible classification is tied to a specific upstream computational state rather than to local browser logic.

In a deterministic publishing pipeline, identical inputs under identical parameters should generate identical outputs. The hash is therefore not a user-facing score; it is a compact fingerprint of computational identity. If the hash changes while the displayed date, chain, and methodology context appear unchanged, a technical reader immediately knows that some relevant input or parameterization changed upstream.

The accompanying window-days field matters because regime and scorecard are windowed objects. A 7-day classification and a 30-day classification can be equally deterministic yet refer to different state definitions. So the proper advanced reading is the tuple (methodology version, chain profile, window, determinism hash), not the hash alone. Current hash: 23c97a76408b. Current window: 7.

Traceability
  • Hash: 23c97a76408b
  • Window: 7
365d
median_tx_fee_nativeFriction

Median transaction fee in native units — the direct cost of transacting; the main friction indicator.

Units: wei
Current signal
MA7 +15.0% above MA30
Daily raw value
MA7 — 7-day moving average
MA30 — 30-day trend baseline
Preparing chart…
Reading this at 30d: Fee spikes at 30 days are often short congestion events. If MA7 spikes and then falls back toward MA30 within a week, the event was transient. If MA7 stays elevated above MA30 across multiple weeks, friction is genuinely building.
MA: derived/base/last30d.json · Raw: gold/base/last30d.json · Window: 2026-04-23 → 2026-05-22 (30 calendar days)
How to readMore →

Use raw for day-to-day movement, MA7 for short smoothing, MA30 for broader baseline.

Why shownMore →

Core friction signal - the most direct cost indicator available for this chain.

How to read median_tx_fee_native

Window 30d · Units wei
×
Basic

Read the raw line for day-to-day movement, MA7 for short smoothing, and MA30 for the broader recent baseline.

On a 30d view, very short swings often matter less than the direction and shape of MA30. Units for this chart are wei.

Advanced

The chart is a layered time-series object built from raw gold observations plus derived smoothing overlays. By contract, __ma7 and __ma30 are arithmetic means over the last 7 and 30 non-null days in the derived layer. That means the two moving averages are descriptive smoothers, not forecasting models. Their job is to suppress noise and expose local versus broader trend structure.

The advanced way to read the panel is relationally, not pointwise. Compare four things: raw volatility amplitude, whether MA7 is above or below MA30, the slope of MA30, and where the current endpoint sits inside the visible historical range. A large raw spike with flat MA30 usually means short-lived disturbance; a persistent MA30 slope change is stronger evidence of regime-relevant drift.

For median_tx_fee_native, the selected window is 30 days and the native unit is wei. Because the series stays in native units, cross-metric comparisons should be shape-based rather than level-based unless the units are directly comparable. The chart is therefore best used to study persistence, relative elevation, and transition timing—not to infer standardized magnitude by eye.

Traceability
  • MA: derived/base/last30d.json
  • Raw: gold/base/last30d.json
  • Metric: median_tx_fee_native

Why median_tx_fee_native is shown

×
Basic

The median transaction fee shows what a typical user was paying to transact in the chain's own native units. Fees are one of the most immediate ways users feel changes in network pressure - they rise when demand competes with available block space or gas.

It is shown because fee level is the most direct cost signal available for judging the current operating state.

Advanced

median_tx_fee_native is a friction-axis input. On BTC it is the primary friction anchor because there is no equivalent to gas-utilisation or failed-tx rate. On EVM chains it feeds fee_burden_proxy(median_fee / median_tx_value) alongside failed_tx_rate. The median is used rather than mean to reduce outlier sensitivity.

Traceability
  • Metric: median_tx_fee_native
  • Axis: friction
Chart 2

unique_active_addresses

This metric is shown because it currently helps explain the chain’s descriptive reading.

Units: addresses
30d90d180d365d
unique_active_addressesDemand

Unique addresses active per day — measures the breadth of network participation.

Units: addresses
Current signal
MA7 +6.1% above MA30
Daily raw value
MA7 — 7-day moving average
MA30 — 30-day trend baseline
Preparing chart…
Reading this at 30d: Sudden surges in active addresses often reflect protocol events or airdrops. A sustained MA7 rise above MA30 that holds for two weeks is a more credible signal.
MA: derived/base/last30d.json · Raw: gold/base/last30d.json · Window: 2026-04-23 → 2026-05-22 (30 calendar days)
How to readMore →

Use raw for day-to-day movement, MA7 for short smoothing, MA30 for broader baseline.

Why shownMore →

Breadth signal - shows whether current activity is broad or concentrated.

How to read unique_active_addresses

Window 30d · Units addresses
×
Basic

Read the raw line for day-to-day movement, MA7 for short smoothing, and MA30 for the broader recent baseline.

On a 30d view, very short swings often matter less than the direction and shape of MA30. Units for this chart are addresses.

Advanced

The chart is a layered time-series object built from raw gold observations plus derived smoothing overlays. By contract, __ma7 and __ma30 are arithmetic means over the last 7 and 30 non-null days in the derived layer. That means the two moving averages are descriptive smoothers, not forecasting models. Their job is to suppress noise and expose local versus broader trend structure.

The advanced way to read the panel is relationally, not pointwise. Compare four things: raw volatility amplitude, whether MA7 is above or below MA30, the slope of MA30, and where the current endpoint sits inside the visible historical range. A large raw spike with flat MA30 usually means short-lived disturbance; a persistent MA30 slope change is stronger evidence of regime-relevant drift.

For unique_active_addresses, the selected window is 30 days and the native unit is addresses. Because the series stays in native units, cross-metric comparisons should be shape-based rather than level-based unless the units are directly comparable. The chart is therefore best used to study persistence, relative elevation, and transition timing—not to infer standardized magnitude by eye.

Traceability

Why unique_active_addresses is shown

×
Basic

Active addresses show whether current activity is broad or concentrated. A chain can have high transaction count driven by a few heavy users, or the same count spread across many participants - and those two situations have different implications for how durable the current state looks.

It is shown to give the participation-breadth context that raw transaction count alone cannot provide.

Advanced

unique_active_addresses is a demand-axis complement totx_count_daily. The derivedtx_per_user ratio (tx_count / active_addresses) is also used in the scorecard as a third demand component where available. The address field has known limitations on Bitcoin (UTXO reuse) and is sometimes null on L2s.

Traceability
  • Metric: unique_active_addresses
  • Axis: demand
Chart 3

tx_count_daily

This metric is shown because it currently helps explain the chain’s descriptive reading.

Units: transactions per day
30d90d180d365d
tx_count_dailyDemand

Confirmed transactions per day — the primary demand signal on any chain.

Units: transactions per day
Current signal
MA7 +10.3% above MA30
Daily raw value
MA7 — 7-day moving average
MA30 — 30-day trend baseline
Preparing chart…
Reading this at 30d: At 30 days you are reading short-term pulses. A rising MA7 crossing above a flat MA30 is a potential signal, but only significant if MA7 stays elevated for more than a few days. A single-day spike that reverts is noise, not a regime shift.
MA: derived/base/last30d.json · Raw: gold/base/last30d.json · Window: 2026-04-23 → 2026-05-22 (30 calendar days)
How to readMore →

Use raw for day-to-day movement, MA7 for short smoothing, MA30 for broader baseline.

Why shownMore →

Primary demand signal - shows how much block-space usage the chain is currently carrying.

How to read tx_count_daily

Window 30d · Units transactions per day
×
Basic

Read the raw line for day-to-day movement, MA7 for short smoothing, and MA30 for the broader recent baseline.

On a 30d view, very short swings often matter less than the direction and shape of MA30. Units for this chart are transactions per day.

Advanced

The chart is a layered time-series object built from raw gold observations plus derived smoothing overlays. By contract, __ma7 and __ma30 are arithmetic means over the last 7 and 30 non-null days in the derived layer. That means the two moving averages are descriptive smoothers, not forecasting models. Their job is to suppress noise and expose local versus broader trend structure.

The advanced way to read the panel is relationally, not pointwise. Compare four things: raw volatility amplitude, whether MA7 is above or below MA30, the slope of MA30, and where the current endpoint sits inside the visible historical range. A large raw spike with flat MA30 usually means short-lived disturbance; a persistent MA30 slope change is stronger evidence of regime-relevant drift.

For tx_count_daily, the selected window is 30 days and the native unit is transactions per day. Because the series stays in native units, cross-metric comparisons should be shape-based rather than level-based unless the units are directly comparable. The chart is therefore best used to study persistence, relative elevation, and transition timing—not to infer standardized magnitude by eye.

Traceability

Why tx_count_daily is shown

×
Basic

Transaction count shows how much real execution demand the chain is currently carrying. On EVM chains it reflects not just transfers but smart contract interactions, which means it is a broader activity signal than on Bitcoin.

It is shown because it is the most direct available signal of current network usage breadth.

Advanced

tx_count_daily feeds the demand axis alongsideunique_active_addresses. It is log-normalised before z-score computation. On EVM chains it should be read together withgas_utilization_pct and failed_tx_rateto distinguish high-volume-but-unconstrained from high-volume-plus-capacity-pressure.

Traceability
  • Metric: tx_count_daily
  • Axis: demand
Chart 4

avg_block_time_sec

Average time between blocks is a timing and pacing proxy. It helps the user judge whether the chain currently looks smooth, slow, or constrained in block production terms.

Units: seconds
30d90d180d365d
avg_block_time_secCapacity

Average time between blocks in seconds — measures chain pacing and throughput capacity.

Units: seconds
Current signal
MA7 ≈ MA30
Daily raw value
MA7 — 7-day moving average
MA30 — 30-day trend baseline
Preparing chart…
Reading this at 30d: Bitcoin targets ~600 seconds per block. A persistent trend above 600s over 30 days suggests hash rate decline; below 600s suggests hash rate growth.
MA: derived/base/last30d.json · Raw: gold/base/last30d.json · Window: 2026-04-23 → 2026-05-22 (30 calendar days)
How to readMore →

Use raw for day-to-day movement, MA7 for short smoothing, MA30 for broader baseline.

Why shownMore →

Capacity proxy - block timing deviation signals whether production is smooth or erratic.

How to read avg_block_time_sec

Window 30d · Units seconds
×
Basic

Read the raw line for day-to-day movement, MA7 for short smoothing, and MA30 for the broader recent baseline.

On a 30d view, very short swings often matter less than the direction and shape of MA30. Units for this chart are seconds.

Advanced

The chart is a layered time-series object built from raw gold observations plus derived smoothing overlays. By contract, __ma7 and __ma30 are arithmetic means over the last 7 and 30 non-null days in the derived layer. That means the two moving averages are descriptive smoothers, not forecasting models. Their job is to suppress noise and expose local versus broader trend structure.

The advanced way to read the panel is relationally, not pointwise. Compare four things: raw volatility amplitude, whether MA7 is above or below MA30, the slope of MA30, and where the current endpoint sits inside the visible historical range. A large raw spike with flat MA30 usually means short-lived disturbance; a persistent MA30 slope change is stronger evidence of regime-relevant drift.

For avg_block_time_sec, the selected window is 30 days and the native unit is seconds. Because the series stays in native units, cross-metric comparisons should be shape-based rather than level-based unless the units are directly comparable. The chart is therefore best used to study persistence, relative elevation, and transition timing—not to infer standardized magnitude by eye.

Traceability
  • MA:

Why avg_block_time_sec is shown

×
Basic

Average block time shows how long the network is taking to produce blocks. Persistent changes in block timing can signal changes in mining competition (Bitcoin) or validator conditions - and erratic timing is often a sign of operating stress.

On this chain, block time supplements the gas and fee signals by showing whether block production itself is running smoothly or erratically.

Advanced

avg_block_time_secis used in the capacity axis. It is not read as a simple "higher is worse" signal - instead the pipeline derives ablocktime_instabilityproxy that measures deviation from the chain's own rolling median. This makes it a stability signal rather than a raw speed signal, which is more informative across different chain architectures.

Traceability
  • Metric: avg_block_time_sec
  • Axis: —
Deeper decomposition

Scorecard

The scorecard breaks the present state into Demand, Friction, and Capacity. This is where to go when the top-line label feels too compressed or too blunt.

Scores are 0–100. 50 is neutral vs the chain's own history. Higher Demand means hotter usage; higher Friction means higher cost/failure; higher Capacity means tighter capacity pressure. Low confidence pulls scores toward 50. Scorecard components are profile-aware and aligned with regime classification.

Demand
NormalMore →
40DEMANDNormal
40/ 100
Coverage: 1.000 · Effective conf: 0.856

What Demand means

Source scorecard.dimensions.demand · Level Normal
×
Basic

Demand describes usage pressure: how much on-chain activity the chain currently seems to be carrying relative to its own recent history.

“Normal” means normal versus this chain’s own recent baseline, not normal versus every chain in crypto.

The current published score is 40/100.

Advanced

Demand is an axis-level score derived from demand-side metrics after they have already been normalized into a comparable signal space upstream. Per the product contract, each scorecard dimension is a published scalar on [0,100], with the canonical mapping defined as score = 50 + 40 * tanh(z / 1.5), where z is the combined dimension signal. This tanh map preserves sign and ordering while compressing extremes so one unusual metric does not explode the gauge.

The second step is confidence-aware shrinkage toward neutral. The spec explicitly states that the mapped score is degraded back toward 50 according to effective support. So the visible score says both where Demand currently sits versus recent history and how strongly that placement is supported by available evidence. A modest visible value can therefore sit on top of a stronger raw z-signal if coverage or confidence is weak.

The auxiliary fields matter mathematically: coverage_factor is a 0–1 completeness term for expected evidence on the axis, while effective_confidence is the confidence-adjusted support term used to avoid over-asserting noisy partial evidence. In the current row, coverage is 1.000 and effective confidence is 0.856.

Traceability
  • Source: meta/base/latest.json
  • Coverage: 1.000
  • Effective confidence: 0.856
Friction
NormalMore →
54FRICTIONNormal
54/ 100
Coverage: 1.000 · Effective conf: 0.856

What Friction means

Source scorecard.dimensions.friction · Level Normal
×
Basic

Friction describes cost, execution difficulty, or tightness-of-use: how expensive or hard the chain currently looks relative to itself.

A chain can be busy without looking especially costly, and it can look costly without looking maximally busy. That is why Friction is separated from Demand.

The current published score is 54/100.

Advanced

Friction uses the same bounded-score contract as the other axes, but the upstream inputs are chosen from metrics that speak to cost burden, execution tightness, or failure/fee strain rather than raw usage volume. On EVM-style chains this often leans on fee and execution semantics; on BTC-style profiles it leans more heavily on fee and pacing proxies. The result is still mapped through the same tanh-based score transform so the three axes remain visually comparable without pretending they arise from identical raw variables.

Advanced users should read Friction as an interpretable compressed statistic rather than a latent variable estimated by a factor model. It is a deterministic published summary of how tight or costly use currently looks relative to recent chain history. The banding to Low/Normal/High is thresholding of the mapped score, not a separate classifier.

Capacity
BalancedMore →
50CAPACITYBalanced
50/ 100
Coverage: 0.000 · Effective conf: 0.000

What Capacity means

Source scorecard.dimensions.capacity · Level Balanced
×
Basic

Capacity describes how constrained or unconstrained the chain currently looks relative to its own recent baseline.

“Balanced” means balanced versus the chain’s own recent history, not some universal network-capacity standard.

The current published score is 50/100.

Advanced

Capacity answers a different question from Demand. Demand asks how much use is showing up; Capacity asks whether the chain looks roomy, balanced, or tight while carrying that use. The upstream evidence is therefore profile-dependent: Ethereum-like chains can use utilization fields such as block fullness, while Bitcoin-like chains need timing and throughput proxies because they do not expose gas-utilization semantics.

The published score again follows the canonical bounded transform 50 + 40 * tanh(z / 1.5), then degrades toward 50 according to effective support. So a Capacity score near 50 should be read as “close to recent baseline after support adjustment”, not as an absolute engineering statement that the network is half full. The score is explicitly chain-relative.

Evidence layer

Drivers

Drivers are the “because” behind the visible regime. They show which published metrics are currently doing the most work in explaining the present state.

friction

median_tx_fee_native

HEATING
Z robustMore →
0.65
90d percentileMore →
78.3%
Momentum 7d vs 30dMore →
0.280
Current valueMore →
7.84366361338e-7
Why median_tx_fee_native is shownMore →

This row is being used as visible evidence for the current descriptive state.

Source: meta/base/latest.json → regime.drivers[]

Robust z-score for median_tx_fee_native

×
Basic

Robust z-score tells you how unusual the current reading looks relative to the metric’s own recent typical range.

Larger absolute values mean the metric stands out more strongly. The current value is 0.65.

Advanced

z_robust is a robust standardized distance. The governing spec defines it as 0.6745 * (x - median) / MAD, where MAD is the median absolute deviation. If MAD = 0, the pipeline falls back to a standard z-score; if that fallback standard deviation is also 0, the value falls back to 0. This differs materially from a plain mean/std z-score because the median/MAD form is less dominated by extreme outliers.

Interpretation: sign gives direction versus the recent center; magnitude gives unusualness versus the recent robust spread. A value around 0 means near recent center; larger absolute values mean farther from what has recently been typical. Because it is standardized, z_robust is useful for ranking unlike metrics on a common evidence scale even when they live in completely different native units.

The caveat is that z_robust is still a local statistic, not a structural model. It tells you how unusual the current reading is under the recent distributional context. It does not tell you causality, persistence probability, or future path.

Traceability
Field: regime.drivers[].z_robust

90-day percentile for median_tx_fee_native

×
Basic

90-day percentile tells you where today’s reading sits inside the recent 90-day range.

High percentile means near the top of recent observations; low percentile means near the bottom. The current value is 78.3%.

Advanced

pct_90d is a 90-day percentile-rank statistic. The spec defines it as the percentile rank of the current value relative to the last 90 days, with a minimum of 30 data points required. Statistically, percentile is a positional measure, not a distance measure: it tells you where the current observation sits in the ordered recent sample, not how many dispersion units away it is from the center.

That distinction matters. A percentile of 90 means the current value is above roughly 90% of the recent sample, but it does not tell you whether it is only slightly above the 89th percentile or dramatically above it. That is why percentile and z_robust are shown together: percentile gives rank-in-range; z_robust gives standardized unusualness.

Advanced readers should use percentile as an order-statistic view of state location inside the recent empirical distribution. It is especially useful when distributions are skewed or when raw units are hard to compare visually across metrics.

Traceability
Field: regime.drivers[].pct_90d

Momentum for median_tx_fee_native

×
Basic

Momentum (7d vs 30d) compares the short-term signal with the broader recent baseline.

Positive values mean the short-term level is running above the longer recent trend; negative values mean it is running below it. The current value is 0.280.

Advanced

momentum_7d_vs_30d is defined in the product spec as z_robust(mean_7d) - z_robust(mean_30d). So it is not a raw-return calculation and not a percentage slope. It is a difference between two robustly standardized local means: one short-horizon (7d), one broader-horizon (30d).

The sign therefore indicates short-versus-broader acceleration. Positive values mean the recent 7-day state is stronger/hotter than the broader 30-day baseline in standardized terms; negative values mean the short-horizon state is cooler/weaker than the broader baseline. This gives the user a direction-of-drift statistic that complements level and rank statistics.

The correct technical reading is dynamic, not static: percentile and z_robust tell you where the metric is, while momentum tells you whether the short window is currently pulling away from or falling back toward the broader local baseline.

Traceability
Field: regime.drivers[].momentum_7d_vs_30d

Current value for median_tx_fee_native

×
Basic

Current value is the visible latest raw reading for this metric in its native units.

It is useful because it shows the actual level behind the summaries and classifications.

Advanced

The current raw value is the direct latest observation carried into the driver row, shown in native units with no frontend normalization. It exists for auditability: it lets the reader tie the standardized summaries back to an actual quantity measured on the chain.

Technically, this number should never be read alone when comparing across metrics. Raw level, percentile, z_robust, and momentum answer different statistical questions. The raw value says what the latest observed level is; percentile says where that level sits inside the recent ordered sample; z_robust says how unusual it is relative to robust spread; momentum says whether the short horizon is strengthening or weakening relative to the broader local baseline.

In other words, current value is the anchor that keeps the driver row empirically grounded, while the other columns provide standardized context around that anchor.

Traceability
Field: regime.drivers[].current

Why median_tx_fee_native is shown

Axis friction · Trend HEATING
×
Basic

The median transaction fee shows what a typical user was paying to transact in the chain's own native units. Fees are one of the most immediate ways users feel changes in network pressure - they rise when demand competes with available block space or gas.

It is shown because fee level is the most direct cost signal available for judging the current operating state.

Advanced

median_tx_fee_native is a friction-axis input. On BTC it is the primary friction anchor because there is no equivalent to gas-utilisation or failed-tx rate. On EVM chains it feeds fee_burden_proxy(median_fee / median_tx_value) alongside failed_tx_rate. The median is used rather than mean to reduce outlier sensitivity.

Traceability
  • Source: meta/base/latest.json
  • Metric: median_tx_fee_native
demand

unique_active_addresses

FLAT
Z robustMore →
0.26
90d percentileMore →
60.6%
Momentum 7d vs 30dMore →
-0.129
Current valueMore →
551774
Why unique_active_addresses is shownMore →

This row is being used as visible evidence for the current descriptive state.

Source: meta/base/latest.json → regime.drivers[]

Robust z-score for unique_active_addresses

demand

tx_count_daily

HEATING
Z robustMore →
0.10
90d percentileMore →
78.3%
Momentum 7d vs 30dMore →
0.381
Current valueMore →
9226424
Why tx_count_daily is shownMore →

This row is being used as visible evidence for the current descriptive state.

Source: meta/base/latest.json → regime.drivers[]

Robust z-score for tx_count_daily

×
Data contract & traceability
Data source: local
Meta: meta/base/latest.json
Gold: gold/base/last30d.json
Derived: derived/base/last30d.json
Briefs: briefs/chains/base/latest.json
Runtime chart points use observed published dates inside the selected window.
Want the JSON behind these charts?

Every label here is backed by a determinism hash and a full confidence score. A subscription gives you API access to the complete Gold, Derived, Meta, and Briefs JSON layers.

Sign up freeSee plans
  • Source: meta/base/latest.json
  • Field: status.label

The correct advanced reading is to treat confidence as a model-governance and interpretability control. High confidence means the row is more complete and the current classification is more internally coherent; low confidence means either coverage or support is weak enough that the label should be read defensively. It is deliberately orthogonal to freshness: a row may be recent but poorly supported, or older but still structurally coherent.

Traceability
  • Source: meta/base/latest.json
  • Score: 0.856
  • MA: derived/base/last30d.json
  • Raw: gold/base/last30d.json
  • Metric: unique_active_addresses
  • MA: derived/base/last30d.json
  • Raw: gold/base/last30d.json
  • Metric: tx_count_daily
  • derived/base/last30d.json
  • Raw: gold/base/last30d.json
  • Metric: avg_block_time_sec
  • As with Demand, the visible score is modulated by support. Coverage remains 1.000 and effective confidence remains 0.856. If these are low, the score is deliberately shrunk toward the neutral center so the UI does not over-interpret weak or partially missing cost evidence.

    Traceability
    • Source: meta/base/latest.json
    • Coverage: 1.000
    • Effective confidence: 0.856

    In the current row, coverage is 0.000 and effective confidence is 0.000. These terms matter because capacity evidence is often the most chain-semantic-sensitive axis: on BTC it is proxy-based, on L2s it is architecture-specific, and on EVM L1 it can be read more directly from utilization. The confidence-aware shrinkage is what keeps those differences from being presented with false precision.

    Traceability
    • Source: meta/base/latest.json
    • Coverage: 0.000
    • Effective confidence: 0.000
    ×
    Basic

    Robust z-score tells you how unusual the current reading looks relative to the metric’s own recent typical range.

    Larger absolute values mean the metric stands out more strongly. The current value is 0.26.

    Advanced

    z_robust is a robust standardized distance. The governing spec defines it as 0.6745 * (x - median) / MAD, where MAD is the median absolute deviation. If MAD = 0, the pipeline falls back to a standard z-score; if that fallback standard deviation is also 0, the value falls back to 0. This differs materially from a plain mean/std z-score because the median/MAD form is less dominated by extreme outliers.

    Interpretation: sign gives direction versus the recent center; magnitude gives unusualness versus the recent robust spread. A value around 0 means near recent center; larger absolute values mean farther from what has recently been typical. Because it is standardized, z_robust is useful for ranking unlike metrics on a common evidence scale even when they live in completely different native units.

    The caveat is that z_robust is still a local statistic, not a structural model. It tells you how unusual the current reading is under the recent distributional context. It does not tell you causality, persistence probability, or future path.

    Traceability
    Field: regime.drivers[].z_robust

    90-day percentile for unique_active_addresses

    ×
    Basic

    90-day percentile tells you where today’s reading sits inside the recent 90-day range.

    High percentile means near the top of recent observations; low percentile means near the bottom. The current value is 60.6%.

    Advanced

    pct_90d is a 90-day percentile-rank statistic. The spec defines it as the percentile rank of the current value relative to the last 90 days, with a minimum of 30 data points required. Statistically, percentile is a positional measure, not a distance measure: it tells you where the current observation sits in the ordered recent sample, not how many dispersion units away it is from the center.

    That distinction matters. A percentile of 90 means the current value is above roughly 90% of the recent sample, but it does not tell you whether it is only slightly above the 89th percentile or dramatically above it. That is why percentile and z_robust are shown together: percentile gives rank-in-range; z_robust gives standardized unusualness.

    Advanced readers should use percentile as an order-statistic view of state location inside the recent empirical distribution. It is especially useful when distributions are skewed or when raw units are hard to compare visually across metrics.

    Traceability
    Field: regime.drivers[].pct_90d

    Momentum for unique_active_addresses

    ×
    Basic

    Momentum (7d vs 30d) compares the short-term signal with the broader recent baseline.

    Positive values mean the short-term level is running above the longer recent trend; negative values mean it is running below it. The current value is -0.129.

    Advanced

    momentum_7d_vs_30d is defined in the product spec as z_robust(mean_7d) - z_robust(mean_30d). So it is not a raw-return calculation and not a percentage slope. It is a difference between two robustly standardized local means: one short-horizon (7d), one broader-horizon (30d).

    The sign therefore indicates short-versus-broader acceleration. Positive values mean the recent 7-day state is stronger/hotter than the broader 30-day baseline in standardized terms; negative values mean the short-horizon state is cooler/weaker than the broader baseline. This gives the user a direction-of-drift statistic that complements level and rank statistics.

    The correct technical reading is dynamic, not static: percentile and z_robust tell you where the metric is, while momentum tells you whether the short window is currently pulling away from or falling back toward the broader local baseline.

    Traceability
    Field: regime.drivers[].momentum_7d_vs_30d

    Current value for unique_active_addresses

    ×
    Basic

    Current value is the visible latest raw reading for this metric in its native units.

    It is useful because it shows the actual level behind the summaries and classifications.

    Advanced

    The current raw value is the direct latest observation carried into the driver row, shown in native units with no frontend normalization. It exists for auditability: it lets the reader tie the standardized summaries back to an actual quantity measured on the chain.

    Technically, this number should never be read alone when comparing across metrics. Raw level, percentile, z_robust, and momentum answer different statistical questions. The raw value says what the latest observed level is; percentile says where that level sits inside the recent ordered sample; z_robust says how unusual it is relative to robust spread; momentum says whether the short horizon is strengthening or weakening relative to the broader local baseline.

    In other words, current value is the anchor that keeps the driver row empirically grounded, while the other columns provide standardized context around that anchor.

    Traceability
    Field: regime.drivers[].current

    Why unique_active_addresses is shown

    Axis demand · Trend FLAT
    ×
    Basic

    Active addresses show whether current activity is broad or concentrated. A chain can have high transaction count driven by a few heavy users, or the same count spread across many participants - and those two situations have different implications for how durable the current state looks.

    It is shown to give the participation-breadth context that raw transaction count alone cannot provide.

    Advanced

    unique_active_addresses is a demand-axis complement totx_count_daily. The derivedtx_per_user ratio (tx_count / active_addresses) is also used in the scorecard as a third demand component where available. The address field has known limitations on Bitcoin (UTXO reuse) and is sometimes null on L2s.

    Traceability
    • Source: meta/base/latest.json
    • Metric: unique_active_addresses
    Basic

    Robust z-score tells you how unusual the current reading looks relative to the metric’s own recent typical range.

    Larger absolute values mean the metric stands out more strongly. The current value is 0.10.

    Advanced

    z_robust is a robust standardized distance. The governing spec defines it as 0.6745 * (x - median) / MAD, where MAD is the median absolute deviation. If MAD = 0, the pipeline falls back to a standard z-score; if that fallback standard deviation is also 0, the value falls back to 0. This differs materially from a plain mean/std z-score because the median/MAD form is less dominated by extreme outliers.

    Interpretation: sign gives direction versus the recent center; magnitude gives unusualness versus the recent robust spread. A value around 0 means near recent center; larger absolute values mean farther from what has recently been typical. Because it is standardized, z_robust is useful for ranking unlike metrics on a common evidence scale even when they live in completely different native units.

    The caveat is that z_robust is still a local statistic, not a structural model. It tells you how unusual the current reading is under the recent distributional context. It does not tell you causality, persistence probability, or future path.

    Traceability
    Field: regime.drivers[].z_robust

    90-day percentile for tx_count_daily

    ×
    Basic

    90-day percentile tells you where today’s reading sits inside the recent 90-day range.

    High percentile means near the top of recent observations; low percentile means near the bottom. The current value is 78.3%.

    Advanced

    pct_90d is a 90-day percentile-rank statistic. The spec defines it as the percentile rank of the current value relative to the last 90 days, with a minimum of 30 data points required. Statistically, percentile is a positional measure, not a distance measure: it tells you where the current observation sits in the ordered recent sample, not how many dispersion units away it is from the center.

    That distinction matters. A percentile of 90 means the current value is above roughly 90% of the recent sample, but it does not tell you whether it is only slightly above the 89th percentile or dramatically above it. That is why percentile and z_robust are shown together: percentile gives rank-in-range; z_robust gives standardized unusualness.

    Advanced readers should use percentile as an order-statistic view of state location inside the recent empirical distribution. It is especially useful when distributions are skewed or when raw units are hard to compare visually across metrics.

    Traceability
    Field: regime.drivers[].pct_90d

    Momentum for tx_count_daily

    ×
    Basic

    Momentum (7d vs 30d) compares the short-term signal with the broader recent baseline.

    Positive values mean the short-term level is running above the longer recent trend; negative values mean it is running below it. The current value is 0.381.

    Advanced

    momentum_7d_vs_30d is defined in the product spec as z_robust(mean_7d) - z_robust(mean_30d). So it is not a raw-return calculation and not a percentage slope. It is a difference between two robustly standardized local means: one short-horizon (7d), one broader-horizon (30d).

    The sign therefore indicates short-versus-broader acceleration. Positive values mean the recent 7-day state is stronger/hotter than the broader 30-day baseline in standardized terms; negative values mean the short-horizon state is cooler/weaker than the broader baseline. This gives the user a direction-of-drift statistic that complements level and rank statistics.

    The correct technical reading is dynamic, not static: percentile and z_robust tell you where the metric is, while momentum tells you whether the short window is currently pulling away from or falling back toward the broader local baseline.

    Traceability
    Field: regime.drivers[].momentum_7d_vs_30d

    Current value for tx_count_daily

    ×
    Basic

    Current value is the visible latest raw reading for this metric in its native units.

    It is useful because it shows the actual level behind the summaries and classifications.

    Advanced

    The current raw value is the direct latest observation carried into the driver row, shown in native units with no frontend normalization. It exists for auditability: it lets the reader tie the standardized summaries back to an actual quantity measured on the chain.

    Technically, this number should never be read alone when comparing across metrics. Raw level, percentile, z_robust, and momentum answer different statistical questions. The raw value says what the latest observed level is; percentile says where that level sits inside the recent ordered sample; z_robust says how unusual it is relative to robust spread; momentum says whether the short horizon is strengthening or weakening relative to the broader local baseline.

    In other words, current value is the anchor that keeps the driver row empirically grounded, while the other columns provide standardized context around that anchor.

    Traceability
    Field: regime.drivers[].current

    Why tx_count_daily is shown

    Axis demand · Trend HEATING
    ×
    Basic

    Transaction count shows how much real execution demand the chain is currently carrying. On EVM chains it reflects not just transfers but smart contract interactions, which means it is a broader activity signal than on Bitcoin.

    It is shown because it is the most direct available signal of current network usage breadth.

    Advanced

    tx_count_daily feeds the demand axis alongsideunique_active_addresses. It is log-normalised before z-score computation. On EVM chains it should be read together withgas_utilization_pct and failed_tx_rateto distinguish high-volume-but-unconstrained from high-volume-plus-capacity-pressure.

    Traceability
    • Source: meta/base/latest.json
    • Metric: tx_count_daily