Grass (GRASS) — the network, measured

Generated 2026-09-02T13:46:31Z from live ClickHouse queries against this estate's ledger. Held inventory: 10,172 observations · 40 distinct series · 3 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-09-02 13:34:01 · 10,172/10,172 rows carry a verify_url. 33 series refreshed in the last 24h (893 fresh rows). Nothing on this page is cached, estimated, or remembered.

What this page is. One network — Grass, the bandwidth-sharing DePIN network whose users earn GRASS for contributing unused internet capacity (catalog category other) — packaged as a read-only product page. The network's own public stats endpoint reports the supply-side telemetry (unique IP addresses, countries, daily bandwidth with its modality split, indexed URLs, downloaded frames, tokens paid); the token lives on Solana (Grass7B4RdKfBCjTKgSqnXkqjwiGvQyFbuSCUJr3XXjs) and its on-chain supply and account concentration are read from the public JSON-RPC; the market reference comes from the CoinGecko coin page. This page reports what those endpoints answered and when. It does not forecast, rank investment merit, or advise. Where a metric has a measurement caveat, the caveat ships with the metric — the naming generations, the account-vs-owner concentration distinction, and the market-vs-chain supply split are declared below.

Provenance — where every number comes from

3 source families feed this network's ledger. Every row they wrote carries its own source, as_of and verify_url; this table is the live rollup of that.

SourceRows heldSeriesRows w/ verify_url Window (UTC)Sample origin
CoinGecko /coins/markets6,882246,8822026-08-09 17:15:20 → 2026-09-02 12:50:20sample origin ↗
first_party_api3,125123,1252026-08-09 23:28:06 → 2026-09-02 13:34:01sample origin ↗
solana_rpc16541652026-08-09 23:12:54 → 2026-09-02 12:00:02sample origin ↗

30-day history — headline series (daily last-value, live)

