io.net (IO) — the revision ledger

Generated 2026-09-02T18:16:48Z from live ClickHouse queries against this estate's ledger. Point-in-time archive held for io.net: 26,526 observations · 134 distinct series · 5 upstream sources · first row 2026-08-09 17:15:20 · newest row 2026-09-02 18:00:02 · 26,526/26,526 rows carry a verify_url · 111 series refreshed in the last 24h (2,411 fresh rows). Nothing on this page is cached, estimated, or remembered.

What this page is. Data vendors restate history: a number they published for a date gets replaced later, silently, and everyone who stored the first answer either never notices or overwrites it. This estate keeps a machine detector over its daily snapshots for every cumulative-by-construction series, records the before-value beside the replacement, and serves the record at /v1/revisions. This page is the io.net (IO) view of that product: the live ledger for IO, the estate-wide feed as proof the detector works, the archive the detection runs over, and the exact commands to verify any of it without an account. It does not forecast, rank investment merit, or advise. Where a fact has a caveat, the caveat ships with the fact.

Provenance — where IO's archive comes from

5 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. The largest family is the io.net explorer API itself — first-party telemetry from the network's own endpoint (https://api.io.solutions/v1/io-explorer/network/inventory-aggregated).

SourceRows heldSeriesRows w/ verify_url Window (UTC)Sample origin
first_party_api17,7869717,7862026-08-09 23:28:06 → 2026-09-02 17:34:01sample origin ↗
CoinGecko /coins/markets7,002247,0022026-08-09 17:15:20 → 2026-09-02 17:49:30sample origin ↗
io_explorer1,45831,4582026-08-12 19:27:37 → 2026-09-02 17:47:02sample origin ↗
solana_rpc16641662026-08-09 23:12:54 → 2026-09-02 18:00:02sample origin ↗
github11461142026-08-09 23:47:26 → 2026-09-01 18:29:02sample origin ↗

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

Backward revisions are values upstream later replaced for a date this estate had already archived. The before-value is retained alongside the replacement — both timestamps, both numbers — which is what no overwriting vendor keeps.

The ledger query ran during generation and returned 0 rows for IO: every cumulative-by-construction series held for io.net has been monotonic across all 27 daily snapshots in the archive (2026-08-06 → 2026-09-01). Zero here is the live query result, not a gap — the ledger itself is at /v1/revisions?symbol=IO (the same query this page ran, served live), and a restatement would appear on this page the day the detector records one.

Cumulative-by-construction series watched for IO

These are the series in the daily archive the revision detector guards for io.net — a decrease in any of them can only be a history rewrite, so each is diffed snapshot-to-snapshot on every detector run. "days" counts the daily snapshots in which the series appears.

SeriesSnapshot rows heldDays
compute_hours_served2727/27
gpu_total2727/27
inferences_total2727/27
inference_cost_total2727/27
total_earnings2727/27
onchain_total_supply2424/27

The ledger, live — every restatement recorded estate-wide (18 deduped events)

Deduped on revision identity exactly as /v1/revisions dedupes it. This is the same feed a subscriber polls; it is rendered live from ClickHouse at generation, not copied from a snapshot. Each row is an upstream source replacing the value of a (network, metric, date) it had already published — after this estate recorded the original. The superseded value is retained, never deleted; that retention is the only reason a rewrite is detectable, and it is the part every overwriting vendor discards.

First detectedNetworkMetricWasBecame ΔKindProvenance
2026-09-02 01:15:01GRTdl_fees_alltime_usd1,424,3161,423,345-0.068%backward_revisiondepin_first_party · origin ↗
2026-09-02 01:15:01GRTfees_alltime_usd1,424,3021,423,345-0.067%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-02 01:15:01OVPPtoken_transfers_total1,356,7491,354,903-0.136%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:34:07ARblocks1,986,2201,702,204-14.299%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07ARblocks1,980,1161,702,204-14.035%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07ARblocks1,988,9301,702,206-14.416%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07ARblocks1,982,1761,702,204-14.124%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:34:07AUKItoken_transfers_total1,230,1671,228,860-0.106%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:34:07EIGENfees_alltime_usd161,955,683.53161,932,203.53-0.014%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-01 23:34:07GRTfees_alltime_usd1,419,3281,419,152-0.012%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-01 23:34:07GRTfees_alltime_usd1,419,5581,419,328-0.016%backward_revisionDefiLlama /overview/fees · origin ↗
2026-09-01 23:34:07R1token_transfers_total194,390194,337-0.027%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:34:07SOGNItoken_transfers_total1,177,2191,174,145-0.261%backward_revisionevm_blockscout · origin ↗
2026-09-01 23:33:32GRTdl_fees_alltime_usd1,419,3221,419,152-0.012%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:33:32GRTdl_fees_alltime_usd1,415,0541,414,119-0.066%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:33:32GRTdl_fees_alltime_usd1,419,5661,419,322-0.017%backward_revisiondepin_first_party · origin ↗
2026-09-01 23:33:32STORJdisqualified_nodes80,23879,569-0.834%backward_revisiondepin_first_party · origin ↗
2026-08-13 15:35:15FLOCKdl_fees_alltime_usd1,170,614.61,170,544.16-0.006%sub_noisedefillama_fees · origin ↗

