# How Bitcoin network hashrate is estimated

Have you ever wondered how to know how much mining hashpower is currently mining Bitcoin? There is a way to estimate without knowing all of the miners and details about their equipment (hint this is practically impossible).

### Quick Explanation

We know how often a block is being solved, and we can calculated the number of hashes (on average) it will take to solve a block (at the current difficulty). From this information we can estimate the total network hashrate (Hashes/second).

### Script

I know you just want a script to calculate it, so here is a python script. Usage: `\$ btc_hashrate <blocks-24h> <current-difficulty>`

### Math Formulas

Let’s see how we arrive at:

Let’s say we know that in the last 24h 155 blocks have been solved, so `blocks24h = 155`. We also know at 10 min block times, there should be an average of `blocksexpected = 144` (note this indicates the difficulty is too low, since they are being solved more quickly).

We know the current difficulty is 7,184,404,942,701. The number of hashes to find a block (on average), also known as the work ω required is:

Where the `hashmax` is just the max 32 byte number or 2²⁵⁶, and `target` is the current target, which is calculated from the difficulty as:

The `targetmax` is the highest (and therefore easiest) hash that was considered valid in Bitcoin (the genesis block’s target), and was `0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff.`

Then, substituting these values, we can simplify:

We need to account for the actual block rate by multiplying the work with the actual rate `(actualblocks/expectedblocks) * work`. We also need to divide by the number of seconds per block `600` .

Substituting, this give us:

Using wolframalpha: