Last active
April 7, 2025 14:30
-
-
Save ksmithbaylor/5cf4c948fa6395f18afba122546d030c to your computer and use it in GitHub Desktop.
Bitcoin Total Supply Calculation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'bigdecimal' | |
def btc(n) | |
value = BigDecimal(n) / 1_0000_0000 | |
a, b = value.to_s('F').split('.') | |
"#{a}.#{b.ljust(8, '0')} BTC" | |
end | |
BLOCKS_PER_HALVING = 210_000 | |
INITIAL_REWARD = 50_0000_0000 | |
total_supply = 0 | |
(0..).each do |i| | |
divisor = 2 ** i | |
reward = INITIAL_REWARD / divisor | |
break if reward == 0 | |
halving_total = reward * BLOCKS_PER_HALVING | |
old_supply = total_supply | |
total_supply += halving_total | |
puts "Halving #{i}:" | |
puts " block reward = 50.00000000 / 2 ^ #{divisor} = #{btc(reward)}" | |
puts " halving total = 210,000 blocks x #{btc(reward)} = #{btc(halving_total)}" | |
puts " total supply = #{btc(old_supply)} + #{btc(halving_total)} = #{btc(total_supply)}" | |
puts | |
end | |
puts "Block reward is now 0!" | |
puts "Final total supply is #{btc(total_supply)}" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Halving 0: | |
block reward = 50.00000000 / 2 ^ 1 = 50.00000000 BTC | |
halving total = 210,000 blocks x 50.00000000 BTC = 10500000.00000000 BTC | |
total supply = 0.00000000 BTC + 10500000.00000000 BTC = 10500000.00000000 BTC | |
Halving 1: | |
block reward = 50.00000000 / 2 ^ 2 = 25.00000000 BTC | |
halving total = 210,000 blocks x 25.00000000 BTC = 5250000.00000000 BTC | |
total supply = 10500000.00000000 BTC + 5250000.00000000 BTC = 15750000.00000000 BTC | |
Halving 2: | |
block reward = 50.00000000 / 2 ^ 4 = 12.50000000 BTC | |
halving total = 210,000 blocks x 12.50000000 BTC = 2625000.00000000 BTC | |
total supply = 15750000.00000000 BTC + 2625000.00000000 BTC = 18375000.00000000 BTC | |
Halving 3: | |
block reward = 50.00000000 / 2 ^ 8 = 6.25000000 BTC | |
halving total = 210,000 blocks x 6.25000000 BTC = 1312500.00000000 BTC | |
total supply = 18375000.00000000 BTC + 1312500.00000000 BTC = 19687500.00000000 BTC | |
Halving 4: | |
block reward = 50.00000000 / 2 ^ 16 = 3.12500000 BTC | |
halving total = 210,000 blocks x 3.12500000 BTC = 656250.00000000 BTC | |
total supply = 19687500.00000000 BTC + 656250.00000000 BTC = 20343750.00000000 BTC | |
Halving 5: | |
block reward = 50.00000000 / 2 ^ 32 = 1.56250000 BTC | |
halving total = 210,000 blocks x 1.56250000 BTC = 328125.00000000 BTC | |
total supply = 20343750.00000000 BTC + 328125.00000000 BTC = 20671875.00000000 BTC | |
Halving 6: | |
block reward = 50.00000000 / 2 ^ 64 = 0.78125000 BTC | |
halving total = 210,000 blocks x 0.78125000 BTC = 164062.50000000 BTC | |
total supply = 20671875.00000000 BTC + 164062.50000000 BTC = 20835937.50000000 BTC | |
Halving 7: | |
block reward = 50.00000000 / 2 ^ 128 = 0.39062500 BTC | |
halving total = 210,000 blocks x 0.39062500 BTC = 82031.25000000 BTC | |
total supply = 20835937.50000000 BTC + 82031.25000000 BTC = 20917968.75000000 BTC | |
Halving 8: | |
block reward = 50.00000000 / 2 ^ 256 = 0.19531250 BTC | |
halving total = 210,000 blocks x 0.19531250 BTC = 41015.62500000 BTC | |
total supply = 20917968.75000000 BTC + 41015.62500000 BTC = 20958984.37500000 BTC | |
Halving 9: | |
block reward = 50.00000000 / 2 ^ 512 = 0.09765625 BTC | |
halving total = 210,000 blocks x 0.09765625 BTC = 20507.81250000 BTC | |
total supply = 20958984.37500000 BTC + 20507.81250000 BTC = 20979492.18750000 BTC | |
Halving 10: | |
block reward = 50.00000000 / 2 ^ 1024 = 0.04882812 BTC | |
halving total = 210,000 blocks x 0.04882812 BTC = 10253.90520000 BTC | |
total supply = 20979492.18750000 BTC + 10253.90520000 BTC = 20989746.09270000 BTC | |
Halving 11: | |
block reward = 50.00000000 / 2 ^ 2048 = 0.02441406 BTC | |
halving total = 210,000 blocks x 0.02441406 BTC = 5126.95260000 BTC | |
total supply = 20989746.09270000 BTC + 5126.95260000 BTC = 20994873.04530000 BTC | |
Halving 12: | |
block reward = 50.00000000 / 2 ^ 4096 = 0.01220703 BTC | |
halving total = 210,000 blocks x 0.01220703 BTC = 2563.47630000 BTC | |
total supply = 20994873.04530000 BTC + 2563.47630000 BTC = 20997436.52160000 BTC | |
Halving 13: | |
block reward = 50.00000000 / 2 ^ 8192 = 0.00610351 BTC | |
halving total = 210,000 blocks x 0.00610351 BTC = 1281.73710000 BTC | |
total supply = 20997436.52160000 BTC + 1281.73710000 BTC = 20998718.25870000 BTC | |
Halving 14: | |
block reward = 50.00000000 / 2 ^ 16384 = 0.00305175 BTC | |
halving total = 210,000 blocks x 0.00305175 BTC = 640.86750000 BTC | |
total supply = 20998718.25870000 BTC + 640.86750000 BTC = 20999359.12620000 BTC | |
Halving 15: | |
block reward = 50.00000000 / 2 ^ 32768 = 0.00152587 BTC | |
halving total = 210,000 blocks x 0.00152587 BTC = 320.43270000 BTC | |
total supply = 20999359.12620000 BTC + 320.43270000 BTC = 20999679.55890000 BTC | |
Halving 16: | |
block reward = 50.00000000 / 2 ^ 65536 = 0.00076293 BTC | |
halving total = 210,000 blocks x 0.00076293 BTC = 160.21530000 BTC | |
total supply = 20999679.55890000 BTC + 160.21530000 BTC = 20999839.77420000 BTC | |
Halving 17: | |
block reward = 50.00000000 / 2 ^ 131072 = 0.00038146 BTC | |
halving total = 210,000 blocks x 0.00038146 BTC = 80.10660000 BTC | |
total supply = 20999839.77420000 BTC + 80.10660000 BTC = 20999919.88080000 BTC | |
Halving 18: | |
block reward = 50.00000000 / 2 ^ 262144 = 0.00019073 BTC | |
halving total = 210,000 blocks x 0.00019073 BTC = 40.05330000 BTC | |
total supply = 20999919.88080000 BTC + 40.05330000 BTC = 20999959.93410000 BTC | |
Halving 19: | |
block reward = 50.00000000 / 2 ^ 524288 = 0.00009536 BTC | |
halving total = 210,000 blocks x 0.00009536 BTC = 20.02560000 BTC | |
total supply = 20999959.93410000 BTC + 20.02560000 BTC = 20999979.95970000 BTC | |
Halving 20: | |
block reward = 50.00000000 / 2 ^ 1048576 = 0.00004768 BTC | |
halving total = 210,000 blocks x 0.00004768 BTC = 10.01280000 BTC | |
total supply = 20999979.95970000 BTC + 10.01280000 BTC = 20999989.97250000 BTC | |
Halving 21: | |
block reward = 50.00000000 / 2 ^ 2097152 = 0.00002384 BTC | |
halving total = 210,000 blocks x 0.00002384 BTC = 5.00640000 BTC | |
total supply = 20999989.97250000 BTC + 5.00640000 BTC = 20999994.97890000 BTC | |
Halving 22: | |
block reward = 50.00000000 / 2 ^ 4194304 = 0.00001192 BTC | |
halving total = 210,000 blocks x 0.00001192 BTC = 2.50320000 BTC | |
total supply = 20999994.97890000 BTC + 2.50320000 BTC = 20999997.48210000 BTC | |
Halving 23: | |
block reward = 50.00000000 / 2 ^ 8388608 = 0.00000596 BTC | |
halving total = 210,000 blocks x 0.00000596 BTC = 1.25160000 BTC | |
total supply = 20999997.48210000 BTC + 1.25160000 BTC = 20999998.73370000 BTC | |
Halving 24: | |
block reward = 50.00000000 / 2 ^ 16777216 = 0.00000298 BTC | |
halving total = 210,000 blocks x 0.00000298 BTC = 0.62580000 BTC | |
total supply = 20999998.73370000 BTC + 0.62580000 BTC = 20999999.35950000 BTC | |
Halving 25: | |
block reward = 50.00000000 / 2 ^ 33554432 = 0.00000149 BTC | |
halving total = 210,000 blocks x 0.00000149 BTC = 0.31290000 BTC | |
total supply = 20999999.35950000 BTC + 0.31290000 BTC = 20999999.67240000 BTC | |
Halving 26: | |
block reward = 50.00000000 / 2 ^ 67108864 = 0.00000074 BTC | |
halving total = 210,000 blocks x 0.00000074 BTC = 0.15540000 BTC | |
total supply = 20999999.67240000 BTC + 0.15540000 BTC = 20999999.82780000 BTC | |
Halving 27: | |
block reward = 50.00000000 / 2 ^ 134217728 = 0.00000037 BTC | |
halving total = 210,000 blocks x 0.00000037 BTC = 0.07770000 BTC | |
total supply = 20999999.82780000 BTC + 0.07770000 BTC = 20999999.90550000 BTC | |
Halving 28: | |
block reward = 50.00000000 / 2 ^ 268435456 = 0.00000018 BTC | |
halving total = 210,000 blocks x 0.00000018 BTC = 0.03780000 BTC | |
total supply = 20999999.90550000 BTC + 0.03780000 BTC = 20999999.94330000 BTC | |
Halving 29: | |
block reward = 50.00000000 / 2 ^ 536870912 = 0.00000009 BTC | |
halving total = 210,000 blocks x 0.00000009 BTC = 0.01890000 BTC | |
total supply = 20999999.94330000 BTC + 0.01890000 BTC = 20999999.96220000 BTC | |
Halving 30: | |
block reward = 50.00000000 / 2 ^ 1073741824 = 0.00000004 BTC | |
halving total = 210,000 blocks x 0.00000004 BTC = 0.00840000 BTC | |
total supply = 20999999.96220000 BTC + 0.00840000 BTC = 20999999.97060000 BTC | |
Halving 31: | |
block reward = 50.00000000 / 2 ^ 2147483648 = 0.00000002 BTC | |
halving total = 210,000 blocks x 0.00000002 BTC = 0.00420000 BTC | |
total supply = 20999999.97060000 BTC + 0.00420000 BTC = 20999999.97480000 BTC | |
Halving 32: | |
block reward = 50.00000000 / 2 ^ 4294967296 = 0.00000001 BTC | |
halving total = 210,000 blocks x 0.00000001 BTC = 0.00210000 BTC | |
total supply = 20999999.97480000 BTC + 0.00210000 BTC = 20999999.97690000 BTC | |
Block reward is now 0! | |
Final total supply is 20999999.97690000 BTC |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment