{
  "schema": "bitfp.network.mining.methodology.v1",
  "status": "DEFINED_NOT_ACTIVE",
  "calculation_version": "bitfp.network.mining.calculation.v1",
  "canonical_metrics_endpoint": "https://bitfp.org/api/network/mining.json",
  "windows": ["1h", "24h", "7d", "30d"],
  "identity": {
    "name": "Active Mining Identity",
    "protocol_object": "WorkStatement.miner_commitment",
    "definition": "A distinct anonymous miner commitment carried by protocol-valid PartialWorkReceipt objects accepted into the canonical chain during the selected window.",
    "status": "DEFINED_NOT_ACTIVE",
    "not_equivalent_to": [
      "unique human",
      "unique machine",
      "network address",
      "BlockCandidate.proposer_commitment"
    ],
    "limitations": [
      "One human may control multiple mining identities.",
      "One mining identity may represent multiple machines.",
      "The metric measures protocol participation breadth, not human population."
    ]
  },
  "valid_work_policy": {
    "included": "Only canonical-chain work that passes all applicable protocol validation and admission checks.",
    "excluded": [
      "invalid receipts",
      "invalid proofs",
      "malformed work",
      "rejected work"
    ]
  },
  "metrics": {
    "active_mining_identities": "Distinct accepted PartialWorkReceipt miner commitments observed in the selected canonical-chain window.",
    "new_mining_identities": "Active Mining Identities whose first canonical accepted partial-work receipt is in the selected window, measured over the available canonical history.",
    "accepted_partial_work_receipts": "Count of protocol-valid PartialWorkReceipt objects admitted into canonical ReceiptBatchAdmission objects in the selected window.",
    "receipt_rate_per_second": "Accepted partial-work receipt count divided by the exact elapsed duration of the selected snapshot window.",
    "estimated_network_work_rate": "For each unique accepted work item, calculate floor(2^512 / (target + 1)) using its consensus target, de-duplicate a winning work item if it is also represented as a receipt, sum the work, and divide by the exact elapsed window duration. This is an accepted-work estimate, not a raw hash count.",
    "block_producer_identities": "Distinct BlockCandidate.proposer_commitment values on canonical blocks in the selected window. This is kept separate from receipt miner commitments.",
    "largest_mining_identity_work_share": "Largest share of accepted partial-work weight attributable to one Active Mining Identity in the selected window.",
    "top_1_percent_work_share": "Share of accepted partial-work weight attributable to the highest-contributing ceil(1% of active identities), with no minimum decentralization threshold implied.",
    "top_10_percent_work_share": "Share of accepted partial-work weight attributable to the highest-contributing ceil(10% of active identities), with no minimum decentralization threshold implied.",
    "hhi": "Sum of squared accepted-work shares across Active Mining Identities in the selected window.",
    "gini": "Standard Gini coefficient over non-negative accepted-work weights for Active Mining Identities in the selected window; undefined when no identity is active."
  },
  "snapshot_binding": {
    "required": [
      "network",
      "genesis_id",
      "block_height",
      "block_id",
      "time_window",
      "calculation_version",
      "generated_at"
    ],
    "reproducibility_identifier": "sha256 of the canonical versioned snapshot payload, excluding its sha256 field",
    "network_separation": "Testnet and mainnet snapshots have distinct network and genesis identities and must never be mirrored into one another."
  },
  "future_pipeline": [
    "BitFP node and public chain data",
    "validated event and indexing layer",
    "deterministic mining metrics calculator",
    "versioned chain-bound snapshot",
    "public JSON API",
    "website and autonomous agents"
  ],
  "privacy": {
    "aggregate_chain_derived_only": true,
    "prohibited": [
      "IP address",
      "precise location",
      "device serial number",
      "persistent hardware fingerprint",
      "hostname",
      "username",
      "diagnostic issue ID",
      "repair session ID",
      "private node metadata",
      "wallet private information",
      "backend telemetry identity"
    ]
  },
  "trust": {
    "site_is_root_of_trust": false,
    "informational": true,
    "optional": true,
    "reproducible_from_public_chain_data": true,
    "consensus_dependency": false,
    "validation_dependency": false,
    "mining_dependency": false
  }
}
