LithosDocs
ProtocolPayoutsTokenStatsDocs
Start mining
Documentation home
Protocol
  • Lithos Protocol
  • LFSM
    • Rollups
    • NISPs
    • Emissions
    • Mining on Lithos
    • Candidate building
    • Ergo Voting
  • LithosDex
    • Trading with orders
    • Providing liquidity
Run Lithos
  • Startup guide
    • Setting up an Ergo testnet node
  • Configuration
    • Node connection and security
    • Stratum and difficulty
    • Block packages
    • Batching and orders
    • Collateral and emission
    • Wallet and consolidation
    • Statistics and web panels
    • Synchronization and storage
    • Tasks and dispatchers
    • Failure modes
    • Reporting issues
Client API
  • Overview
    • getLithos client information
    • getList UTXO ids for blocks
    • getUTXO ids by block height
    • getBlock info by UTXO id
    • postBlock info for multiple UTXO ids
    • getGet a block's miner set
    • getList all pool blocks
    • getGet Lithos payouts
    • getStatistics overview
    • getMining and payment totals
    • getMining statistics by hour or day
    • getEstimate Lithos hashrate
    • getNetwork difficulty by epoch
    • getThis client's own hashrate
    • getThis client's hashrate over time
    • getThis client's payouts and claims
    • getCollateral inventory
    • getLocal mining activity
    • getCollateral market snapshot
    • getList queue boxes
    • getList the active set
    • getPermit price history
    • getYour locked block rewards
    • postClaim unlocked block rewards
    • postQuote joining the queue
    • postJoin the collateral queue
    • getLithosDex pool state
    • getLithosDex fee vault state
    • getList your outstanding orders
    • postQuote a swap order
    • postPlace a swap order
    • postQuote a deposit order
    • postPlace a deposit order
    • postQuote a redeem order
    • postPlace a redeem order
    • postCancel an order
    • postQuote a swap
    • postQuote a swap by desired output
    • postExecute a swap
    • postQuote a liquidity deposit
    • postDeposit liquidity
    • postQuote a liquidity redemption
    • postRedeem liquidity
    • getList liquidity provisions
    • postClaim settled fees for a provision
    • postQuote a provision resize
    • postResize a provision
    • postCheck a pending fee flush
    • postFlush pending fees to the vault
    • getPool-wide fee history
    • getPool price history
    • getRecent pool activity
    • getFee history for one provision
    • getWallet balances and lending status
    • getGet Stratum information
    • getGet candidate settings
    • getGet difficulty commitment
    • postCommit a difficulty
    • getGet best NISP at height
Lithos

A decentralized mining pool protocol on Ergo. Miners build their own blocks; contracts pay them for proven work.

Live on Ergo mainnet
Protocol
  • How Lithos works
  • Mining on Lithos
  • NISPs
  • Emissions
  • LFSM contracts
Run Lithos
  • Startup guide
  • Configuration
  • LithosDex
  • Client API
  • Failure modes
Network
  • Live stats
  • Public stats API
  • Ergo Platform↗
  • SOAT Miner↗
Community
  • Telegram↗
  • X / Twitter↗
  • GitHub↗
Lithos
© 2026 Lithos Protocol. Open source under the MIT licence.λίθος — stone
Docs/Client API/Statistics

Estimate Lithos hashrate

get/stats/mining/hashrate

Estimates the hashrate behind Lithos blocks: the network difficulty of every confirmed block carrying a configured Lithos genesis, added up and divided by the seconds covered. A chain block counts once however many genesis transactions it holds. This measures the miners producing those blocks — not this client's workers, and not all of Ergo. Claimed NISP scores are never used.

Range and interval rules match /stats/mining/buckets. The returned from and until are the period actually covered once clipped to retained history and the processed tip, and partial says the request reached past it. With no work or no usable time the status is insufficient-data and hashesPerSecond is left out rather than reported as zero; fewer than 20 sampled blocks is sparse. Read both status and sourceStatus — sampling quality and data freshness are different things.

