In solo mining, each attempt by your hardware to find a valid hash is an independent event with probability p = 1 / current_difficulty. The number of attempts until the first success follows a geometric distribution, which for very small values of p converges to an exponential distribution with mean 1/p.

How to calculate expected time to find a block

Expected time E[T] can be estimated with the formula: E[T] = difficulty / own_hashrate. As an example, for XMR with a network difficulty of 300 GH and a hashrate of 10 KH/s, E[T] = 300,000,000,000 / 10,000 = 30,000,000 seconds ≈ 347.2 days. With 1 MH/s, E[T] ≈ 3.47 days.

Variance and the "bad luck" problem

The standard deviation of an exponential distribution equals its mean. This means variance is very high: finding a block much earlier or much later than the expected time is entirely normal. Solo mining has high variance by definition: there is no smoothing mechanism like pool shares.

When solo mining is actually viable

  • XMR: with ≥ 100 KH/s expected time drops to weeks. With a modern CPU (several KH/s to tens of KH/s total), a server cluster can be competitive.
  • BTC: with expected hashes per block of the order of 10²³, you need petahashes for E[T] to be under a year. Only viable with latest-generation ASICs at scale.
  • BCH: the same formula as BTC but with an independently adjusted difficulty via ASERT. Usually much lower than BTC, though the ratio varies considerably.

Solo mining is not for everyone. But for those with sufficient hashrate, it is the cleanest way to receive a reward: no custodians, no distributed payouts, and the valid block hash as proof of work.

If you want to apply this maths to a specific network, choose XMR, BTC, or BCH first and work out how much waiting time and variance you can accept. Then use our guides to connect the pool with a wallet you control.