How ethwatch measures Ethereum
This page states, for every figure on the dashboard, where it comes from and what it does not capture. A number without a stated method is not evidence.
Last reviewed 2026-08-28
Evidence by section
- Price — ETH/USD, and the two independent sources we hold it against.
2/2 evidenced - Supply — Total ETH supply and how it has moved since the Merge.
1/1 evidenced - Issuance and burn — What Ethereum mints, what it destroys, and the net of the two.
2/3 evidenced - Gas — L1 base fee and what a transaction actually costs.
0/2 evidenced - Staking — Staked ETH, validator queues, yields and who runs the validators.
4/6 evidenced - Layer 2 — What rollups charge their users and what they pay Ethereum to settle.
2/5 evidenced - Holdings — ETH held by exchanges, spot ETFs and strategic reserves — the least precise section here.
1/3 evidenced - Network — Throughput, DeFi TVL and stablecoin float.
0/2 evidenced
The pipeline
An indexer runs every 15 minutes on a single machine. It reads Ethereum directly over JSON-RPC and pulls a small set of keyless public APIs, writes one snapshot.json, and uploads it to a Cloudflare Worker backed by R2. The dashboard is a static page that fetches that one file.
Nothing is computed in your browser and no backend serves the UI, so what you see is exactly what the indexer recorded, at the time recorded in generatedAt.
The snapshot is public and machine-readable. If you want the data, read it directly rather than scraping this site:
https://ethwatch-snapshot-uploader.sunoj-mings.workers.dev/snapshot.json
Provenance, and why there are no fake zeros
Every section of the snapshot carries a status in meta.provenance, naming its source: live (fetched this run), fallback (the primary source failed and a secondary answered, or the section mixes live and curated figures), or failed (no usable value).
This exists because the failure mode of a dashboard like this one is not an error message — it is a plausible-looking wrong number. A feed that times out must not quietly become a zero that reads as real data. Where a source fails, ethwatch reports the failure and renders an em dash. Check the provenance before quoting anything.
Supply, issuance and burn
Total supply
The sum of execution-layer balances plus beacon-chain balances minus deposits in flight, published by ultrasound.money and cross-checked each run against its own component decomposition.
Issuance per day
Consensus-layer issuance only: the validator reward rate applied to the total effective balance. Effective balance, not actual balance, is the correct base — rewards accrue on effective balance, which is capped per validator.
This deliberately excludes execution-layer priority fees. Those are not issuance: they are transferred from users to proposers, not minted. They are reported separately under staking.
Burn per day
The EIP-1559 base fee destroyed, measured over a full day.
An earlier version computed this on-chain by summing baseFee × gasUsed over a keyless eth_feeHistory window. That window only reaches about three hours, and annualising a quiet three-hour stretch understated the daily burn roughly fourfold. The on-chain computation is still run, but as a cross-check and fallback rather than the headline.
Net issuance
Issuance minus burn. Negative means supply is contracting. The annualised rate divides net issuance by total supply. Because this is the most quoted number on the site, it is reported as unavailable rather than estimated when either input is missing — a burn feed failing must never be allowed to render Ethereum as deflationary.
Staking
Total staked
Actual beacon-chain balances. This differs from the effective balance used for the issuance calculation by a few hundred thousand ETH. Each is used where it belongs; using effective balance as the headline understated total staked.
Entry and exit queues
The two sides are measured in different units, and each is labelled with its own: the entry queue in ETH pending, the exit queue in validators exiting. They are not directly comparable and the dashboard does not present them as if they were.
The entry side has to be ETH. Since EIP-7251 a queue entry is a deposit of arbitrary size rather than a 32 ETH validator, so counting entries is meaningless — a recent queue mixed top-ups of 0.00003 ETH with consolidations above 1,000 ETH in the same list. Counting those as equal units produced an "entry queue" figure that was neither validators nor ETH.
APR
The nominal figure is the consensus-layer APR from Rocket Pool's public payload. The real figure subtracts net supply inflation, which is what a holder's stake is actually diluted by.
Per-provider APRs are live for Lido and Rocket Pool. The remaining provider APRs, and all provider market shares, are curated benchmarks that move slowly — they are labelled as such.
Execution tips
The exact on-chain sum of every transaction's priority fee, gasUsed × (effectiveGasPrice − baseFee), over sampled blocks.
This includes priority-fee MEV but excludes the builder-to-proposer payment made directly in the coinbase transaction, which is an off-chain relay figure. It is therefore a floor on proposer execution revenue, and is labelled "tips", not "tips + MEV".
Layer 2
Transfer cost
The median transaction cost each rollup's users actually pay, from growthepie.
An earlier version multiplied the rollup's own gas price by 21,000. That captures only the rollup's execution gas and omits the L1 data-availability fee that dominates a rollup transaction — it understated Scroll by more than two orders of magnitude — and for zkSync and Starknet the EVM transfer constant does not describe the gas model at all.
Pays L1
What each rollup spends settling to Ethereum, including both calldata/proof costs and EIP-4844 blob costs. Blobs are how rollups post data since Dencun; counting only the non-blob component understated settlement spend by roughly 8–16% depending on the chain.
The daily series is genuinely volatile — single days swing by an order of magnitude — so the headline uses a completed day rather than the partial current one.
Holdings
This is the least precise section on the dashboard, and it is labelled that way in the UI.
Exchange reserves
Summed live on-chain via Multicall3 over published wallet sets, for the exchanges that publish one — Binance's proof-of-reserves endpoint and DefiLlama's address lists.
Coinbase and Kraken do not publish a usable wallet set: their cold storage is unlabelled, and Kraken publishes a reserve ratio rather than a total. Their headline is therefore a curated total, with whatever labelled wallets are known shown separately as an on-chain floor — for Coinbase that floor is a small fraction of the total, so it corroborates very little. Both are marked unverified in the UI. Treat them as estimates, and note that no public source currently supports a better number.
Spot ETFs
Live from SoSoValue. The aggregate ETH figure is exact; per-fund ETH is derived from USD net assets divided by the ETH price and is approximate to within a few percent.
Corporate treasuries
Companies disclose on their own schedule, so these figures lag reality more than anything else on the page.
Cohorts and free float
Free float is a residual: supply, minus staked, minus treasuries, minus ETFs, minus exchange reserves.
These categories are not fully disjoint. ETF holdings sit in custody at an exchange, and treasury ETH may itself be staked, so some ETH is subtracted twice and free float is correspondingly understated. The residual is an approximation, not an identity, and the dashboard presents it as one. Quantifying the overlap would require custody wallet attribution that no public source provides.
Network
TPS and block fullness are computed on-chain from recent blocks. DeFi TVL comes from DefiLlama; there is no feasible single on-chain equivalent.
Stablecoin supply is the sum of on-chain totalSupply() for the major issuers, valued at a $1 peg. This measures stablecoins issued on Ethereum L1. It is not the same as stablecoins circulating on L1: some of that supply is locked in canonical bridge contracts backing tokens that circulate on L2s.
What is curated
Everything above is live unless stated otherwise. The curated figures are corporate treasury per-company rows, the Coinbase and Kraken reserve totals, staking-provider market shares, and the per-provider benchmark APRs. Each is marked in the UI.
ethwatch does not present a modelled or randomly generated series as data.
Limitations
- The indexer runs on one machine. If a run degrades badly enough that a critical section fails, the upload is refused rather than overwriting the last good snapshot — so a stale-but-correct snapshot is preferred to a fresh-but-wrong one. Every snapshot carries
generatedAt; check it. - Keyless public RPC limits how far back the on-chain windows reach.
- Prices are USD from CoinGecko; every USD figure inherits that price's accuracy.
- Curated figures are as good as their last review date, which is shown.
ethwatch is a monitoring dashboard with its methods written down. It is not financial advice and it is not an audited data source. If a number matters to a decision you are making, verify it against the chain.
Reuse
Everything on this site is licensed CC BY 4.0. Reuse it, adapt it, build on it, train models on it — commercially or otherwise — provided you credit ethwatch.
One request that is not a licence condition, just a request: quote a figure together with its provenance. Every number on this site is tagged live, curated or unavailable, and unavailable means the source failed — it is not zero. The machine-readable versions are /llms-full.txt (the current snapshot as Markdown, every figure tagged) and the JSON feed.