relativeSamplingError is 1 / sqrt(sampleCount), which assumes blocks arrive as a Poisson process. It is a rough relative error, not a confidence interval, and it says nothing about whether miner participation held steady. Compare short or sparse windows carefully.

Query parameters

  • frominteger · int64required

    Inclusive start in Unix milliseconds, on a UTC hour or day boundary to match interval.

  • untilinteger · int64required

    Exclusive end in Unix milliseconds. On the same boundary, later than from, and at most 500 intervals after it.

  • intervalstringdefault "hour"hour | day

    Bucket size. Both range boundaries must be a whole number of these since the Unix epoch.

Responses

200An estimate, or an explicit insufficient-data result, with coverage and sample count.LithosHashrateEstimate▶
  • statusstringrequired

    Sampling quality, separate from source freshness. sparse means fewer than 20 sampled blocks.

    one ofinsufficient-datasparseestimated
  • sourceStatusstringrequired

    How far collection has got. ready means it reached the last checked chain tip. catching-up and recovering mean replay or reorg work is still running, stale means the last successful check is too old, and unavailable means collection failed. On disabled or loading the numbers are not evidence that the period was quiet.

    one ofdisabledloadingreadystaleunavailablecatching-uprecovering
  • ▶
    sourceMiningCursorrequired

    The processed chain point a statistics result was read from.

    • heightintegerrequired
    • blockIdstringrequired
    • parentIdstringrequired
    • timestampinteger · int64required

      The block's own timestamp in Unix milliseconds, not the time the client read it.

  • frominteger · int64required

    Start of the covered period in Unix milliseconds, clipped to retained history.

  • untilinteger · int64required

    End of the covered period in Unix milliseconds, clipped to the processed tip. Equals from when no usable time is left.

  • sampleCountinteger · int64required

    Distinct chain blocks in the selected buckets that carried a configured Lithos genesis.

    0 – …
  • difficultySumstringrequired

    An exact nonnegative integer as a decimal string. Parse it without going through a float.

    decimal string
  • hashesPerSecondstring

    The estimate in whole hashes per second. Left out rather than reported as zero when there is not enough data.

    decimal string
  • relativeSamplingErrornumber · double

    Rough relative standard error, 1 / sqrt(sampleCount). 0.2 means about 20%. Omitted with zero samples.

  • partialbooleanrequired

    Whether the requested range reaches past retained coverage.

  • populationstringrequired
    one ofminers-producing-configured-lithos-genesis
  • formulastringrequired
    one ofsum-confirmed-lithos-block-difficulty/covered-seconds
400A timestamp is missing, malformed, off a bucket boundary, or the range is too long; or `interval` is not hour or day.ApiError▶
  • errorintegerrequired

    Error code

  • reasonstringrequired

    Error message explaining the reason of the error

  • detailstringrequirednullable

    Detailed error description

503History is loading, disabled, busy, or unreadable. Check `mining.status` in /stats before retrying.ApiError▶
  • errorintegerrequired

    Error code

  • reasonstringrequired

    Error message explaining the reason of the error

  • detailstringrequirednullable

    Detailed error description

← PreviousMining statistics by hour or dayNext →Network difficulty by epoch
Request
curl -X GET "http://localhost:9000/stats/mining/hashrate?from=0&until=1"
Response
{
  "status": "insufficient-data",
  "sourceStatus": "disabled",
  "source": {
    "height": 0,
    "blockId": "string",
    "parentId": "string",
    "timestamp": 0
  },
  "from": 0,
  "until": 0,
  "sampleCount": 0,
  "difficultySum": "1000000000",
  "hashesPerSecond": "0",
  "relativeSamplingError": 0,
  "partial": true,
  "population": "miners-producing-configured-lithos-genesis",
  "formula": "sum-confirmed-lithos-block-difficulty/covered-seconds"
}