docs: rebrand documentation, packaging, and helper scripts to DragonX

The docs/packaging were largely un-rebranded Hush3 content, with several
docs stating facts that are wrong for DragonX. This rewrites them against
the verified DragonX source state.

Corrections (not just branding):
- PoW: RandomX (CPU), not Equihash/ASIC — README, overview.md, randomx.md
- Privacy: private from genesis (ac_private=1, Sapling@height1), not "as of
  block 340000" — overview.md, payment-api.md
- Removed the false "coinbase must be shielded" consensus claim
  (shield-coinbase.md, payment-api.md); coinbase is directly spendable
- Fixed default fee 0.0001 (was 0.0010000, 10x); stratum port 22769 (was 19031)
- datadir ~/.hush/DRAGONX, DRAGONX.conf, dragonxd/dragonx-cli/dragonx-tx,
  git.dragonx.is throughout; branch model dev->dragonx
- Softened the inherited dPoW reorg claim (no live DragonX notary infra)

Packaging: fix build-debian-package.sh + gen-manpages.sh to use the dragonx
binaries/manpages; rename bash-completions to dragonx*; drop hush-arrakis-chain
from the package. Keep /usr/share/hush (hardcoded in the binary for params).

Also: README links/logo, ObsidianDragon + SilentDragonXAndroid wallets,
networking/init/dev-process/contrib/util rebrand, and leftover helper scripts.
Delete legacy duplicates (hushd.* init/service, HUSH3.conf examples,
OLD_WALLETS.md, hsc.md) and rename hush-uri.bat -> dragonx-uri.bat.

Out of scope (noted, not changed): historical changelog/copyright, the Hush
mainnet airdrop snapshot, seed data files, depends/ source mirrors, and the
in-code strCurrencyUnits="HUSH".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-21 13:59:06 -05:00
parent bf3c33c53a
commit 46693a355a
76 changed files with 829 additions and 1416 deletions

View File

@@ -1,52 +1,64 @@
# Hush utilities
# DragonX utilities
Scripts in this directory are used by Hush developers in the process of development
or in releasing a new version of Hush.
Scripts in this directory are used by DragonX developers in the process of development
or in releasing a new version of DragonX.
Utilities in this directory:
## build.sh
Compile Hush full node code.
Compile DragonX full node code. This is the main build entrypoint.
## build-arm.sh
Compile Hush full node code for ARM architecture.
Compile DragonX full node code for ARM architecture.
**has not worked for some time**
## build-arm-xcompile.sh
Cross-Compile Hush full node code for ARM architecture on an x86 build server.
Cross-Compile DragonX full node code for ARM architecture on an x86 build server.
## build-debian-package.sh
Builds an x86 Debain package for Hush.
Builds an x86 Debian package for DragonX.
## build-debian-package-ARM.sh
Builds an ARM Debain package for Hush.
Builds an ARM Debian package for DragonX.
## build-mac.sh
Compile Hush full node code for mac. NOTE: This is likely broken.
Compile DragonX full node code for mac. NOTE: This is likely broken.
## build-win.sh
Compile Hush full node code for windows
Compile DragonX full node code for windows
## bootstrap-dragonx.sh
Download and apply a DRAGONX blockchain bootstrap so a new node can sync quickly.
Safely preserves wallet.dat and configuration files, and verifies the archive against
checksums and (once configured) a detached signature. See sign-bootstrap.md for the
signing procedure.
## sign-bootstrap.md
Documentation for maintainers on how to create the signing keypair and sign the
DRAGONX.zip bootstrap archive that bootstrap-dragonx.sh verifies.
## checkpoints.pl
Generate checkpoint data for chainparams.cpp . This automates the creation of
block heights and block hashes by asking hushd for the data and then generating
the C++ code needed to embed them in the Hush source code.
block heights and block hashes by asking dragonxd (via dragonx-cli) for the data
and then generating the C++ code needed to embed them in the DragonX source code.
## docker-entrypoint.sh
Script to use Hush with Docker.
Script to use DragonX with Docker.
## docker-hush-cli.sh
Convenience script to run hush-cli in a running Docker container.
Convenience script to run dragonx-cli in a running Docker container.
## replace.pl

View File

