How the numbers are computed
Every figure on this site is a claim about the chain, and each one is computed from something specific — a window, a bucket size, a price rule, a set of rows that arrived. This page states those rules once, by surface, so the pages themselves can be labels and values.
Where a figure is genuinely absent the page still says so, in one word, with the reason on that word’s own hover. Nothing here was deleted from a page — it moved.
On this page
Net worth
How the curve on an address page is replayed, priced and bounded.
- over the Net worth history chart
- Replayed from chain state: {N} bucket(s) of {5 min} across the last {24 hours}. {N position legs | No position legs} on the line. Marked: {N} bucket(s) where a held token's price was carried from its last close. {N} bucket(s) carry no figure at all and are left as a break in the line.
- the right-hand edge of the replayed curve
- The line ends at the newest bucket, priced by the same rule as every other bucket on it. It is not this wallet's value at this second, and nothing here jumps to a different basis at the right-hand edge.
- the key beside the replayed curve
- priced from a carried close — A dashed stretch of the line rests on a price carried forward from a held token's last close: nobody published a close for those buckets, so the last one published stands in. Nothing is missing from the value there — it is the answer's own, whole. What the dashes say is that the price behind that stretch was inferred rather than observed.
- under the replayed curve, where the sweeper series is drawn instead
- The replay is computed per request and this one did not come back complete, so the panel shows the series the batch snapshotter records instead. That series is unaffected: it keeps being written whatever this panel draws.
- under the replayed curve, naming the native leg's source
- The native coin is on the line, from the exact per-block record inside this window | …from the aggregated per-address totals | No native line for a contract | The native coin is not on the line: {reason} | No native line on this answer.
- under the replayed curve, naming the pricing rule
- Priced under upstream's {price rule} rule.
- under “Positions on the line”
- Held across the whole window at one quantity, and valued inside every bucket of the curve above.
- the “Positions on the line” heading
- These positions are part of the line above: their value is inside every bucket of it, not an amount to add to it. Each one held a single quantity across the whole window — a pHEX stake's accrual excepted, which is a known function of the day rather than a movement. A position whose quantity moved is listed below instead, because this chart values positions, it does not replay their journals.
- the “Positions not on the line” heading
- The line does not cover these positions, and each one is named with what it is worth now so the size of the omission is visible rather than implied. A position left out because its quantity changed inside the window, or because it fell outside the cap on how many legs one answer draws, is a rule rather than a failure: the chart is complete, and it is complete about less.
- under “Not on the line”
- Held now, but with no price series to replay — drawing one flat at its current mark would claim its price never moved.
- under “Not replayed”
- Held now, and left out of the walk by the bounds this answer works under.
Holdings
What the Current Holdings figure sums, and what it leaves out.
- under the Current Holdings figure
- tokens ${X} + liquidity ${Y} · {price rule} — the two halves of the figure above, named separately so the total is never mistaken for one of them. Staked PHEX and PTGC and farm positions are in NEITHER half — they are their own sections in the Holdings tab.
- under the Current Holdings figure, when only one half arrived
- token balances ${X} · liquidity not included — this is the half of the figure upstream did answer. It is NOT this wallet's holdings total: the liquidity positions are missing from it.
- under the Current Holdings figure, the batch snapshot
- last indexed valuation ${X} as of block {N} | no indexed valuation yet | last indexed valuation unavailable — a separate quantity from the figure above it, frozen at the block it was computed at. The two are never reconciled.
- under the Current Holdings figure, the coverage clause
- · includes {clauses} as of {D Mon YYYY}.
- under the Current Holdings figure, when upstream held rows back
- Upstream held {N} token balance(s) back from this answer, so the total above and the Holdings tab both describe the rows that arrived.
- under the liquidity positions list
- Itemised from {sources}. That list is this page's reading of the rows below it, not a statement from upstream.
- under the liquidity positions list, when upstream stated the provenance itself
- Liquidity positions are decoded from {X and Y}. Itemised here: {legs}. Not itemised in this answer: {legs}. — the served form of the line above, and the difference matters: this one is upstream's own statement about which legs it decoded, not this page's reading of the rows it was sent.
Live tracking
What a watchlist card's figure, percentage and line are computed from.
- over the tracked list
- A wallet's figure is what it HOLDS — its token balances plus its liquidity positions, priced at upstream's newest marks — and each card names the block those balances were read at. The line is replayed from chain state where the API can replay it, and says so where it cannot.
- under a wallet card's figure
- What this wallet HOLDS, not what a batch consumer last recorded for it: the token balances upstream can price, plus the current value of its liquidity positions. The block is the position those balances were read at; the prices are upstream's newest usable marks and are not dated by it. It is a mark, not a sale.
- over the dashboard's token table
- Change is a chain-time 24h window ending at the indexer cursor, not the last 24 wall-clock hours.
- over the dashboard's wallet table
- Net worth is the last batch snapshot, not a live balance — each row names the block it was computed at. Open an address page for balances, history and P&L.
- under the dashboard's three tiles
- No portfolio total is shown. Token rows are prices with no quantity behind them, and each wallet's net worth is a separate snapshot taken at its own block — adding these together would produce a figure that was never true at any one moment.
- the empty watchlist
- Tokens show the indexer's latest price and its real price ticks; wallets show what they hold now and a curve replayed from chain state.
- under a token card's sparkline
- Last {span}. | Last {span} — last trade {N} hours ago, so the line stops before the right edge. The window is the one selected on the panel; the line is drawn against that window rather than against the data's own extent, so a series that stopped early draws short and the empty band on the right is the silence.
- under a wallet card's replayed sparkline
- Replayed {24 hours} · {N} buckets of {5 min} · {N} priced from a carried close · {N} with no figure.
Address tabs
What each tab on an address page draws from, and what it leaves out.
- the Trades tab, and a transaction's swap legs
- This site's trade coverage includes {clauses} as of {D Mon YYYY}.
- the Bridge tab
- This route records the transfer, not its value: no USD figure exists on a bridge row, so none is shown. Amounts are the token's own.
- the Contract tab, on a read call
- These calls are answered by the chain head, not by the indexed data the rest of this page is drawn from. The two are different things and can disagree.
- the Contract tab, on a proxy
- Sourcify reports this is a proxy. The source and functions below are the PROXY's own — what it delegates to is a different contract with a different verification.
- the Transactions tab's list
- This list holds both lanes: the transactions this site has written down, and the ones the node it reads has above that index. The second kind say so on their own status, sort where their block puts them, and can still change.
- the Transactions tab's list, on provenance
- Read from a node. Some rows in this list are ahead of this site's own index — each one says so on its status — and they are in none of the figures above the list.
- over the Internal and ERC-20 tabs' lists
- This list starts at the newest {internal value transfer | token transfer} this site has indexed. Where this site draws transactions ahead of its index, it draws plain transactions only.
- the Validators tab
- Validators whose withdrawals resolve to this address, by validator index. A validator appears because its withdrawal credentials decode to this address, or because a withdrawal to it has been recorded at the replay's current position.
Tokens
What each figure on a token page counts, and over what window.
- under Price, Volume and Transactions
- chain-time 24h at the cursor — the window ends where the indexer's cursor is, not at the last 24 hours of wall-clock time. During a replay those are nowhere near each other.
- under Price, for a T1 stablecoin
- $1.00 by definition (T1 stable).
- under Holders
- counted {age} ago | counted just now — the holder count is recomputed by a daily pass rather than on every read, so it is the count as of that pass rather than as of now.
- the chart, when there is too little trading to draw one
- A chart drawn from them would be mostly estimate, so it is not drawn. Every recorded trade is still listed below.
- the chart, when the window holds no candles
- Gaps are gaps, not errors — T1 stablecoins have no candles before block 20,319,200, and the replay fills history as it advances.
- the Transactions tab
- Transactions whose sender or recipient is this contract — calls into the token, not trades of it. Value is native PLS.
- the Internals tab
- Native PLS moving to or from this contract inside a transaction's trace tree — value-transfer ATTEMPTS, failures included. Not token transfers.
- the Pools tab, on the order
- Ordered by upstream's pool-value ranking, largest first — twice this pool's most reliably priced side, never a sum of both, and deliberately conservative rather than a total value locked. That figure is the Ranking value column, so the order can be checked by reading down it.
- the Pools tab, on the order this build cannot claim
- Listed in the order upstream returned them. This API build does not serve a pool-value ranking yet, so a row's position says nothing about its size — a pool near the top is not necessarily larger than one below it.
- the Pools tab, on what the list covers
- Upstream serves at most 500 pools for a token, newest-created first, and offers no way to page past them — so this covers the 500 most recently created pools, not every pool holding the token. The count beside the table is how many of them are drawn.
- the Transfers tab
- Every ERC-20 Transfer of this token, newest first, across all wallets. Amounts are scaled by the token's own decimals; this contract's address is not treated specially in the sender and recipient columns.
- the Transfers tab, while the route is not served
- Nothing is composed from the per-wallet feeds in the meantime: those cover one wallet at a time, so a stitched list would look complete while omitting every wallet not asked about.
- the Holders tab, while it is empty
- Balances regenerate during the replay; this fills in as it advances.
Swaps and intents
What the swap feeds contain, and what “priced swaps only” leaves out.
- under the intent-swaps panel and at the bottom of /swaps
- Priced swaps only — about {N}% of recent swaps are unpriced. The feed lists only the swaps the indexer could price; upstream states the share it left unpriced on each answer, and may not state one at all.
- under the same line, when the answer dated its measurement
- (measured {age} ago over the last {N} blocks) — the share is sampled rather than standing: it is measured at a moment, over a window of blocks, and both are named.
- under the same line, when the answer stated no rule
- This feed lists priced swaps only. The route did not state its exclusion rule on this response, so the usual figure is not shown.
- the /swaps lead
- Every swap the indexer priced, newest first, at or above the threshold you set.
- the intent-swaps panel, while it is empty
- This is a live feed at the head, not an archive.
Validators
What a window is, what partial capture does to a figure, and how the entity tables are grouped.
- over the entity tables
- Windows are counted in epochs and close at the last complete UTC day, so “1d” is yesterday rather than the last 24 hours. Each figure carries the epoch range it was computed over.
- over the withdrawal-address table
- Ranked by validators held in the window, over epochs {N}–{M}. Grouped by withdrawal credentials, which every validator has at most one of, so the groups partition the validators that have one. The counts come out of {N} validators with an address — a larger population than the active set, and it is named for scale rather than divided into anything: no column here is a share.
- over the by-graffiti table
- Ranked by blocks proposed in window, over epochs {N}–{M}. Graffiti is written by the proposer on each block it produces, so a missed slot has none. Rows are grouped by exact bytes and are not verified identities — one string can be many operators, and one operator can use many strings.
- under the withdrawal-address table
- {N} validators have BLS withdrawal credentials, which decode to no execution address, so they belong to no row here. They are outside the population named above too — that counts only validators which have an address — so no row's count is affected by them.
- under the entity tables, on the total
- {N} exist in the validator registry, including those with no activity in this window. That is a different population from the rows: an entity with no activity in the window has no row here and is still in the registry.
- while a long window is loading
- The longer windows are aggregated on request rather than read from a rollup. Measured 2026-08-31: about one second for 30 days and three for 90, then served from cache for five minutes.
- the coverage strip, below full capture
- Figures below cover the captured epochs only, so every total is a lower bound. Rates are computed over what was observed and are not scaled up.
- the coverage strip, below full capture, on a ranked table
- This ranking is ordered on {X} of {Y} epochs — about {N} of the {M} days it is labelled with were never captured. The ORDER of these rows can differ from the full window's, and a reader given only the coverage fraction will scale every row up by the same factor, which does not hold.
- the coverage strip, on the backfill
- The historical backfill has reached epoch {N}, walking oldest to newest. That is a separate cursor from the coverage stated here — a recent window can be fully captured while the backfill is still far below it.
- the coverage strip, on the rollup's own shortfall
- The entity rows for this window are short by {N} days: the daily rollup is complete only through {D}, while the window closes on {D2}. Every per-entity figure therefore covers fewer days than the window states. This is a gap in the rollup, not the epoch coverage stated beside it.
- on the Queues box heading
- The queue counts are re-read every 60 seconds.
- on the Queues box heading, on what it does NOT do
- Nothing in this box is added up or inferred from the figures beside it: each of the four is read from the field the answer served it in, and a field the answer did not carry draws a word.
- in the Queues box, on why there are no waits in it
- This box gives no estimated time for any queue. A wait divided out of a churn limit is a projection, and the four figures here are counts the answer served — so none of them is a claim about when anything will happen.
- under the Missed blocks tile
- A missed slot whose proposer this indexer has no record of belongs to no entity. Those misses are counted here in full and appear in no entity's Missed column, so that column will always total less than this figure.
- under the Active validators tile
- A census, not a window: an active-validator count is a state at one epoch, not a rate over a period, so it carries no window label.
- under the Slashed tile
- Forced exits landing in the last 24 hours. Where the answer does not say what the figure counts, nothing is claimed about it and no description is drawn.
- under the Total staked tile
- The sum of effective balances. It is shown only when the answer carries the sum — nothing here multiplies a nominal stake by a validator count to produce one. Where the answer does not say what the figure sums, the figure is still shown, nothing is claimed about it and no description is drawn.
- over the epoch strip and the epoch list
- Every figure here is for one epoch — 32 slots.
- the /epochs lead
- Every summarised epoch, newest first. An epoch is 32 slots; every figure on a row is for that one epoch.
- the /slots lead
- Every slot of the consensus schedule, newest first — including the ones where no block was produced, which appear on no block list anywhere.
- over the slot strip
- Every slot, including the ones where no block was produced.
- under the shadow Coverage tile
- The share of the window's slots that have a shadow record.
- beside the shadow Produced → received figure
- The seconds subtract the producer's own clock from this node's.
- the shadow page's “Verify it yourself”
- Every shadow record is a signed claim about a block, produced independently of this indexer, so agreement between the two is checkable by anyone — not something to take on trust. The plain-language methodology document and the signing public key publish at the Phase 6 key ceremony; this page will link both, pinned by content hash, when they exist.
Blocks and transactions
What this site indexes, when it indexes it, and how the fee and trace figures are derived.
- wherever a block is above the indexed head
- This site indexes a block only once 12 more blocks sit on top of it — a deliberate buffer against reorgs, not a backlog.
- over an empty /blocks list
- The historical replay fills blocks in as its cursor advances — this list follows it.
- the /blocks lead
- Indexed blocks, newest first, with gas usage and fee accounting.
- under the /blocks gap bands
- Gaps are counted between adjacent rows on this page, so the oldest row on each page has none recorded — its gap is measured on the next page down.
- under a block's transaction table
- Whether each transaction succeeded comes from its own receipt, and this page does not read one per transaction on the head lane; the method is decoded from calldata the same way, and neither column is drawn where it cannot be filled.
- under a block's transaction table, the count line
- All {N} transactions the node reports for this block. | {N} transactions of the {M} the node reports for this block. — the table lists what the lane answered with, and the block's own count is beside it so the two can be compared rather than assumed equal.
- under a block's Proposer reward
- Tips plus direct payments, server-computed.
- beside an unfinalized block's pill
- The consensus layer has not finalized this block. Its contents are what the chain reports now and can still be replaced.
- under an unfinalized block's or transaction's header
- Read from a node. The node this site reads is {N} blocks past this block. This site indexes a block once {N} blocks sit on top of it, so the proposer, the consensus reward and this block's trace-derived accounting are not written down yet.
- beside a pending consensus reward
- Being summarised. This epoch closed less than an hour ago. | Backfill in progress — this epoch is queued. | Not summarised yet. | Never summarised. No consensus reward was recorded for this epoch and none can be recovered.
- when a transaction is not found
- No transaction with this hash is known to this site's index or to the node it reads. A hash that has only just been broadcast and is still in the mempool is not on a block yet, and this site does not read the mempool.
- under a transaction's Total fee
- Server-computed burned + tip.
- beside a transaction's Gas used bar
- Of the transaction's own gas limit.
- under the internal-calls table, when the answer carries each call's depth
- In execution order — the call tree read depth-first, with each call indented under the one that made it.
- under the internal-calls table, when the answer carries no depth
- In execution order. Nesting is not shown: this answer carries no depth, so every call is drawn at the same level instead of indented under the one that made it. The order is unaffected — it comes from each call's position in the tree, not from its depth.
- under the internal-calls table, when the slice is partial
- A partial slice, and it is NOT the first calls the transaction made: pages arrive in the order upstream keys them, which is not execution order, so a call indented here may sit under a parent that has not loaded. Load the rest for the whole tree.
- under the internal-calls table, on the undrawn column
- Also served per call and not drawn here: gas_used.
- the transfers and internal tabs' slow gate
- Most transactions are far quicker than that, so this one is either unusually expensive to scan or the route is busy — loading it anyway gives the scan the full deadline rather than the automatic budget.
- over a transaction's swap legs
- Every swap this transaction executed, in the order it executed them. A path that hops through several pools carries the same money through each one, so the leg values are not added up.
- over a transaction's swap legs, on what a leg is
- Swap legs are this site's reading of which pools this transaction touched and in which direction — a classification made when the transaction is indexed, not a field the node holds.
- over the transfer flow
- The sender is not either end of any transfer in this transaction — every hop is between other addresses, which is what a swap routed through a contract looks like. Direction is classified relative to the transaction's sender.
- under the transfer flow
- USD value is not served by this route, so the column is empty rather than filled. It is not estimated from today's price: applying a current price to a past transfer produces a different quantity in the same units.
Search and lists
How the walked lists are ordered, and what an epoch or a slot list contains.
- over the address-tags list
- The list walks by address; there is no most-recent page to be at.
- the /epochs lead
- Every summarised epoch, newest first. An epoch is 32 slots; every figure on a row is for that one epoch.
- the /slots lead
- Every slot of the consensus schedule, newest first — including the ones where no block was produced, which appear on no block list anywhere.
Field-by-field shapes are in the API documentation; this page is about what the figures mean.