#!/usr/bin/env perl # Copyright 2016-2020 The Hush developers # Released under the GPLv3 use warnings; use strict; my $supply = 0.0; my $block = 0; my $satoshis = 100_000_000; my $amount = int(12.5*$satoshis); my $halvings = 0; # Usage: ./hush_supply &> supply.csv # Use this to calculate when supply hits a certain value #while ($supply <= 21_000_000*$satoshis) { # Use this to calculate when block rewards end while ($halvings <= 64 && $amount >= 1) { $block++; if ($block < 5) { $amount = 40_000 * $satoshis; } else { # Halving every 840000 blocks if ($block % 840_000 == 0) { $amount /= 2; $halvings++; } $amount = int(12.5*$satoshis) / (2**$halvings); } $supply += $amount; # block, current supply, block reward amount, number of halvings printf "%s,%s,%s,%s\n", $block,$supply / $satoshis, $amount / $satoshis, $halvings; }