@@ -30,7 +30,7 @@ mv afl-*/* .
# Build AFL
make
echo "You can now build hushd with AFL instrumentation as follows:"
echo "$ make clean # if you've already built hushd without AFL instrumentation"
echo "You can now build dragonxd with AFL instrumentation as follows:"
echo "$ make clean # if you've already built dragonxd without AFL instrumentation"
echo "$ ./util/afl/afl-build.sh '$(pwd)' <fuzz case> -j\$(nproc)"
echo "...where <fuzz case> is the name of a directory in src/fuzzing."

View File

@@ -2,8 +2,8 @@
# Copyright (c) 2016-2024 The Hush developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
# Builds AFL and an instrumented hushd, then begins fuzzing.
# This script must be run from within the top level directory of a hush clone.
# Builds AFL and an instrumented dragonxd, then begins fuzzing.
# This script must be run from within the top level directory of a DragonX clone.
# Pass it the name of a directory in ./src/fuzzing.
# Additional arguments are passed-through to AFL.

View File

@@ -9,4 +9,4 @@ AFL_INSTALL_DIR="$1"
FUZZ_CASE="$2"
shift 2
"$AFL_INSTALL_DIR/afl-fuzz" -i "./src/fuzzing/$FUZZ_CASE/input" -o "./src/fuzzing/$FUZZ_CASE/output" "$@" ./src/hushd @@
"$AFL_INSTALL_DIR/afl-fuzz" -i "./src/fuzzing/$FUZZ_CASE/input" -o "./src/fuzzing/$FUZZ_CASE/output" "$@" ./src/dragonxd @@

View File

@@ -3,8 +3,8 @@
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
# For use with https://git.hush.is/jahway603/hush-docs/src/branch/master/advanced/cross-compile-hush-full-node-to-aarch64-with-docker.md,
# Please follow that
# Cross-compiles a DragonX full node to aarch64 (ARM) using an aarch64 GCC toolchain.
# Intended to be run inside a Docker builder with the aarch64-linux-gnu cross toolchain installed.
set -eu -o pipefail
# Check if cmake, a new dependency for randomx support, is installed on system and exits if it is not
@@ -21,12 +21,12 @@ function cmd_pref() {
fi
}
cat <<'EOF'
.~~~~~~~~~~~~~~~~.
{{ Building Hush!! }}
`~~~~~~~~~~~~~~~~`
.~~~~~~~~~~~~~~~~~~~.
{{ Building DragonX!! }}
`~~~~~~~~~~~~~~~~~~~`
\ ^__^
\ (@@)\_______
(__)\ HUSH )\/\ $
\ (@@)\_______
(__)\DRAGONX)\/\ $
z zz ||----w | z |
zz zz z || z ||xxx z z|z zz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
@@ -65,15 +65,15 @@ if [ "x$*" = 'x--help' ]
then
cat ./util/dragon.txt
cat <<EOF
Welcome To The Hush Build System, Here Be Dragons!
Welcome To The DragonX Build System, Here Be Dragons!
Usage:
$0 --help
Show this help message and exit.
$0 [ --enable-lcov || --disable-tests ] [ --disable-mining ] [ --disable-libs ] [ MAKEARGS... ]
Build Hush and most of its transitive dependencies from source. MAKEARGS are applied to both dependencies and Hush itself.
If --enable-lcov is passed, Hush is configured to add coverage instrumentation, thus enabling "make cov" to work.
If --disable-tests is passed instead, the Hush tests are not built.
If --disable-mining is passed, Hush is configured to not build any mining code. It must be passed after the test arguments, if present.
Build DragonX and most of its transitive dependencies from source. MAKEARGS are applied to both dependencies and DragonX itself.
If --enable-lcov is passed, DragonX is configured to add coverage instrumentation, thus enabling "make cov" to work.
If --disable-tests is passed instead, the DragonX tests are not built.
If --disable-mining is passed, DragonX is configured to not build any mining code. It must be passed after the test arguments, if present.
It must be passed after the test/mining arguments, if present.
EOF
exit 0

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2024 The Hush developers
# Copyright (c) 2024-2026 The DragonX developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
## Usages:
@@ -15,7 +16,7 @@ else
fi
ARCH=${1:-amd64}
echo "Let There Be Hush Debian Packages"
echo "Let There Be DragonX Debian Packages"
# Check if lintian is installed and give details about installing
# It is an optional dependency
@@ -35,8 +36,8 @@ fi
set -e
set -x
BUILD_PATH="/tmp/hush-debian-$$"
PACKAGE_NAME="hush"
BUILD_PATH="/tmp/dragonx-debian-$$"
PACKAGE_NAME="dragonx"
SRC_PATH=`pwd`
SRC_DEB=$SRC_PATH/contrib/debian
SRC_DOC=$SRC_PATH/doc
@@ -47,9 +48,9 @@ if [ ! -d $BUILD_PATH ]; then
mkdir $BUILD_PATH
fi
# If hushd is not currently running, package version can be hardcoded
#PACKAGE_VERSION=3.6.0
PACKAGE_VERSION=$($SRC_PATH/src/hushd --version|grep version|cut -d' ' -f4|cut -d- -f1|sed 's/v//g')
# If dragonxd is not currently running, package version can be hardcoded
#PACKAGE_VERSION=1.0.3
PACKAGE_VERSION=$($SRC_PATH/src/dragonxd --version|grep version|cut -d' ' -f4|cut -d- -f1|sed 's/v//g')
DEBVERSION=$(echo $PACKAGE_VERSION | sed 's/-beta/~beta/' | sed 's/-rc/~rc/' | sed 's/-/+/')
BUILD_DIR="$BUILD_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-$ARCH"
@@ -61,6 +62,9 @@ DEB_BIN=$BUILD_DIR/usr/bin
DEB_CMP=$BUILD_DIR/usr/share/bash-completion/completions
DEB_DOC=$BUILD_DIR/usr/share/doc/$PACKAGE_NAME
DEB_MAN=$BUILD_DIR/usr/share/man/man1
# NOTE: /usr/share/hush is intentional and must NOT be renamed to /usr/share/dragonx.
# The compiled binary hardcodes /usr/share/hush as the Debian global search path for the
# sapling params and asmap.dat (see src/init.cpp and src/util.cpp).
DEB_SHR=$BUILD_DIR/usr/share/hush
mkdir -p $BUILD_DIR/DEBIAN $DEB_CMP $DEB_BIN $DEB_DOC $DEB_MAN $DEB_SHR
chmod 0755 -R $BUILD_DIR/*
@@ -74,37 +78,36 @@ chmod 0755 -R $BUILD_DIR/*
cp $SRC_PATH/contrib/asmap/asmap.dat $DEB_SHR
cp $SRC_PATH/sapling-spend.params $DEB_SHR
cp $SRC_PATH/sapling-output.params $DEB_SHR
cp $SRC_PATH/src/hushd $DEB_BIN
strip $DEB_BIN/hushd
cp $SRC_PATH/src/hush-cli $DEB_BIN
strip $DEB_BIN/hush-cli
cp $SRC_PATH/src/hush-tx $DEB_BIN
strip $DEB_BIN/hush-tx
cp $SRC_PATH/src/dragonxd $DEB_BIN
strip $DEB_BIN/dragonxd
cp $SRC_PATH/src/dragonx-cli $DEB_BIN
strip $DEB_BIN/dragonx-cli
cp $SRC_PATH/src/dragonx-tx $DEB_BIN
strip $DEB_BIN/dragonx-tx
cp $SRC_PATH/src/hush-arrakis-chain $DEB_BIN
cp $SRC_DEB/changelog $DEB_DOC
cp $SRC_DEB/copyright $DEB_DOC
cp -r $SRC_DEB/examples $DEB_DOC
# Copy manpages
cp $SRC_DOC/man/hushd.1 $DEB_MAN/hushd.1
cp $SRC_DOC/man/hush-cli.1 $DEB_MAN/hush-cli.1
cp $SRC_DOC/man/hush-tx.1 $DEB_MAN/hush-tx.1
cp $SRC_DOC/man/dragonxd.1 $DEB_MAN/dragonxd.1
cp $SRC_DOC/man/dragonx-cli.1 $DEB_MAN/dragonx-cli.1
cp $SRC_DOC/man/dragonx-tx.1 $DEB_MAN/dragonx-tx.1
# Copy bash completion files
cp $SRC_PATH/contrib/hushd.bash-completion $DEB_CMP/hushd
cp $SRC_PATH/contrib/hush-cli.bash-completion $DEB_CMP/hush-cli
cp $SRC_PATH/contrib/hush-tx.bash-completion $DEB_CMP/hush-tx
cp $SRC_PATH/contrib/dragonxd.bash-completion $DEB_CMP/dragonxd
cp $SRC_PATH/contrib/dragonx-cli.bash-completion $DEB_CMP/dragonx-cli
cp $SRC_PATH/contrib/dragonx-tx.bash-completion $DEB_CMP/dragonx-tx
# Gzip files
#gzip --best -n $DEB_DOC/changelog
#gzip --best -n $DEB_DOC/changelog.Debian
gzip --best -n $DEB_MAN/hushd.1
gzip --best -n $DEB_MAN/hush-cli.1
gzip --best -n $DEB_MAN/hush-tx.1
gzip --best -n $DEB_MAN/dragonxd.1
gzip --best -n $DEB_MAN/dragonx-cli.1
gzip --best -n $DEB_MAN/dragonx-tx.1
cd $SRC_PATH/contrib
# Create the control file
dpkg-shlibdeps $DEB_BIN/hushd $DEB_BIN/hush-cli $DEB_BIN/hush-tx
dpkg-shlibdeps $DEB_BIN/dragonxd $DEB_BIN/dragonx-cli $DEB_BIN/dragonx-tx
dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION
#dpkg-gencontrol -P$BUILD_DIR

View File

@@ -7,7 +7,7 @@ use strict;
# Generate checkpoint data for use in src/chainparams.cpp
my $perday = 1152;
my $cli = "./src/hush-cli";
my $cli = "./src/dragonx-cli";
my $stride = shift || 1000;
if ($stride =~ m/help/) {
print "To generate checkpoint data every 1000 blocks: $0 &> checkpoints.txt\n";
@@ -34,7 +34,7 @@ if ($acname) {
# HSC's by default have a blocktime of 60s
$perday = 1440;
} else {
$acname = 'HUSH3';
$acname = 'DRAGONX';
}
my $gethash = "$cli getblockhash";
@@ -49,7 +49,7 @@ my $last = 0;
my $now = time();
chomp($blocks);
print "// Generated at $now via hush3 util/checkpoints.pl by Duke Leto\n";
print "// Generated at $now via dragonx util/checkpoints.pl\n";
while (1) {
$count++;

View File

@@ -4,17 +4,16 @@
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
#set -ex
echo "...Checking HUSH3.conf"
echo "...Checking DRAGONX.conf"
# TODO: support legacy location?
if [ ! -e "$HOME/.hush/HUSH3/HUSH3.conf" ]; then
mkdir -p $HOME/.hush/HUSH3
if [ ! -e "$HOME/.hush/DRAGONX/DRAGONX.conf" ]; then
mkdir -p $HOME/.hush/DRAGONX
DATE=$(date)
echo "...Creating HUSH3.conf"
cat <<EOF > $HOME/.hush/HUSH3.conf
echo "...Creating DRAGONX.conf"
cat <<EOF > $HOME/.hush/DRAGONX/DRAGONX.conf
# Generated by docker-entrypoint.sh at $DATE
rpcuser=hush
rpcuser=dragonx
rpcpassword=${rpcpassword:-`dd if=/dev/urandom bs=33 count=1 2>/dev/null | base64`}
txindex=1
bind=${listenip:-127.0.0.1}
@@ -25,7 +24,7 @@ zdebug=0
zindex=0
EOF
cat $HOME/.hush/HUSH3/HUSH3.conf
cat $HOME/.hush/DRAGONX/DRAGONX.conf
fi
if [ $# -gt 0 ]; then
@@ -36,6 +35,6 @@ else
args=("-pubkey=${pubkey} -ac_name=${assetchain} -addnode=${seednode}")
fi
echo "Running: hushd ${args[@]}"
echo "Running: dragonxd ${args[@]}"
exec hushd ${args[@]}
exec dragonxd ${args[@]}

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env bash
# Copyright (c) 2019-2020 Hush developers
/hush/src/hush-cli $@
/hush/src/dragonx-cli $@

View File

@@ -1,34 +1,35 @@
#!/bin/sh
# Copyright (c) 2016-2024 The Hush developers
# Copyright (c) 2024-2026 The DragonX developers
# Released under the GPLv3
TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)}
SRCDIR=${SRCDIR:-$TOPDIR/src}
MANDIR=${MANDIR:-$TOPDIR/doc/man}
HUSHD=${HUSHD:-$SRCDIR/hushd}
HUSHCLI=${HUSHCLI:-$SRCDIR/hush-cli}
HUSHTX=${HUSHTX:-$SRCDIR/hush-tx}
DRAGONXD=${DRAGONXD:-$SRCDIR/dragonxd}
DRAGONXCLI=${DRAGONXCLI:-$SRCDIR/dragonx-cli}
DRAGONXTX=${DRAGONXTX:-$SRCDIR/dragonx-tx}
[ ! -x $HUSHD ] && echo "$HUSHD not found or not executable." && exit 1
[ ! -x $DRAGONXD ] && echo "$DRAGONXD not found or not executable." && exit 1
# Check if help2man is installed & if not then display error to user and exit
[ ! -x "$(command -v help2man)" ] && echo "help2man could not be found" && echo "Please install from your Linux package manager and try again" && echo "On Debian-based systems you can do: apt-get install help2man" && exit 1
# use this if hushd is not compiled
#HUSHVER="v3.6.2"
HUSHVER=$(./src/hushd --version|head -n1|cut -d' ' -f4|cut -d- -f1)
# use this if dragonxd is not compiled
#DRAGONXVER="v1.0.3"
DRAGONXVER=$($DRAGONXD --version|head -n1|cut -d' ' -f4|cut -d- -f1)
# Create a footer file with copyright content.
# This gets autodetected fine for hushd if --version-string is not set,
# but has different outcomes for hush-cli.
# This gets autodetected fine for dragonxd if --version-string is not set,
# but has different outcomes for dragonx-cli.
echo "[COPYRIGHT]" > footer.h2m
$HUSHD --version | sed -n '1!p' >> footer.h2m
$DRAGONXD --version | sed -n '1!p' >> footer.h2m
echo "Generating man pages for Hush $HUSHVER"
for cmd in $HUSHD $HUSHCLI $HUSHTX; do
echo "Generating man pages for DragonX $DRAGONXVER"
for cmd in $DRAGONXD $DRAGONXCLI $DRAGONXTX; do
cmdname="${cmd##*/}"
help2man -N --version-string=${HUSHVER} --include=footer.h2m -o ${MANDIR}/${cmdname}.1 ${cmd}
#sed -i "s/\\\-${HUSHVER[1]}//g" ${MANDIR}/${cmdname}.1
help2man -N --version-string=${DRAGONXVER} --include=footer.h2m -o ${MANDIR}/${cmdname}.1 ${cmd}
#sed -i "s/\\\-${DRAGONXVER[1]}//g" ${MANDIR}/${cmdname}.1
done
rm -f footer.h2m

