I am not able to understand how circulating supply is calculated by websites like CoinGecko. What does circulating supply mean here - is it the number of coins already minted? If so, how is that calculated?

  • The first blocks had a 50 BTC subsidy
  • The subsidy of block 0 is unspendable
  • This subsidy is cut in half every 210.000 blocks
  • Block height now is 704558

This script (in Ruby) calculates the total amount of Bitcoins issued.

#!/usr/bin/env ruby

# first 210.000 blocks get 50 BTC as subsidy.
# for every 210.000 blocks, the subsidy is cut in half.

# global constants

# given a block height, returns the subsidy for that block
def block_subsidy(block_height)
  epoch = block_height / BLOCKS_PER_EPOCH
  subsidy = 50 * SATOSHIS_PER_COIN
  subsidy >> epoch

# get block height from command line or use last block with subsidy
last_block = (ARGV[0] || 6929999).to_i

# total supply, use 0.0 to make it a float
total_supply = 0.0

# starts with 1 since subsidy of block 0 is unspendable
for height in 1..last_block
  total_supply += block_subsidy(height)

# show total supply in bitcoins
puts total_supply / SATOSHIS_PER_COIN

Having said that, there were some issues in some blocks, so the true total supply will be slightly less than this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.