cleanup: rebrand currency unit, depends mirrors, seeds; drop Hush-history files
Follow-up to the doc rebrand, addressing the previously out-of-scope legacy: - Currency unit: strCurrencyUnits (chainparams.cpp) and CURRENCY_UNIT (amount.cpp) "HUSH" -> "DRAGONX". Both are display-only (RPC help + metrics); no logic comparisons, verified. - depends mirrors: libsodium/boost/utfcpp fetched from git.hush.is/attachments; repointed to canonical upstream (GitHub release / archives.boost.io / GitHub tag) with the existing sha256 hashes verified to match those sources. - Seeds: nodes_main.txt now lists the five node[1-5].dragonx.is IPs (DNS-resolved) instead of Hush nodes; regenerated src/chainparamsseeds.h (was compiling Hush seed IPs as the fixed fallback); generate-seeds.py header now says DragonX; hush_seed_nodes.txt updated to DragonX seeds. - Deleted Hush-history / wrong-for-DragonX files: contrib/snapshot/ (block-500000 Hush airdrop, ~10MB), notary_seeds.txt (Hush notaries; DragonX isn't notarized), and the Hush emission scripts hush_supply, hush_supply_old, hush_halvings, hush_block_subsidy_per_halving (hardcode Hush's 340000/12.5 economics). Kept: hush_scanner (engine invoked by dragonx_scanner) and the "The Hush developers" copyright headers (lineage credit). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
# Copyright 2016-2020 The Hush developers
|
||||
# Released under the GPLv3
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my $x = 12.5 * 100000000;
|
||||
my $n = 0;
|
||||
while ($n<=31) {
|
||||
#printf "$n,%.16g,%.16g,%.16g\n", $x, $x*0.90, $x*0.1;
|
||||
printf "$n,%d,%d,%d\n", $x, $x*0.90, $x*0.1;
|
||||
$x = $x / 2;
|
||||
$n++;
|
||||
exit if ($x <= 0);
|
||||
}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
# Copyright (c) 2016-2024 The Hush developers
|
||||
# Released under the GPLv3
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my $x = 340_000;
|
||||
my $n = 0;
|
||||
my $r = 12_500_000_000;
|
||||
while ($n<=32) {
|
||||
printf "%d,%d,%d\n", $n+1, $r, $x + 1680000*$n;
|
||||
# blocktime halving at block 340000
|
||||
if ($n==0) {
|
||||
$r = 3.125 * 100_000_000;
|
||||
} else {
|
||||
$r /= 2;
|
||||
}
|
||||
|
||||
$n++;
|
||||
}
|
||||
|
||||
@@ -1,27 +1,17 @@
|
||||
# This is a list of nodes which hushd attempts to connect to automatically
|
||||
# This is a list of nodes which dragonxd attempts to connect to automatically
|
||||
# at start up time. You can check to see if they are up/down with:
|
||||
# cd contrib; cat hush_seed_nodes.txt | ./hush_scanner
|
||||
|
||||
# IP/tor/i2p seeds from src/chainparamsseeds.h
|
||||
185.241.61.43
|
||||
87.251.76.166
|
||||
45.82.68.233
|
||||
87.251.76.33
|
||||
137.74.4.198
|
||||
149.28.102.219
|
||||
155.138.228.68
|
||||
107.174.70.251
|
||||
# hush_scanner uses nc which cannot deal with these
|
||||
# iljqq7nnmw2ij2ezl334cerwwmgzmmbmoc3n4saditd2xhi3xohq.b32.i2p
|
||||
# [2a0c:b641:6f1:34::2]
|
||||
# [2a0c:b641:6f1:c::2]
|
||||
# IP seeds from src/chainparamsseeds.h
|
||||
212.56.41.63
|
||||
194.140.198.176
|
||||
212.56.41.47
|
||||
144.126.147.165
|
||||
176.126.87.241
|
||||
|
||||
# Hostname Seeds from src/hush_utils.h
|
||||
node1.hush.is
|
||||
node2.hush.is
|
||||
node3.hush.is
|
||||
node4.hush.is
|
||||
node5.hush.is
|
||||
node6.hush.is
|
||||
node7.hush.is
|
||||
node8.hush.is
|
||||
node1.dragonx.is
|
||||
node2.dragonx.is
|
||||
node3.dragonx.is
|
||||
node4.dragonx.is
|
||||
node5.dragonx.is
|
||||
|
||||
@@ -1,218 +0,0 @@
|
||||
#!/usr/bin/env perl
|
||||
# Copyright (c) 2016-2024 The Hush developers
|
||||
# Released under the GPLv3
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
|
||||
my $supply = 0.0;
|
||||
my $block = 0; # Block 0 in Hush Smart chains is the BTC genesis block
|
||||
my $puposhis = 100_000_000;
|
||||
my $subsidy0 = 1_250_000_000;
|
||||
my $halvings = 0;
|
||||
my $initial = 6178674 * $puposhis;
|
||||
my $interval = 1_680_000; # ~4 years of 75s blocks
|
||||
my $stop = shift || -1;
|
||||
my $totalfr = 0; # total paid out to FR address
|
||||
|
||||
|
||||
if ($stop eq 'help' or $stop =~ m/-h/) {
|
||||
die <<HELP;
|
||||
# Simulate the total supply on Hush v3 mainnet
|
||||
# Block Reward: Total Coinbase In Block
|
||||
# Subsidy : Coinbase Earned by Miner
|
||||
# FR : Founders Reward (10%)
|
||||
# Block Reward = Subsidy + FR
|
||||
Usage: ./hush_supply &> supply.csv
|
||||
./hush_supply HEIGHT &> supply.csv # stop at HEIGHT
|
||||
# This will generate CSV in the form of:
|
||||
# block, supply, reward, subsidy, fr, totalfr, halvings
|
||||
HELP
|
||||
}
|
||||
|
||||
|
||||
printf "# block, supply, reward, subsidy, fr, totalfr, halvings\n";
|
||||
|
||||
# Block Reward Amounts in puposhis
|
||||
# The non-integral amounts cannot be represented exactly
|
||||
# 12.5 * 100000000 = 1250000000
|
||||
# 12.5 * 100000000 / 2 = 625000000
|
||||
# 12.5 * 100000000 / 4 = 312500000
|
||||
# 12.5 * 100000000 / 8 = 156250000
|
||||
# 12.5 * 100000000 / 16 = 78125000
|
||||
# 12.5 * 100000000 / 32 = 39062500
|
||||
# 12.5 * 100000000 / 64 = 19531250
|
||||
# 12.5 * 100000000 / 128 = 9765625
|
||||
# 12.5 * 100000000 / 256 = 4882812.5
|
||||
# 12.5 * 100000000 / 512 = 2441406.25
|
||||
# 12.5 * 100000000 / 1024 = 1220703.125
|
||||
# 12.5 * 100000000 / 2048 = 610351.5625
|
||||
# 12.5 * 100000000 / 4096 = 305175.78125
|
||||
# 12.5 * 100000000 / 8192 = 152587.890625
|
||||
# 12.5 * 100000000 / 16384 = 76293.9453125
|
||||
# 12.5 * 100000000 / 32768 = 38146.97265625
|
||||
# 12.5 * 100000000 / 65536 = 19073.486328125
|
||||
|
||||
# Hush Halving Heights and Block Rewards
|
||||
# 1,12500000000,340000
|
||||
# 2,312500000,2020000
|
||||
# 3,156250000,3700000
|
||||
# 4,78125000,5380000
|
||||
# 5,39062500,7060000
|
||||
# 6,19531250,8740000
|
||||
# 7,9765625,10420000
|
||||
# 8,4882812,12100000
|
||||
# 9,2441406,13780000
|
||||
# 10,1220703,15460000
|
||||
# 11,610351,17140000
|
||||
# 12,305175,18820000
|
||||
# 13,152587,20500000
|
||||
# 14,76293,22180000
|
||||
# 15,38146,23860000
|
||||
# 16,19073,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
|
||||
{
|
||||
my $reward = 0;
|
||||
my $height = shift;
|
||||
my $halvings = 0;
|
||||
|
||||
if ($height >= 50740000) {
|
||||
$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
|
||||
$halvings = 15;
|
||||
} elsif ($height >= 22180000) {
|
||||
$reward = 38146; # 0.97265625 deviation
|
||||
$halvings = 14;
|
||||
} elsif ($height >= 20500000) {
|
||||
$reward = 76293; # 0.9453125 deviation
|
||||
$halvings = 13;
|
||||
} elsif ($height >= 18820000) {
|
||||
$reward = 152587; # 0.890625 deviation
|
||||
$halvings = 12;
|
||||
} elsif ($height >= 17140000) {
|
||||
$reward = 305175; # 0.78125sat deviation
|
||||
$halvings = 11;
|
||||
} elsif ($height >= 15460000) {
|
||||
$reward = 610351; # 0.5625sat deviation
|
||||
$halvings = 10;
|
||||
} elsif ($height >= 13780000) {
|
||||
$reward = 1220703; # 0.125sat deviation
|
||||
$halvings = 9
|
||||
} elsif ($height >= 12100000) {
|
||||
$reward = 2441406; # 0.25sat deviation
|
||||
$halvings = 8
|
||||
} elsif ($height >= 10420000) {
|
||||
$reward = 4882812; # 0.5sat deviation
|
||||
$halvings = 7;
|
||||
} elsif ($height >= 8740000) {
|
||||
$reward = 9765625; # last exact reward
|
||||
$halvings = 6;
|
||||
} elsif ($height >= 7060000) {
|
||||
$reward = 19531250; # 0.1953125 HUSH
|
||||
$halvings = 5;
|
||||
} elsif ($height >= 5380000) {
|
||||
$reward = 39062500; # 0.390625 HUSH
|
||||
$halvings = 4;
|
||||
} elsif ($height >= 3700000) {
|
||||
$reward = 78125000; # 0.78125 HUSH
|
||||
$halvings = 3;
|
||||
} elsif ($height >= 2020000) {
|
||||
$reward = 156250000; # 1.5625 HUSH
|
||||
$halvings = 2;
|
||||
} elsif ($height >= 340000) {
|
||||
$reward = 312500000; # 3.125 HUSH
|
||||
$halvings = 1;
|
||||
} elsif ($height >= 128) {
|
||||
$reward = 1250000000; # 12.5 HUSH
|
||||
}
|
||||
|
||||
return ($reward,$halvings);
|
||||
}
|
||||
|
||||
# Block reward is 0 at the 31st halving
|
||||
while ($halvings <= 30) {
|
||||
$block++;
|
||||
my ($reward,$halvings) = hush_block_reward($block);
|
||||
my $fr = int($reward / 10);
|
||||
my $subsidy = $reward - $fr;
|
||||
|
||||
if($block == 1) {
|
||||
# initial airdrop of funds from HUSH v2 network @ Block 500000
|
||||
$reward = $initial;
|
||||
$subsidy= $reward;
|
||||
$fr = 0;
|
||||
}
|
||||
$supply += $reward;
|
||||
$totalfr += $fr;
|
||||
|
||||
# all values in puposhis
|
||||
# block, current supply, block reward amount, fr, totalfr, number of halvings
|
||||
printf "%d,%d,%d,%d,%d,%d,%d\n", $block, $supply, $reward, $subsidy, $fr, $totalfr, $halvings;
|
||||
exit(0) if $block == $stop;
|
||||
exit(0) if ($block > 128 && $reward == 0);
|
||||
exit(-1) if ($supply >= 21_000_000*$puposhis);
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/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;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
103.6.12.117
|
||||
95.213.238.99
|
||||
77.75.121.139
|
||||
139.162.45.144
|
||||
152.89.105.66
|
||||
152.89.104.58
|
||||
5.53.120.34
|
||||
139.99.208.141
|
||||
@@ -167,9 +167,9 @@ def main():
|
||||
g.write('// Instead, update contrib/seeds/nodes_main.txt then run\n')
|
||||
g.write('// ./contrib/seeds/generate-seeds.py contrib/seeds > src/chainparamsseeds.h\n')
|
||||
g.write('// OR run: make seeds\n')
|
||||
g.write('#ifndef HUSH_CHAINPARAMSSEEDS_H\n')
|
||||
g.write('#define HUSH_CHAINPARAMSSEEDS_H\n')
|
||||
g.write('// List of fixed seed nodes for the Hush network\n')
|
||||
g.write('#ifndef DRAGONX_CHAINPARAMSSEEDS_H\n')
|
||||
g.write('#define DRAGONX_CHAINPARAMSSEEDS_H\n')
|
||||
g.write('// List of fixed seed nodes for the DragonX network\n')
|
||||
g.write('// Each line contains a BIP155 serialized address.\n')
|
||||
g.write('//\n')
|
||||
with open(os.path.join(indir,'nodes_main.txt'), 'r', encoding="utf8") as f:
|
||||
|
||||
@@ -1,38 +1,14 @@
|
||||
# node1.hush.is
|
||||
103.69.128.148
|
||||
# node1.dragonx.is
|
||||
212.56.41.63
|
||||
|
||||
# node2.hush.is
|
||||
194.29.100.179
|
||||
# node2.dragonx.is
|
||||
194.140.198.176
|
||||
|
||||
# node3.hush.is
|
||||
45.132.75.69
|
||||
# node3.dragonx.is
|
||||
212.56.41.47
|
||||
|
||||
# node4.hush.is
|
||||
170.205.39.39
|
||||
# node4.dragonx.is
|
||||
144.126.147.165
|
||||
|
||||
# lite.hushpool.is
|
||||
149.28.102.219
|
||||
|
||||
# lite2.hushpool.is
|
||||
155.138.228.68
|
||||
|
||||
# wtfistheinternet.hush.is
|
||||
107.174.70.251
|
||||
|
||||
# arrakis.hush.is
|
||||
178.250.189.141
|
||||
|
||||
# torv3
|
||||
b2dln7mw7ydnuopls444tuixujhcw5kn5o22cna6gqfmw2fl6drb5nad.onion
|
||||
dslbaa5gut5kapqtd44pbg65tpl5ydsamfy62hjbldhfsvk64qs57pyd.onion
|
||||
vsqdumnh5khjbrzlxoeucbkiuaictdzyc3ezjpxpp2ph3gfwo2ptjmyd.onion
|
||||
|
||||
# ipv6
|
||||
2a0c:b641:6f1:18e::2
|
||||
2406:ef80:3:1269::1
|
||||
2406:ef80:2:3b59::1
|
||||
2406:ef80:1:146e::1
|
||||
2406:ef80:4:2132::1
|
||||
|
||||
# i2p
|
||||
7oumuppuzgbzlkahavx7qrtjnvbhkixjqdmeg7f6fhndgfhz7mlq.b32.i2p
|
||||
# node5.dragonx.is
|
||||
176.126.87.241
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user