View File

@@ -12,10 +12,10 @@ use JSON;
# addresses must be one-per-line in the file
my $file = shift;
my $N = 20; # hushd is currently hardcoded to use 20 addresses
my $hush = "./src/hush-cli";
my $getnew = "$hush getnewaddress";
my $validate = "$hush validateaddress";
my $N = 20; # dragonxd is currently hardcoded to use 20 addresses
my $cli = "./src/dragonx-cli";
my $getnew = "$cli getnewaddress";
my $validate = "$cli validateaddress";
my $fh;
if($file) {

View File

@@ -2,8 +2,8 @@
# any CLI args given to this script will be passed along
# example: ./test_randomx -debug=randomx
../src/hushd -ac_randomx_interval=10 -ac_randomx_lag=3 -ac_halving=20 -ac_algo=randomx -ac_name=RANDOMX10 -ac_private=1 -ac_blocktime=20 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1 $@
../src/dragonxd -ac_randomx_interval=10 -ac_randomx_lag=3 -ac_halving=20 -ac_algo=randomx -ac_name=RANDOMX10 -ac_private=1 -ac_blocktime=20 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1 $@
# to run via the debugger
# type "run" when gdb prompt appears
#gdb --args ./src/hushd -- -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=30 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1
#gdb --args ./src/dragonxd -- -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=30 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1