{
  "checked_at": "2026-08-09T12:22:50.050Z",
  "reference": 1356068,
  "spark_consensus": 10,
  "spark_sethash_consensus": "g6VmrTEQdjWV+1qY1AoVEDazmD0v2XX4lCMLOpe54NU=",
  "anonset_checked_at": null,
  "endpoints": [
    {
      "id": "firo-core-0",
      "name": "Firo Core electrumx",
      "operator": "Firo Core",
      "host": "electrumx.firo.org",
      "port": 50002,
      "used_by": [
        "Campfire",
        "Stack Wallet",
        "Electrum-Firo"
      ],
      "ok": true,
      "height": 1356068,
      "latency_ms": 24791,
      "version": "ElectrumX 1.19.0",
      "spark_latest_coin_id": 10,
      "tls_valid_to": "2026-09-29T01:06:49.000Z",
      "tls_days_left": 50,
      "error": null,
      "lag": 0,
      "spark_consistent": true,
      "anonset": {
        "ok": true,
        "ms": 156885,
        "coins": 23098,
        "mb": 32,
        "setHash": "g6VmrTEQdjWV+1qY1AoVEDazmD0v2XX4lCMLOpe54NU=",
        "group": 10,
        "error": null,
        "consistent": true
      },
      "status_reasons": [],
      "status": "green"
    },
    {
      "id": "firo-core-1",
      "name": "Firo Core electrumx01",
      "operator": "Firo Core",
      "host": "electrumx01.firo.org",
      "port": 50002,
      "used_by": [
        "Campfire",
        "Stack Wallet",
        "Electrum-Firo"
      ],
      "ok": true,
      "height": 1356068,
      "latency_ms": 24787,
      "version": "ElectrumX 1.19.0",
      "spark_latest_coin_id": 10,
      "tls_valid_to": "2026-09-27T01:38:57.000Z",
      "tls_days_left": 48,
      "error": null,
      "lag": 0,
      "spark_consistent": true,
      "anonset": {
        "ok": true,
        "ms": 84523,
        "coins": 23098,
        "mb": 32,
        "setHash": "g6VmrTEQdjWV+1qY1AoVEDazmD0v2XX4lCMLOpe54NU=",
        "group": 10,
        "error": null,
        "consistent": true
      },
      "status_reasons": [],
      "status": "green"
    },
    {
      "id": "firo-core-2",
      "name": "Firo Core electrumx02",
      "operator": "Firo Core",
      "host": "electrumx02.firo.org",
      "port": 50002,
      "used_by": [
        "Campfire",
        "Stack Wallet",
        "Electrum-Firo"
      ],
      "ok": true,
      "height": 1356068,
      "latency_ms": 32476,
      "version": "ElectrumX 1.19.0",
      "spark_latest_coin_id": 10,
      "tls_valid_to": "2026-09-27T01:35:28.000Z",
      "tls_days_left": 48,
      "error": null,
      "lag": 0,
      "spark_consistent": true,
      "anonset": {
        "ok": true,
        "ms": 77891,
        "coins": 23099,
        "mb": 32,
        "setHash": "cdMvAygYlMGaVVo3IMnWPxdIhTA1BypkHYPUKX3GdNA=",
        "group": 10,
        "error": null,
        "consistent": false
      },
      "status_reasons": [
        "setHash ≠ fleet consensus"
      ],
      "status": "yellow"
    },
    {
      "id": "firo-core-3",
      "name": "Firo Core electrumx03",
      "operator": "Firo Core",
      "host": "electrumx03.firo.org",
      "port": 50002,
      "used_by": [
        "Campfire",
        "Stack Wallet",
        "Electrum-Firo"
      ],
      "ok": true,
      "height": 1356068,
      "latency_ms": 32475,
      "version": "ElectrumX 1.19.0",
      "spark_latest_coin_id": 10,
      "tls_valid_to": "2026-10-29T02:35:25.000Z",
      "tls_days_left": 80,
      "error": null,
      "lag": 0,
      "spark_consistent": true,
      "anonset": null,
      "status_reasons": [],
      "status": "green"
    },
    {
      "id": "stackwallet",
      "name": "Stack Wallet",
      "operator": "Cypher Stack",
      "host": "firo.stackwallet.com",
      "port": 50002,
      "used_by": [
        "Stack Wallet",
        "Campfire",
        "Electrum-Firo"
      ],
      "ok": true,
      "height": 1356068,
      "latency_ms": 32474,
      "version": "ElectrumX 1.19.0",
      "spark_latest_coin_id": 10,
      "tls_valid_to": "2026-10-16T10:37:01.000Z",
      "tls_days_left": 67,
      "error": null,
      "lag": 0,
      "spark_consistent": true,
      "anonset": null,
      "status_reasons": [],
      "status": "green"
    },
    {
      "id": "mathnodes",
      "name": "MathNodes",
      "operator": "MathNodes",
      "host": "firo.mathnodes.com",
      "port": 50002,
      "used_by": [
        "Electrum-Firo",
        "Campfire",
        "Stack Wallet"
      ],
      "ok": true,
      "height": 1356068,
      "latency_ms": 32474,
      "version": "ElectrumX 1.16.0",
      "spark_latest_coin_id": 10,
      "tls_valid_to": "2026-10-11T13:14:02.000Z",
      "tls_days_left": 63,
      "error": null,
      "lag": 0,
      "spark_consistent": true,
      "anonset": null,
      "status_reasons": [],
      "status": "green"
    }
  ],
  "summary": {
    "total": 6,
    "green": 5,
    "yellow": 1,
    "red": 0
  },
  "stats": {
    "avg_latency": 29913,
    "median_latency": 32474,
    "probe_rtt_yellow_threshold_ms": 81185,
    "fastest": 24787,
    "slowest": 32476,
    "max_lag": 0,
    "reachable": 6,
    "spark_group": 10,
    "anonset_mb": 32,
    "anonset_coins": 23098,
    "anonset_ms": 84523,
    "anonset_slow_threshold_ms": 147915,
    "anonset_slow": 1
  },
  "polling": false,
  "anonset_source": "live",
  "meta": {
    "purpose": "Shared fleet telemetry for public Firo Electrum backends: tip freshness, Spark coin group and setHash consistency, and anonymity set fetch health.",
    "audience": [
      "firo_community",
      "wallet_and_mobile_developers",
      "electrum_operators",
      "core_and_tooling"
    ],
    "complements": "Wallet Electrum clients talk to one host. This API watches the curated public fleet so the Firo community can share tip and Spark health without each app re downloading a full anon set for monitoring.",
    "not_for": [
      "in_wallet_server_picker",
      "replace_wallet_electrum_or_spark_sdk",
      "user_device_rtt_ranking",
      "authoritative_chain_state"
    ],
    "docs": "/api/docs",
    "spark": "/api/spark",
    "ci": "/api/ci",
    "latency_note": "latency_ms is probe RTT from this monitor only. Secondary to lag and Spark consistency. Not user device RTT.",
    "probe_region": "single region monitor host",
    "probes": {
      "light": [
        "server.version",
        "blockchain.headers.subscribe",
        "spark.getsparklatestcoinid"
      ],
      "heavy": [
        "spark.getsparkanonymityset"
      ]
    },
    "status_rules": {
      "green_max_lag": 2,
      "yellow_probe_rtt_ms": "fleet-relative: max(5000, 2.5× median probe RTT)",
      "red_lag": 100,
      "yellow_tls_days_left": 14,
      "red_tls_expired": true,
      "note": "green requires Spark coin id present and matching; setHash match when anonset measurement exists. setHash mismatch alone yields yellow even at lag 0. TLS cert <14 days → yellow; expired → red."
    },
    "history": {
      "route": "/api/history",
      "storage": "sqlite on always-on; none on Vercel preview (available:false stub)",
      "uptime_definition": "percent of samples with status=green (strict)"
    },
    "vs_height_only": {
      "height_only": [
        "ok",
        "height",
        "lag"
      ],
      "spark_extra": [
        "spark_latest_coin_id",
        "spark_consistent",
        "anonset.*",
        "spark_sethash_consensus"
      ]
    }
  }
}