One row per series: latest value, a 30-day sparkline of daily last-known values (scaled to the series' own min→max), day count, and window change. Series absent from the 30-day window are omitted from this table, not zero-filled.

SeriesLatest30-day shapeDays held 30d changeWindow & provenance
price_usd0.3318 usd▁▃▂▂▃▅▁█▇▄██▇█▇▇▆▅18+10.5%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
market_cap_usd224,676,370 usd▁▃▂▁▃▄▁▇▆▄▇▇▇█▇▇▆▅18+14.3%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
volume_24h_usd13,156,462 usd▄▄█▂▄▃▃▁▂▂▁▁12-49.9%2026-08-22 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
circulating_supply677,022,560 tokens▁▁▁▁▁▁▁▁▁▁▁▁██████18+3.4%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
total_supply1,000,000,000 tokens▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁18+0.0%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
max_supply1,000,000,000 tokens▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁18+0.0%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
fully_diluted_valuation_usd331,859,503 usd▁▃▂▂▃▅▁█▇▄██▇█▇▇▆▅18+10.5%2026-08-09 → 2026-09-02 via CoinGecko /coins/markets · origin ↗
onchain_total_supply999,993,103.4182 tokens█████████▇▇▇▇▁▁▁▁▁▁▁▁▁▁▁▁25-0.0%2026-08-09 → 2026-09-02 via solana_rpc · origin ↗
daily_gb_collected96,950 gb▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁25+0.0%2026-08-09 → 2026-09-02 via first_party_api · origin ↗
total_ip_addresses109,755,404 ip_addresses▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁25+0.0%2026-08-09 → 2026-09-02 via first_party_api · origin ↗
number_of_countries190 countries▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁25+0.0%2026-08-09 → 2026-09-02 via first_party_api · origin ↗
urls_indexed_total5,318,005,903 urls▁▁▁▁▁▁▁▁▁▁▁▁▁13+0.0%2026-08-21 → 2026-09-02 via first_party_api · origin ↗
frames_downloaded_total161,819,278,800 frames▁▁▁▁▁▁▁▁▁▁▁▁▁13+0.0%2026-08-21 → 2026-09-02 via first_party_api · origin ↗
tokens_collected_total125,338,385,560 GRASS▁▁▁▁▁▁▁▁▁▁▁▁▁13+0.0%2026-08-21 → 2026-09-02 via first_party_api · origin ↗

Market reference — CoinGecko coin page, as held

Market-data reference rows: price, supply, capitalisation, diluted valuation, and the published change columns including ATH/ATL. These are the coin-page reference's own numbers — the estate does not model, smooth, or forward-fill them. circulating_supply here is a market-data figure; the chain's own supply read is in the on-chain block below and the two are never merged.

MetricLatestAs of (UTC)Verify
circulating_supply677,022,560 tokens2026-09-02 12:50:20origin ↗
fully_diluted_valuation_usd331,859,5032026-09-02 12:50:20origin ↗
market_cap_change_24h_pct-3.9566 percent2026-09-02 12:50:20origin ↗
market_cap_change_24h_usd-9,255,668.19122026-09-02 12:50:20origin ↗
market_cap_rank161 rank2026-09-02 12:50:20origin ↗
market_cap_usd224,676,3702026-09-02 12:50:20origin ↗
max_supply1,000,000,000 tokens2026-09-02 12:50:20origin ↗
price_ath_usd3.892026-09-02 12:50:20origin ↗
price_atl_usd0.16682026-09-02 12:50:20origin ↗
price_change_14d_pct5.6 percent2026-09-02 12:50:20origin ↗
price_change_1h_pct-0.3 percent2026-09-02 12:50:20origin ↗
price_change_1y_pct-55 percent2026-09-02 12:50:20origin ↗
price_change_200d_pct-1.1 percent2026-09-02 12:50:20origin ↗
price_change_24h_pct-3.979 percent2026-09-02 12:50:20origin ↗
price_change_24h_usd-0.01372026-09-02 12:50:20origin ↗
price_change_30d_pct7.3 percent2026-09-02 12:50:20origin ↗
price_change_7d_pct-3.2 percent2026-09-02 12:50:20origin ↗
price_from_ath_pct-91.4758 percent2026-09-02 12:50:20origin ↗
price_from_atl_pct98.9291 percent2026-09-02 12:50:20origin ↗
price_high_24h_usd0.35182026-09-02 12:50:20origin ↗
price_low_24h_usd0.33122026-09-02 12:50:20origin ↗
price_usd0.33182026-09-02 12:50:20origin ↗
total_supply1,000,000,000 tokens2026-09-02 12:50:20origin ↗
volume_24h_usd13,156,4622026-09-02 12:50:20origin ↗

Network telemetry — api.getgrass.io networkStats, as held

Read from the network's own public stats endpoint (networkStats?cluster=mainnet): unique IP addresses, country count, daily bandwidth collected with its per-modality split (multimodal / text), indexed URLs, downloaded frames, and GRASS tokens paid to the network. The three archived single-row bare names from 2026-08-09 ship too, labelled as the older naming generation of the same quantities — never summed with their *_total successors. daily_gb_collected, daily_gb_multimodal and daily_gb_text are the endpoint's own series and are never reconciled into one number here.

MetricLatestAs of (UTC)Rows heldVerify
daily_gb_collected96,950 gb2026-09-02 13:34:01568origin ↗
daily_gb_multimodal86,474 gb2026-09-02 13:34:01284origin ↗
daily_gb_text1,676 gb2026-09-02 13:34:01284origin ↗
frames_downloaded
⚠ archived naming generation (2026-08-09); live name is frames_downloaded_total
161,819,278,800 frames2026-08-09 23:52:101origin ↗
frames_downloaded_total161,819,278,800 frames2026-09-02 13:34:01283origin ↗
number_of_countries190 countries2026-09-02 13:34:01568origin ↗
rows_of_data
⚠ archived (2026-08-09); equals urls_indexed on the live payload — collector keeps one name
5,318,005,903 rows2026-08-09 23:52:101origin ↗
tokens_collected
⚠ archived naming generation (2026-08-09); live name is tokens_collected_total (unit then 'tokens', now 'GRASS')
125,338,385,560 tokens2026-08-09 23:52:101origin ↗
tokens_collected_total125,338,385,560 GRASS2026-09-02 13:34:01283origin ↗
total_ip_addresses109,755,404 ip_addresses2026-09-02 13:34:01568origin ↗
urls_indexed
⚠ archived naming generation (2026-08-09); live name is urls_indexed_total
5,318,005,903 urls2026-08-09 23:52:101origin ↗
urls_indexed_total5,318,005,903 urls2026-09-02 13:34:01283origin ↗

On-chain token — Solana mainnet, as held

The GRASS SPL mint (Grass7B4RdKfBCjTKgSqnXkqjwiGvQyFbuSCUJr3XXjs) read from Solana public JSON-RPC: getTokenSupply for total supply, getTokenLargestAccounts for account concentration. Holder-concentration series last reported 2026-08-28 (the public RPC applies a strict per-method quota to that call); supply reads are current. Every row keeps its own as-of stamp — nothing is forward-filled to today.

MetricLatestAs of (UTC)Rows heldVerify
onchain_top10_holder_pct
⚠ ACCOUNT concentration (getTokenLargestAccounts), not owner concentration
53.0662 pct2026-08-28 12:00:0120origin ↗
onchain_top1_holder_pct
⚠ ACCOUNT concentration (getTokenLargestAccounts), not owner concentration
25.6503 pct2026-08-28 12:00:0120origin ↗
onchain_top20_holder_pct
⚠ ACCOUNT concentration (getTokenLargestAccounts), not owner concentration
63.9275 pct2026-08-28 12:00:0120origin ↗
onchain_total_supply999,993,103.4182 tokens2026-09-02 12:00:02105origin ↗

Full metric inventory — 40 measured series, each with provenance

Every series held for GRASS with rows in the last 30 days: latest value, when it was observed, which source observed it, how many rows we hold, how many of the last 30 days it reported, its comparability grade, and the origin link. "days/30" counts distinct dates with at least one row in the window.

MetricLatestAs of (UTC)Source RowsDays/30ComparabilityVerify
circulating_supply
⚠ ⚠ CoinGecko coin-page reference — a market-data figure, not a chain read; the chain read is onchain_total_supply
677,022,560 tokens2026-09-02 12:50:20CoinGecko /coins/markets35818/30grass-native (unmapped)origin ↗
daily_gb_collected96,950 gb2026-09-02 13:34:01first_party_api56825/30grass-native (unmapped)origin ↗
daily_gb_multimodal86,474 gb2026-09-02 13:34:01first_party_api28414/30grass-native (unmapped)origin ↗
daily_gb_text1,676 gb2026-09-02 13:34:01first_party_api28414/30grass-native (unmapped)origin ↗
frames_downloaded
⚠ ⚠ archived naming generation (single row, 2026-08-09); the live series is the frames_downloaded_total name — same quantity, never summed
161,819,278,800 frames2026-08-09 23:52:10first_party_api11/30grass-native (unmapped)origin ↗
frames_downloaded_total161,819,278,800 frames2026-09-02 13:34:01first_party_api28313/30grass-native (unmapped)origin ↗
fully_diluted_valuation_usd331,859,503 usd2026-09-02 12:50:20CoinGecko /coins/markets35818/30grass-native (unmapped)origin ↗
market_cap_change_24h_pct-3.9566 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
market_cap_change_24h_usd-9,255,668.1912 usd2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
market_cap_rank161 rank2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
market_cap_usd224,676,370 usd2026-09-02 12:50:20CoinGecko /coins/markets35818/30grass-native (unmapped)origin ↗
max_supply1,000,000,000 tokens2026-09-02 12:50:20CoinGecko /coins/markets35818/30grass-native (unmapped)origin ↗
number_of_countries190 countries2026-09-02 13:34:01first_party_api56825/30grass-native (unmapped)origin ↗
onchain_top10_holder_pct
⚠ ⚠ ACCOUNT concentration from getTokenLargestAccounts (20 largest token accounts, not owners — pools/treasuries/exchanges each count as one); an upper-bound proxy for owner concentration
53.0662 pct2026-08-28 12:00:01solana_rpc205/30grass-native (unmapped)origin ↗
onchain_top1_holder_pct
⚠ ⚠ ACCOUNT concentration from getTokenLargestAccounts (20 largest token accounts, not owners — pools/treasuries/exchanges each count as one); an upper-bound proxy for owner concentration
25.6503 pct2026-08-28 12:00:01solana_rpc205/30grass-native (unmapped)origin ↗
onchain_top20_holder_pct
⚠ ⚠ ACCOUNT concentration from getTokenLargestAccounts (20 largest token accounts, not owners — pools/treasuries/exchanges each count as one); an upper-bound proxy for owner concentration
63.9275 pct2026-08-28 12:00:01solana_rpc205/30grass-native (unmapped)origin ↗
onchain_total_supply
⚠ ⚠ Solana getTokenSupply read — the mint's own figure; differs from CoinGecko's total_supply reference row by design
999,993,103.4182 tokens2026-09-02 12:00:02solana_rpc10525/30grass-native (unmapped)origin ↗
price_ath_usd3.89 usd2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_atl_usd0.1668 usd2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_14d_pct5.6 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_1h_pct-0.3 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_1y_pct-55 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_200d_pct-1.1 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_24h_pct-3.979 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_24h_usd-0.0137 usd2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_30d_pct7.3 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_change_7d_pct-3.2 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_from_ath_pct-91.4758 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_from_atl_pct98.9291 percent2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_high_24h_usd0.3518 usd2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_low_24h_usd0.3312 usd2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗
price_usd0.3318 usd2026-09-02 12:50:20CoinGecko /coins/markets35818/30grass-native (unmapped)origin ↗
rows_of_data
⚠ ⚠ archived naming generation (single row, 2026-08-09); equals urls_indexed on the live payload, so the collector keeps one name
5,318,005,903 rows2026-08-09 23:52:10first_party_api11/30grass-native (unmapped)origin ↗
tokens_collected
⚠ ⚠ archived naming generation (single row, 2026-08-09); the live series is the tokens_collected_total name — same quantity, never summed
125,338,385,560 tokens2026-08-09 23:52:10first_party_api11/30grass-native (unmapped)origin ↗
tokens_collected_total125,338,385,560 GRASS2026-09-02 13:34:01first_party_api28313/30grass-native (unmapped)origin ↗
total_ip_addresses109,755,404 ip_addresses2026-09-02 13:34:01first_party_api56825/30grass-native (unmapped)origin ↗
total_supply1,000,000,000 tokens2026-09-02 12:50:20CoinGecko /coins/markets35818/30question-verified
token_supply_total
origin ↗
urls_indexed
⚠ ⚠ archived naming generation (single row, 2026-08-09); the live series is the urls_indexed_total name — same quantity, never summed
5,318,005,903 urls2026-08-09 23:52:10first_party_api11/30grass-native (unmapped)origin ↗
urls_indexed_total5,318,005,903 urls2026-09-02 13:34:01first_party_api28313/30grass-native (unmapped)origin ↗
volume_24h_usd13,156,462 usd2026-09-02 12:50:20CoinGecko /coins/markets26312/30grass-native (unmapped)origin ↗

Revision ledger — 0 backward revision(s) recorded for GRASS

Backward revisions are values upstream later replaced for a date we had already archived. The before-value is retained — that retention is the only reason a rewrite is detectable, and it is the part every overwriting vendor discards.

The ledger query ran during generation and returned 0 rows for GRASS. Zero here is the live query result, not a gap — the ledger itself is at /v1/revisions.

Estate grades for GRASS (graded 2026-08-20 13:54:15.000)

Served by /v1/network/GRASS — the same grades a paying agent receives. Scores are the engines' own 0–100 outputs, not ours to smooth.

EngineGradeScore
Node qualityA100
Dilution riskMINIMAL84.7224
Bot riskF50
Dev velocityA100
RevenueF0
Data coverageB50
OverallB56.9445

Verify any cell yourself — the exact commands

No account, no key, no trust required. Commands 1–3 hit the same upstream endpoints our collectors do (the solscan.io and coingecko.com browser pages 403 plain curl, so the programmatic endpoints are given); command 4 hits this estate's public API, where every row carries the same source / as_of / verify_url fields.

# 1) The network's own stats endpoint (IPs, countries, daily GB, URLs, frames) — keyless, as of 2026-09-02T13:46:31Z:
curl -s -H "User-Agent: kairos-check" "https://api.getgrass.io/networkStats?input=%7B%22cluster%22%3A%22mainnet%22%7D" | python3 -m json.tool
# 2) Solana mainnet RPC — the chain's own supply figure:
# Solana mainnet public JSON-RPC — getTokenSupply for the GRASS SPL mint
# (the endpoint family our solana_rpc collector reads):
curl -s -X POST "https://api.mainnet-beta.solana.com" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getTokenSupply","params":["Grass7B4RdKfBCjTKgSqnXkqjwiGvQyFbuSCUJr3XXjs"]}' | python3 -m json.tool
# 3) Market reference (CoinGecko public API):
# CoinGecko public markets API (the endpoint family our collector
# reads for the price/supply/cap rows):
curl -s "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=grass" | python3 -m json.tool
# 4) This estate's public API row for GRASS:
curl -s "https://kairossignal.com/v1/network/GRASS" | python3 -m json.tool | head -60
Get this network as a data feed. Every number here is one API call away, with the same provenance fields. Pricing · Self-register for free $5 API credits — no card, no human · API reference. Machine-readable row for this network: /v1/network/GRASS.

Method & honesty notes. All counts are queries against the live ledger at generation time, not restamped copy — this page is regenerated by gen_deep_dive_grass.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. Comparability grades come from the served canonical-metric system via its own resolver: total_supply maps to token_supply_total (question-verified). The remaining series are Grass-native network/market metrics with no cross-network concept; grading them would be fabrication, so they are labelled "grass-native (unmapped)". Naming generations (bare names vs *_total) and unit generations (tokens vs GRASS) are the same quantities as re-published by the collector over time; they are shown side by side as held, never summed or reconciled. Holder-concentration figures measure token ACCOUNTS, not owners. Where a section has no data, it is absent — we do not publish zeros for gaps.

Machine-generated 2026-09-02T13:46:31Z by propintel/gen_deep_dive_grass.py · source of truth: default.depin_catalog, default.depin_onchain, default.depin_revision_ledger (ClickHouse, live at generation) · Kairos Signal — provenance or silence.