Back to Documentation

Blockchain Analytics

Core metrics derived from Bitcoin blockchain data

Network Hashrate

The network hashrate represents the total computational power being applied to Bitcoin mining. It cannot be measured directly but is estimated from the difficulty and expected block time.

Theoretical Hashrate

The "theoretical" or "implied" hashrate assumes blocks are being found at exactly the 10-minute target rate. This is the standard industry method used by most analytics platforms.

Theoretical Hashrate Formula $$H = \frac{D \times 2^{32}}{T_{target}}$$
Where
$H$
Network hashrate (hashes per second)
$D$
Current difficulty
$2^{32}$
≈ 4.295 billion (scaling factor from Bitcoin's hash target)
$T_{target}$
Target block time = 600 seconds (10 minutes)

Actual Hashrate

The "actual" hashrate uses observed block times instead of the 10-minute target. This can show real-time fluctuations but is noisier due to mining variance.

Actual Hashrate Formula $$H_{actual} = \frac{D \times 2^{32}}{T_{observed}}$$
Where
$T_{observed}$
Average observed block time (seconds) over a lookback period
Industry Standard

ELEKTRON displays theoretical hashrate by default because it provides a stable baseline. Actual hashrate is available for epoch analysis and short-term monitoring.

Unit Conversions

Unit Value Typical Use
H/s 1 Base unit
TH/s $10^{12}$ Individual ASIC miners
PH/s $10^{15}$ Mining pools, farms
EH/s $10^{18}$ Network total

Difficulty & Adjustments

Bitcoin's difficulty adjusts every 2016 blocks (approximately 2 weeks) to maintain the 10-minute average block time target.

Difficulty Adjustment

Difficulty Adjustment Formula $$D_{new} = D_{old} \times \frac{T_{target}}{T_{actual}}$$
Where
$D_{new}$
New difficulty for next 2016 blocks
$D_{old}$
Previous difficulty
$T_{target}$
Target time for 2016 blocks = 2016 × 600 = 1,209,600 seconds
$T_{actual}$
Actual time taken for the previous 2016 blocks

Estimated Difficulty Change

We estimate the upcoming difficulty adjustment based on the current epoch's progress:

Estimated Change $$\Delta D_{est} = \left(\frac{T_{target}}{T_{projected}} - 1\right) \times 100\%$$
Where
$T_{projected}$
= $\bar{T}_{epoch} \times 2016$ (projected total epoch time)
$\bar{T}_{epoch}$
Average block time in current epoch so far
Limitation

Bitcoin limits difficulty changes to ±300% per adjustment to prevent extreme swings. In practice, changes rarely exceed ±15%.

Block Time Analysis

Block time is the duration between consecutive blocks. Due to the Poisson process of mining, actual block times follow an exponential distribution.

Expected Distribution

With a target mean of 10 minutes, block times follow:

Exponential Distribution $$P(T \leq t) = 1 - e^{-\lambda t}$$
Where
$\lambda$
= 1/600 (rate parameter, blocks per second)
$t$
Time in seconds

Block Interval Consistency Score

We calculate a consistency score showing how close observed block times are to target:

Consistency Score $$S_{consistency} = 100 - \frac{|\bar{T}_{observed} - T_{target}|}{T_{target}} \times 100$$

A score of 100 means blocks are being found exactly at the 10-minute target. Higher hashrate growth leads to faster blocks (score > 100 before adjustment).

Supply & Halvings

Block Subsidy Schedule

Bitcoin's block reward halves every 210,000 blocks (approximately 4 years):

Era Block Heights Subsidy (BTC) Approximate Date
1 0 - 209,999 50 2009 - 2012
2 210,000 - 419,999 25 2012 - 2016
3 420,000 - 629,999 12.5 2016 - 2020
4 630,000 - 839,999 6.25 2020 - 2024
5 840,000 - 1,049,999 3.125 2024 - 2028

Total Supply

Maximum Supply $$S_{max} = \sum_{i=0}^{32} 210000 \times \frac{50}{2^i} \approx 21,000,000 \text{ BTC}$$

Halving Projection

We estimate the next halving date using recent block time averages:

Days Until Halving $$D_{halving} = \frac{B_{remaining} \times \bar{T}_{recent}}{86400}$$
Where
$B_{remaining}$
= Next halving height - Current height
$\bar{T}_{recent}$
Average block time over last 2016 blocks (seconds)
86400
Seconds per day

Block Space Utilization

Block Weight

Since SegWit (2017), Bitcoin uses "weight units" instead of raw bytes:

Block Weight $$W = B_{base} \times 4 + B_{witness}$$
Where
$W$
Block weight (max 4,000,000 weight units)
$B_{base}$
Non-witness data size (bytes)
$B_{witness}$
Witness data size (bytes)

Utilization Percentage

Block Fullness $$U = \frac{W_{actual}}{W_{max}} \times 100\%$$

Empty Blocks

A block with only the coinbase transaction (n_tx = 1) is considered "empty." These typically occur when:

  • A miner finds a block before validating mempool transactions
  • SPV mining during block propagation (first few seconds)
  • Intentional empty block mining (rare)

Epoch Statistics

An "epoch" in Bitcoin refers to the 2016-block period between difficulty adjustments.

Epoch Progress

Epoch Progress $$P_{epoch} = \frac{H_{current} - H_{epoch\_start}}{2016} \times 100\%$$

Epoch-Based Hashrate

A more stable hashrate estimate using only current epoch data:

Epoch Hashrate $$H_{epoch} = \frac{D_{current} \times 2^{32}}{\bar{T}_{epoch}}$$
Interpretation

Epoch-based hashrate reflects the actual mining conditions since the last difficulty adjustment, while theoretical hashrate assumes perfect 10-minute blocks. The difference indicates whether hashrate is growing (faster blocks) or declining (slower blocks).