Exactly simulate the Hush block reward until it hits zero at halving 31
This commit is contained in:
@@ -53,24 +53,38 @@ printf "# block, supply, reward, subsidy, fr, totalfr, halvings\n";
|
|||||||
# 12.5 * 100000000 / 32768 = 38146.97265625
|
# 12.5 * 100000000 / 32768 = 38146.97265625
|
||||||
# 12.5 * 100000000 / 65536 = 19073.486328125
|
# 12.5 * 100000000 / 65536 = 19073.486328125
|
||||||
|
|
||||||
|
# Hush Halving Heights and Block Rewards
|
||||||
|
# 1,12500000000,340000
|
||||||
# Halving Block Heights
|
# 2,312500000,2020000
|
||||||
# 340000 + 1680000 = 2020000
|
# 3,156250000,3700000
|
||||||
# 340000 + 1680000*2 = 3700000
|
# 4,78125000,5380000
|
||||||
# 340000 + 1680000*3 = 5380000
|
# 5,39062500,7060000
|
||||||
# 340000 + 1680000*4 = 7060000
|
# 6,19531250,8740000
|
||||||
# 340000 + 1680000*5 = 8740000
|
# 7,9765625,10420000
|
||||||
# 340000 + 1680000*6 = 10420000
|
# 8,4882812,12100000
|
||||||
# 340000 + 1680000*7 = 12100000
|
# 9,2441406,13780000
|
||||||
# 340000 + 1680000*8 = 13780000
|
# 10,1220703,15460000
|
||||||
# 340000 + 1680000*9 = 15460000
|
# 11,610351,17140000
|
||||||
# 340000 + 1680000*10 = 17140000
|
# 12,305175,18820000
|
||||||
# 340000 + 1680000*11 = 18820000
|
# 13,152587,20500000
|
||||||
# 340000 + 1680000*12 = 20500000
|
# 14,76293,22180000
|
||||||
# 340000 + 1680000*13 = 22180000
|
# 15,38146,23860000
|
||||||
# 340000 + 1680000*14 = 23860000
|
# 16,19073,25540000
|
||||||
# 340000 + 1680000*15 = 25540000
|
# 17,9536,27220000
|
||||||
|
# 18,4768,28900000
|
||||||
|
# 19,2384,30580000
|
||||||
|
# 20,1192,32260000
|
||||||
|
# 21,596,33940000
|
||||||
|
# 22,298,35620000
|
||||||
|
# 23,149,37300000
|
||||||
|
# 24,74,38980000
|
||||||
|
# 25,37,40660000
|
||||||
|
# 26,18,42340000
|
||||||
|
# 27,9,44020000
|
||||||
|
# 28,4,45700000
|
||||||
|
# 29,2,47380000
|
||||||
|
# 30,1,49060000
|
||||||
|
# 31,0,50740000
|
||||||
|
|
||||||
|
|
||||||
sub hush_block_reward
|
sub hush_block_reward
|
||||||
@@ -79,18 +93,65 @@ sub hush_block_reward
|
|||||||
my $height = shift;
|
my $height = shift;
|
||||||
my $halvings = 0;
|
my $halvings = 0;
|
||||||
|
|
||||||
# TODO: Cover all halvings until BR=0
|
if ($height >= 50740000) {
|
||||||
if ($height >= 23860000) {
|
$reward = 0;
|
||||||
|
$halvings = 31;
|
||||||
|
} elsif ($height >= 49060000) {
|
||||||
|
$reward = 1;
|
||||||
|
$halvings = 30;
|
||||||
|
} elsif ($height >= 47380000) {
|
||||||
|
$reward = 1;
|
||||||
|
$halvings = 29;
|
||||||
|
} elsif ($height >= 45700000) {
|
||||||
|
$reward = 2;
|
||||||
|
$halvings = 28;
|
||||||
|
} elsif ($height >= 44020000) {
|
||||||
|
$reward = 4;
|
||||||
|
$halvings = 27;
|
||||||
|
} elsif ($height >= 42340000) {
|
||||||
|
$reward = 9;
|
||||||
|
$halvings = 26;
|
||||||
|
} elsif ($height >= 40660000) {
|
||||||
|
$reward = 18;
|
||||||
|
$halvings = 25;
|
||||||
|
} elsif ($height >= 38980000) {
|
||||||
|
$reward = 37;
|
||||||
|
$halvings = 24;
|
||||||
|
} elsif ($height >= 37380000) {
|
||||||
|
$reward = 74;
|
||||||
|
$halvings = 23;
|
||||||
|
} elsif ($height >= 35620000) {
|
||||||
|
$reward = 149;
|
||||||
|
$halvings = 22;
|
||||||
|
} elsif ($height >= 33940000) {
|
||||||
|
$reward = 298;
|
||||||
|
$halvings = 21;
|
||||||
|
} elsif ($height >= 32260001) {
|
||||||
|
$reward = 596;
|
||||||
|
$halvings = 20;
|
||||||
|
} elsif ($height >= 30580000) {
|
||||||
|
$reward = 1192;
|
||||||
|
$halvings = 19;
|
||||||
|
} elsif ($height >= 28900000) {
|
||||||
|
$reward = 2384;
|
||||||
|
$halvings = 18;
|
||||||
|
} elsif ($height >= 27220000) {
|
||||||
|
$reward = 4768;
|
||||||
|
$halvings = 17;
|
||||||
|
} elsif ($height >= 25540000) {
|
||||||
|
$reward = 9536;
|
||||||
|
$halvings = 16;
|
||||||
|
} elsif ($height >= 23860000) {
|
||||||
$reward = 19073; # 0.486328125 deviation
|
$reward = 19073; # 0.486328125 deviation
|
||||||
$halvings = 15;
|
$halvings = 15;
|
||||||
} elsif ($height >= 22180000) {
|
} elsif ($height >= 22180000) {
|
||||||
$reward = 38146; # 0.97265625 deviation
|
$reward = 38146; # 0.97265625 deviation
|
||||||
$halvings = 14;
|
$halvings = 14;
|
||||||
} elsif ($height >= 20500000) {
|
} elsif ($height >= 20500000) {
|
||||||
$reward = 152587; # 0.890625sat deviation
|
$reward = 76293; # 0.9453125 deviation
|
||||||
$halvings = 13;
|
$halvings = 13;
|
||||||
} elsif ($height >= 18820000) {
|
} elsif ($height >= 18820000) {
|
||||||
$reward = 305175; # 0.78125sat deviation
|
$reward = 152587; # 0.890625 deviation
|
||||||
$halvings = 12;
|
$halvings = 12;
|
||||||
} elsif ($height >= 17140000) {
|
} elsif ($height >= 17140000) {
|
||||||
$reward = 305175; # 0.78125sat deviation
|
$reward = 305175; # 0.78125sat deviation
|
||||||
@@ -132,8 +193,8 @@ sub hush_block_reward
|
|||||||
return ($reward,$halvings);
|
return ($reward,$halvings);
|
||||||
}
|
}
|
||||||
|
|
||||||
# We know BR will go to zero between 7 and 8th halvings
|
# Block reward is 0 at the 31st halving
|
||||||
while ($halvings <= 10) {
|
while ($halvings <= 30) {
|
||||||
$block++;
|
$block++;
|
||||||
my ($reward,$halvings) = hush_block_reward($block);
|
my ($reward,$halvings) = hush_block_reward($block);
|
||||||
my $fr = int($reward / 10);
|
my $fr = int($reward / 10);
|
||||||
|
|||||||
Reference in New Issue
Block a user