Solo Mining Census method
What this is
The Solo Mining Census reads every Bitcoin solo pool that publishes its numbers, once an hour, from each pool's own public endpoint, and freezes every full week into an edition that is never edited afterwards.
We run one of these pools. SoloLuck is read on the same terms as every other pool, from the same kind of public feed. SoloLuck has not found a Bitcoin block.
The latest figures and every weekly edition are on the Solo Mining Census page.
What is read
One public endpoint per source, each the pool's own. We run one of these pools, and it is read the same way as the rest.
| Source | Endpoint | Fields used | Hashrate window |
|---|---|---|---|
| CKPool Solo (total) | https://raw.stats.ckpool.org/pool/pool.status | Users, Workers, hashrate1hr | 1 hour |
| CKPool Solo endpoints | https://{solo,eusolo,ausolo,sgsolo,uwsolo,uesolo}.ckpool.org/pool/pool.status | Users, Workers, hashrate1hr | 1 hour |
| Public Pool | https://public-pool.io:40557/api/pool | totalMiners, totalHashRate, blocksFound | 10 to 20 minutes per device, cached 5 minutes |
| Public Pool devices | https://public-pool.io:40557/api/info | userAgents: name, count, totalHashRate, bestDifficulty | as above, cached 1 minute |
| SoloPool.org (Bitcoin) | https://btc.solopool.org/api/stats | totalMiners, totalWorkers, hashrate, totalBlocks | not stated by the pool |
| AtlasPool | https://atlaspool.io/pool/pool.status | miners, hashrate1hr | 1 hour |
| NerdMiners.org pool | https://pool.nerdminers.org/pool/pool.status | Users, Workers, hashrate1hr | 1 hour |
| NerdMiner Pool | https://pool.nerdminer.io/api/pool | Users, Workers, hashrate1hr | 1 hour |
| SoloLuck (we run it) | https://sololuck.io/api/public | miners, workers, hashrate 1h, split, blocks, netinfo.difficulty | 1 hour |
Pools that publish nothing are listed as not published: the usual stats paths were requested and each answered with its web app's HTML rather than data. Braiins Solo was checked on 2026-09-11. Some endpoints include miner addresses, worker names or session ids; the collector drops them while parsing and never stores them.
How it is read
- Once an hour, at seven minutes past, by a timer on the SoloLuck.io web server. Each read is one HTTP GET with a 10-second timeout and a 1 MB cap; nothing connects to a stratum port and nothing logs in.
- It identifies itself as
SoloLuckCensus/1.0 (+https://sololuck.io/census/method), follows no redirect to another host, and refuses an HTML page where data was expected. - Every hour appends one row of fresh readings to the monthly file. A source that fails adds its error to that row, never an old number.
- The pages show each pool's last good reading with its age. A reading older than three hours is marked and left out of the hashrate sum.
- This web server only reads the files the timer writes; a page request never contacts another pool.
Weekly editions
- An edition is one ISO week, Monday 00:00 to Monday 00:00 UTC, frozen by the first run after Monday 00:05 UTC.
- Every figure in it is the median of that week's hourly readings, one reading per hour. coverage gives the hours that had a reading, out of 168. A week with fewer than 84 is not frozen and is listed as skipped.
- Each edition is a JSON file and a CSV file. The JSON carries the CSV's sha256 and the sha256 of its own data; each edition page prints the sha256 of both files as served.
- A frozen file is never rewritten. A correction is a new file (
2026-W38-r2) that names the edition it replaces, and both stay published.
The headline numbers
- Solo hashrate is the sum of each pool's weekly median hashrate, in the window each pool publishes (see the table above). Pools that publish nothing are not in it, so it is a floor.
- Miners and workers are shown as each pool publishes them and are never added together: CKPool counts addresses, Public Pool counts connected devices, and a sum would mix the two.
- Average Bitaxe is, for each hour, the combined hashrate of the devices Public Pool lists under the name
bitaxedivided by their number; an edition gives the median hour. - Chance any home miner solves a Bitcoin block this month is
1 − exp(−(H_home ÷ H_net) × 4,383).H_homeis the combined hashrate of Public Pool'sbitaxeandNerdQAxe++devices.H_netisD × 2^32 ÷ 600, with D the network difficulty read from SoloLuck's own Bitcoin node. 4,383 is the number of 600-second block intervals in an average month of 30.44 days. Every home miner outside those two device names, on Public Pool or any other pool, can only raise the figure, so it is a lower bound. It assumes the week's hashrate holds for the month.
Why CKPool's endpoints are not added to its total
CKPool's own front page gives raw.stats.ckpool.org/pool as its total pool statistics. On 2026-09-11 that name resolved to the same addresses as uesolo.ckpool.org (51.81.56.15 and 2604:2dc0:100:240f::1). In the reading taken at 12:09 UTC that day the total counted 32,487 users against 31,684 across solo., eusolo., ausolo., sgsolo. and uwsolo.ckpool.org, and 217P of 1-hour hashrate against 188P; uesolo.ckpool.org itself reported 32,473 users and the same 217P. The total's best share was exactly the eusolo endpoint's, 42,158,485,242,557. So the endpoint figures are parts of the total, and adding them to it would count about 32,000 users twice.
The collector repeats that comparison every hour and stores it with the reading, so a change in how CKPool reports shows up in the data rather than in a wrong total.
SoloLuck in the census
We run one of these pools. Its row is read from /api/public, the same public feed the rest of the site uses, which merges every SoloLuck Bitcoin pool. Its miner and worker counts include the operator's own machines, and the census states how many under the pool table. Its block count comes from the site's own record of solved Bitcoin blocks. SoloLuck has not found a Bitcoin block.
Reuse
The data is licensed CC BY 4.0. Latest reading: JSON · CSV. Editions: /api/census/v1/editions/<id>.json and .csv, also kept in the sololuckio/sololuck repository. Cite as: SoloLuck.io, Solo Mining Census, edition <id>, https://sololuck.io/census/<id>. Found an error, or a pool that should be here? Tell us. A pool that asks not to be read is removed from collection.
Method changes: 2026-09-11, first version.