How detection works — and what it cannot see

The detector (propintel/revision_ledger.py) diffs every daily snapshot this estate holds of every cumulative-by-construction series — counters that cannot decrease unless upstream rewrote them (alltime fees, token transfers, block heights, node disqualifications). A row enters default.depin_revision_ledger iff two snapshots disagree for an already-observed date; zero human judgement. Resolution rule: latest observation wins for current-state reads, the superseded value is retained, never deleted. Population gauges (node counts, TVL, prices) legitimately move both ways and are deliberately excluded — a drop there is a real population change, not a rewrite. Honest boundary: this catches value-history rewrites ex-post; identical-schema semantic drift with plausible values is what the hash-pinned derivation_replay layer is for. The detector's full classification, including the AR case below, is inspectable at /v1/revisions and frozen daily at /revision-ledger/REVISIONS_20260902.json.

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

Served by /v1/network/IO — the same grades a paying agent receives. Scores are the engines' own 0–100 outputs, published exactly as the engines emitted them, unflattering parts included.

EngineGradeScore
Node qualityC51.645
Dilution riskLOW79.077
Bot riskF55
Dev velocityF0
RevenueF0
Data coverageA100
OverallC46.8122

Verify any cell yourself — the exact commands

No account, no key, no trust required. Commands 1–2 hit this estate's public API (the same rows this page queried — every row carries source / as_of / verify_url); command 3 hits io.net's own explorer endpoint, the first-party source most of the archive came from; command 4 is the estate's graded network row; command 5 is the frozen daily snapshot of the ledger. One polite call per endpoint, no hammering.

# 1) The served revision feed for IO — the same rows this page queried, live:
curl -s "https://kairossignal.com/v1/revisions?symbol=IO" | python3 -m json.tool
# 2) The estate-wide feed (every network, both sides of every diff):
curl -s "https://kairossignal.com/v1/revisions" | python3 -m json.tool | head -80
# 3) io.net's own explorer API (the first-party endpoint 17,786 rows came from):
curl -s -H "User-Agent: kairos-check" "https://api.io.solutions/v1/io-explorer/network/inventory-aggregated" | python3 -m json.tool | head -40
# 4) This estate's public API row for IO (grades + provenance):
curl -s "https://kairossignal.com/v1/network/IO" | python3 -m json.tool | head -60
# 5) The public daily snapshot of the ledger (frozen copy):
curl -s -o /dev/null -w "%{http_code}\n" "https://kairossignal.com/revision-ledger/REVISIONS_20260902.json"
Get this network as a data feed. Every number here is one API call away, with the same provenance fields — including the revision feed itself. Pricing · Self-register for free $5 API credits — no card, no human · API reference. Machine-readable row for this network: /v1/network/IO.

Method & honesty notes. All counts are queries against the live ledger at generation time, not restamped copy — this page is regenerated by gen_revision_page_io.py and the hourly claim_drift_check.py run grades its claims against the live API like every other published surface. The IO revision count is the live result of SELECT count() FROM default.depin_revision_ledger WHERE network='IO'; the page refuses to ship if the served /v1/revisions?symbol=IO disagrees with it. The 18 estate-wide events shown are deduped on revision identity (deterministic hash of network, metric, current_date, prior_date) exactly as the API dedupes them; detected_at is the first detection and never moves. Series absent from a section are absent, not zero: the ledger for IO is genuinely empty today, and this page says so instead of inventing restatements. Upstream probes ran serially by this generator immediately before rendering: io.net explorer inventory API (first-party) HTTP 200; estate /v1/revisions?symbol=IO HTTP 200; estate /v1/network/IO HTTP 200.

Machine-generated 2026-09-02T18:16:48Z by propintel/gen_revision_page_io.py · source of truth: default.depin_catalog, default.depin_onchain, default.depin_daily, default.depin_revision_ledger (ClickHouse, live at generation) · Kairos Signal — provenance or silence.