Methodology
How Blocktivity measures blockchain activity — transaction definitions, data statuses, formulas, and the staleness state machine.
What is this / how to read it
Blocktivity is a public scoreboard that ranks blockchains by on-chain transaction activity — the number of transactions recorded on each chain per day. The goal is simple: show which blockchains record the most transaction activity, updated hourly, with honest data.
A transaction count is not a user count. Bots, automation and arbitrage sign transactions like anyone else, and Blocktivity counts them the same way — it measures recorded activity, not people.
The leaderboard shows every tracked chain ranked by their 7-day average daily transaction count. Each row displays:
- 24h Tx — the total number of transactions recorded in the last 24 hours. If a chain's source stops responding we keep showing the last figure we collected rather than a blank or a zero; the status badge says the data is stale, and expanding the row shows when it was collected
- 7d avg Tx — the sorting metric: the mean of the daily counts we actually hold for the last 7 days. A day we could not collect is left out of the average rather than carried forward or counted as zero, so the divisor shrinks with the total — a chain with only one of the last seven days recorded is ranked on that day alone. A recorded zero is a real zero and is included
- 30d sparkline — a 30-day trend of daily transaction counts
- Status badge — how much confidence we have in the number (see Data statuses)
Expanding a row reveals secondary metrics (X'tivity, Potential), market data, and a full trust block with the data source, transaction definition, and last-update time.
Why Tx is the headline
The previous version of Blocktivity ranked by Operations — a broader count that includes internal protocol actions, system events, and anything the chain itself decides to call an "operation." Operations vary wildly in definition across chains, making cross-chain comparison misleading.
Transactions are the cleaner signal. Every chain has a concept of a user-submitted transaction — the thing a user signs and broadcasts — which makes it a far more consistent starting point than operations. Operations are no longer collected or displayed anywhere on the site: ranking on one metric and showing another invited exactly the cross-chain comparison we just called misleading.
A more consistent starting point is not a single uniform definition, and Blocktivity does not try to impose one. Chains still count transactions differently, and no neutral authority exists to say whose count is correct. So every chain on Blocktivity discloses its exact transaction definition next to its figure, and the reader judges — see the section below.
Transaction definition
Blocktivity does not force chains into a single transaction definition — different chains count differently and that is acceptable. What Blocktivity does require is disclosure. Every listed chain must declare exactly how it counts, using these 7 fields:
| Field | Options | Description |
|---|---|---|
| successful | included / excluded | Are successful transactions counted? |
| failed | included / excluded | Are failed transactions counted? |
| system | included / excluded | Are system/protocol-internal transactions counted? |
| internal | included / excluded / n-a | Are internal (sub-call) transactions counted? Use n-a if the concept does not apply to this chain. |
| batched | as-batch / individually | Are batched transactions counted once (as-batch) or once per inner transaction (individually)? |
| rollup | l2-user-tx / l1-settlement / both / n-a | For rollup chains: which layer is counted? Use n-a for non-rollup chains. |
| window | utc-day / rolling-24h | Counting window: UTC calendar day (00:00–24:00 UTC) or rolling last 24 hours. |
Blocktivity's preferred definition
Successful user-submitted transactions over the last 24 hours, excluding failed and system transactions where possible. This is what we recommend — but not what we mandate. Disclosure is what matters.
Data statuses
Every chain on Blocktivity carries a data-status badge. It tells you how the number was obtained and how much confidence you can place in it. Colour is paired with a text label — colour is never the only signal.
Foundation / official explorer / ecosystem team provides it
Provider exposes block/range endpoints enabling automated checks
Daily numbers given, limited auditability
Blocktivity temporarily uses a public explorer/third-party
Added by Blocktivity to bootstrap, from a source we identified ourselves
Source failed / not updated recently
Challenged or inconsistent
Source broken/invalid/abusive — out of main ranking, coin page remains
Unavailable for 30+ days — historical page only
One state in the staleness table below is deliberately absent from this list: delisted is never a badge. A delisted chain is shown as Hidden, because from a reader's point of view the two mean the same thing — the number is not being ranked and we are not standing behind it.
History coverage
A data status says who the number comes from; coverage says how far back we have it. The two are separate axes, tracked independently.
Activity recorded back to the chain’s genesis, from the same source that reports it live
Activity recorded well before this chain was listed, but not back to genesis
Activity recorded from the day Blocktivity listed this chain
Backfilled history comes from the same endpoint that reports a chain's activity live, so the older numbers use that chain's own definition of a transaction. We do not splice a second provider's series onto ours.
Coverage never affects rank or the credibility gate.
X'tivity & Potential
These are two secondary metrics derived from the primary Tx data, both computed from Transactions. Bitcoin (BTC) is the reference chain: it sits at 1 on both scales.
X'tivity
Transaction activity relative to Bitcoin. Formula:
xtivity = chain_tx_7d_avg / btc_tx_7d_avg
A chain with X'tivity 12 is doing 12× more 7-day-average transactions than Bitcoin. Display format: below 0.01 → <0.01; below 0.1 → 2 decimal places; below 10 → 1 decimal place; 10 and above → whole number. A chain that recorded no transactions at all shows 0 — <0.01 means small, not none.
Potential
Transaction volume per unit of market capitalisation, measured against Bitcoin and then placed on a 1–99 scale. First the raw ratio:
ratio = (chain_tx_7d_avg / chain_mc) / (btc_tx_7d_avg / btc_mc)
That ratio is unbounded — it can reach the millions — so it is compressed onto a bounded score. The curve is asymptotic: 100 is unreachable, and each further point costs progressively more activity per unit of market cap. A ratio of 1,000 scores 50; 10,000 scores 76; 1,000,000 scores 97.
The compression is not a secret, so here it is in full. For a ratio x:
u = e^(-4.568512) × ln(x)^0.843707 × x^0.422384 score = 1 + 99 × u / (1 + u)
Four consequences worth stating outright, because you cannot read them off the examples above:
- The ratio is normalised so that Bitcoin is exactly 1. Ratios below 1 clamp to 1, so Bitcoin is the floor of the scale and any chain carrying more market cap per transaction than Bitcoin sits on that floor with it.
- Scores are floored to a whole number. A displayed 76 is anything from 76.00 to 76.99, so two chains showing the same score are not necessarily equal.
- The curve never reaches 100. That is a property of the function, not a cap applied afterwards.
- Market data is refreshed every collection cycle, and if a refresh fails the last known market cap is used. So a Potential score can be computed against a market cap older than the transaction count beside it. It is null only when we have no market cap for a chain at all, or it is zero.
A high Potential means a chain is doing a lot of transactions relative to its market cap compared to Bitcoin. It is not a forecast and not a verdict: a cheap-fee chain and a chain inflating its count look alike on this scale, which is why the credibility gate is a separate mechanism that never consults it.
These metrics are computed from 7-day average Tx so single-day spikes (which may be anomalous) don't distort them. Potential is a display metric only. It has no bearing on rank and no bearing on the credibility gate — the gate reads market cap and 24-hour volume as floors in their own right, and never the ratio of transactions to market cap that Potential is built from. A chain is never held out of the main table for being cheap to transact on.
Staleness state machine
When a chain's data source stops responding, Blocktivity automatically transitions it through a staleness state machine.
The machine is driven by time alone: only a successful collection moves a chain's clock, so a failed request on its own changes nothing and a chain that has never collected successfully is not staged at all. The times below are therefore approximate in one direction — states are evaluated once a day, on the first collector run of each UTC day, so a chain can sit past a boundary for up to a day before its state actually changes. Boundaries themselves are exact and half-open: at exactly 72 hours a chain is hidden, not stale.
| Time since failure | State | What happens |
|---|---|---|
| 0 – 24 h | warning | Auto-retry on next collector run; data still shown as-is. |
| 24 – 72 h | Stale | Badged as stale everywhere the chain appears; the last collected figure is still shown. |
| 3 – 7 d | Hidden | Out of the leaderboard entirely — the main table and Emerging both; coin page still accessible. |
| 7 – 30 d | delisted | Out of all active leaderboards; restorable by fixing the source. |
| 30 d + | Archived | Historical coin page only; no longer in any active ranking. |
The first state carries no badge: for the first 24 hours a chain's data renders exactly as it always did, because a single missed collection is an ordinary event and not something to warn a reader about. delisted is not a badge either — it is displayed as Hidden.
A chain recovers from any state by fixing its source endpoint, and recovery is immediate — there is no waiting period and no validation window. The next successful collect resets the clock, and the chain's original data-status label comes back on its own: the staleness state never overwrote it.
See also: FAQ for the questions this page answers in formulas, Listing spec for the technical submission spec, About for the full manifesto, and Add Your Chain to submit a listing.