Methodology v0.1
Metric methodology
Canonical counting rules for LumenMap metrics. These definitions are descriptive of how the product measures activity; they are not marketing claims about network health or protocol performance.
← Back to dashboardOperations
Count of Stellar operations closed in the selected period, grouped by operation type.
- Unit
- operations (count)
- Aggregation
- COUNT(*) of operations; dashboard totals sum type counts.
- Time basis
- Inclusive wall-clock period using the server period resolver (Today, last 7/30 days, or calendar month).
- Source
- `crypto-stellar.crypto_stellar_dbt.enriched_history_operations.type_string` filtered by `closed_at`.
Inclusions
- All operation types present in Hubble for the period
- Soroban and classic operations
Exclusions
- Failed or non-closed operations not present in the enriched closed-at feed
- Mempool / unconfirmed activity
Known limitations
- This is not a transaction count; one transaction may contain multiple operations.
- Hubble batch lag can understate the most recent partial day.
Transactions
Count of distinct transactions that closed in the selected period. Not currently shown as a dashboard KPI.
- Unit
- transactions (count)
- Aggregation
- COUNT(DISTINCT transaction hash / id) over closed transactions.
- Time basis
- Same selected period bounds as operations.
- Source
- Hubble transaction / operation linkage tables (planned surface; not queried by the current KPI cards).
Inclusions
- Closed transactions in the period
Exclusions
- Operations within a transaction are not counted here
- Unconfirmed submissions
Known limitations
- Transaction count and operation count are different metrics and must not be compared as equivalents.
- Not exposed in the current dashboard UI.
Payment volume
Asset-denominated payment amounts moved in the period. Not currently shown as a dashboard KPI.
- Unit
- asset units (for example XLM or USDC), never a mixed-asset total without normalization
- Aggregation
- SUM of payment amounts per asset code/issuer. Cross-asset totals require an explicit FX normalization rule.
- Time basis
- Same selected period bounds as operations.
- Source
- Hubble payment amount fields on enriched payment operations (planned).
Inclusions
- Payment and path-payment style transfers when enabled
Exclusions
- Non-payment operation types
- Unnormalized multi-asset rollups
Known limitations
- LumenMap does not present a single cross-asset volume total without a documented normalization method.
- Not exposed in the current dashboard UI.
TVL (total value locked)
Point-in-time estimate of value committed to protocols at a snapshot. Not currently shown as a dashboard KPI.
- Unit
- quoted currency at snapshot time (for example USD), after documented pricing
- Aggregation
- Sum of protocol balances at a timestamp; protocol adapters must state double-counting rules.
- Time basis
- Point-in-time snapshot, not a period sum.
- Source
- Protocol-specific reserve / pool state (planned; no default adapter yet).
Inclusions
- Balances explicitly held by supported protocol contracts
Exclusions
- Wallet balances not locked in a protocol
- Unpriced or unverifiable reserves
Known limitations
- TVL is sensitive to oracle price choice and can double-count assets bridged across protocols.
- Not exposed in the current dashboard UI.
Active accounts (source)
Distinct account public keys that sourced qualifying operations in the period.
- Unit
- accounts (distinct count)
- Aggregation
- COUNT(DISTINCT op_source_account) for closed operations in-range.
- Time basis
- Same selected period bounds as operations.
- Source
- `enriched_history_operations.op_source_account` filtered by `closed_at`.
Inclusions
- Accounts that appear as operation source accounts
Exclusions
- Accounts that only receive payments without sourcing ops
- Contract IDs and muxed accounts (M...)
Known limitations
- The treemap account list is top-N capped per operation type and is not the full active-account universe.
- Hubble lag can delay the newest hours.
Active destination accounts
Distinct classic accounts that received qualifying payment, path-payment, account-creation, or merge operations in the period.
- Unit
- accounts (distinct count)
- Aggregation
- COUNT(DISTINCT destination_account) across payment-style operation types.
- Time basis
- Same selected period bounds as operations.
- Source
- `enriched_history_operations` destination fields (`details.to`, `details.new_account`, `details.into`) for selected types.
Inclusions
- G... accounts receiving payment, path payment, create_account, or account_merge
Exclusions
- Source-only wallets that never received qualifying ops
- Contract IDs, empty identifiers, and muxed accounts
Known limitations
- Destination semantics differ from source active wallets; do not sum the two KPIs as a deduplicated user count.
- Only the documented operation types contribute to the destination count.
Active contracts
Soroban contracts with fee / invoke activity in the period, as returned by the contract activity query.
- Unit
- contracts (count)
- Aggregation
- Number of contract IDs returned by the period contract leaderboard query after grouping.
- Time basis
- Same selected period bounds as operations.
- Source
- `crypto-stellar.crypto_stellar_dbt.hourly_soroban_fee_agg_contract` grouped by `contract_id` with null/empty IDs removed.
Inclusions
- Contracts with non-empty contract_id and activity in-range
Exclusions
- Null or empty contract IDs
- Non-contract classic accounts
Known limitations
- The current KPI uses the leaderboard result length, which is capped (top 200), so busy periods can undercount.
- Hubble lag can delay the newest hours.
Top category
The LumenMap activity category with the largest operation count in the period.
- Unit
- category label
- Aggregation
- Argmax of summed operation counts across category groups.
- Time basis
- Same selected period bounds as operations.
- Source
- Derived from operation type totals and `TYPE_TO_GROUP` mapping.
Inclusions
- Soroban, Payments, DEX, Trustlines, Account Operations, Other
Exclusions
- Entity-level rankings (accounts/contracts)
Known limitations
- Ties resolve by sort order of aggregated totals; label is categorical, not a numeric volume.
Time basis and partial periods
How LumenMap bounds Today, multi-day windows, and the calendar month.
- Unit
- n/a
- Aggregation
- n/a
- Time basis
- Period start/end come from the dashboard period control. The current day or month can be partial until the period ends.
- Source
- `lib/periods.ts` period resolver used by `/api/activity`.
Inclusions
- Closed operations with `closed_at` inside the resolved bounds
Exclusions
- Activity outside the selected bounds
Known limitations
- Partial current periods are expected to grow as new Hubble batches arrive.
- Host timezone can affect local period boundaries until an explicit UTC policy is enforced.
Hubble freshness
Analytics numbers follow Hubble’s batch refresh, not sub-second chain tip state.
- Unit
- n/a
- Aggregation
- n/a
- Time basis
- Intraday Hubble batches; exact lag varies.
- Source
- Stellar Hubble BigQuery datasets.
Inclusions
- Data present in the Hubble tables at query time
Exclusions
- Unindexed tip activity
Known limitations
- Recent intervals can under-report until the next Hubble refresh.
- API responses may be cached for several minutes server-side.