DanS 5e0a706839 qa: repair the rpc-test harness so it can start a DragonX node at all
The integration suite has never run against DragonX. Six independent
defects stacked up, each only visible once the previous was fixed:

1. test_framework used python2 implicit relative imports
   ("from authproxy import ..."), removed in python3, so every test died
   at import. Made explicit relative imports.

2. It wrote ZZZ.conf -- a Komodo assetchain convention -- while DragonX
   reads DRAGONX.conf. The daemon therefore never saw the generated
   config, fell back to mainnet defaults and tried to bind RPC 21769,
   which on a seed node is already held by the real node.

3. start_node() was hard-wired for the -ac_name=ZZZ assetchain tests: it
   took the RPC port from extra_args[3], passed extra_args[0] as argv[0]
   of the CLI, and only wrote a config when extra_args[0] matched. Any
   test that passes no extra args crashed on len(None). The generic path
   now takes the port from rpc_port(i) -- the same helper
   initialize_datadir() already used -- and drives the CLI with -datadir.

4. dragonxd refuses to start without an asmap file, which no test datadir
   had. initialize_datadir() now provisions one.

5. -asmap relative paths resolve against the NET-SPECIFIC datadir, so a
   copy in <datadir> is never found. Pass an absolute path.

6. Worst: -regtest was only ever set as "regtest=1" in the conf file,
   which DragonX ignores. Every "regtest" node therefore ran on MAINNET:
   real genesis, real seeds, real peers. An observed run synced 196,180
   live blocks and 679MB into /tmp before the test timed out. -regtest is
   now passed as a command-line flag, with -connect=0 so an isolated
   regtest node stays off the public network.

With these, nodes start, RPC answers, and tests run to a real result.
They do not all pass yet -- getblocktemplate.py reaches an assertion --
but that is now a test outcome rather than a harness failure.
2026-08-30 19:44:27 -05:00
2021-01-26 08:56:08 -05:00
2026-08-25 18:42:18 -05:00
2024-02-27 23:59:59 +01:00
2024-03-15 15:14:26 -04:00
2024-03-31 23:54:32 +02:00
2019-08-07 04:56:24 -07:00
2019-08-07 04:56:24 -07:00
2026-01-01 15:24:57 -05:00
2017-10-22 04:08:53 +02:00

DragonX

DragonX

A fully-private, RandomX CPU-mineable cryptocurrency.

Introduction Build Run Mine
What is DragonX? Build from source Run a node CPU mining
Key facts Install a release Fastest sync Wallets

What is DragonX?

DragonX implements extreme privacy via blockchain technology. It is private from genesis: every ordinary transaction is shielded (z2z), so your transaction metadata stays private. DragonX is based on Bitcoin code with Zcash's zero-knowledge Sapling cryptography, and its defining feature is RandomX Proof-of-Work — it is mined with a CPU, not ASICs or GPUs.

DragonX has its own genesis block. Its lineage is Bitcoin → Zcash → Komodo → Hush → DragonX; it is a fork of the Hush full node, with the Proof-of-Work changed from Equihash to RandomX and privacy enforced from the very first block.

This software is the DragonX full node and command-line client. It downloads and stores the entire history of DragonX transactions; depending on your computer and network connection this can take a while, so most users start from the bootstrap snapshot.

DragonX is experimental software. Use at your own risk, just like Bitcoin.

Key facts

Ticker DRAGONX
Proof-of-Work RandomX (CPU-mineable)
Privacy fully private from genesis (ac_private=1, Sapling active at height 1)
Block time 36 seconds
Block reward 3 DRAGONX, halving every 3,500,000 blocks
Max block size 4 MB
RPC port 21769
P2P port 18030
Data directory ~/.hush/DRAGONX (Linux)
Config file DRAGONX.conf
Binaries dragonxd, dragonx-cli, dragonx-tx

Fastest way to sync (bootstrap)

The quickest way to get a fully-synced node is the signed bootstrap snapshot, which installs a pre-built blockchain so you skip re-validating the whole chain from genesis:

# Stop dragonxd first if it is running, then:
./util/bootstrap-dragonx.sh

The script preserves your wallet.dat and DRAGONX.conf, verifies the download's checksums and (once a release key is published) its cryptographic signature, then starts you near the chain tip. If you prefer to sync from the network instead, a larger -dbcache (e.g. -dbcache=2048) noticeably speeds up the initial block download.

Build from source

Building uses 3 build processes by default; you need ~2GB of RAM for each.

Debian or Ubuntu

sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib \
      autoconf libtool ncurses-dev unzip git zlib1g-dev wget \
      bsdmainutils automake curl unzip nano libsodium-dev cmake
git clone https://git.dragonx.is/DragonX/dragonx
cd dragonx
./build.sh -j3

Arch

sudo pacman -S gcc libsodium lib32-zlib unzip wget git python rust curl autoconf cmake
git clone https://git.dragonx.is/DragonX/dragonx
cd dragonx
./build.sh -j3

Fedora

sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libtool ncurses-devel patch -y
git clone https://git.dragonx.is/DragonX/dragonx
cd dragonx
./build.sh -j3

macOS

Install Xcode Command Line Tools and Homebrew, then:

xcode-select --install
brew install gcc autoconf automake pkgconf libtool cmake curl

# Install Rust (needed for librustzcash on macOS Sequoia+)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

git clone https://git.dragonx.is/DragonX/dragonx
cd dragonx
# Make sure libtool gnubin and cargo are on PATH
export PATH="$HOME/.cargo/bin:/usr/local/opt/libtool/libexec/gnubin:$PATH"
./build.sh -j3

For a release build:

export PATH="$HOME/.cargo/bin:/usr/local/opt/libtool/libexec/gnubin:$PATH"
./build.sh --mac-release -j$(sysctl -n hw.ncpu)

Windows (cross-compiled on Linux)

sudo apt-get install \
      build-essential pkg-config libc6-dev m4 g++-multilib libdb++-dev \
      autoconf libtool ncurses-dev unzip git zip \
      zlib1g-dev wget bsdmainutils automake mingw-w64 cmake libsodium-dev
git clone https://git.dragonx.is/DragonX/dragonx
cd dragonx
./util/build-win.sh -j$(nproc)

ARM (Raspberry Pi)

Any ARMv7 machine cannot build this repo because the underlying zk-SNARK library does not support that instruction set. You need an ARMv8-based board (Raspberry Pi 4 or newer). Either install an aarch64 release package (see below) or cross-compile from amd64.

Installing DragonX binaries

  1. Download a release with a .deb extension.
  2. Install it, substituting the version you downloaded: sudo dpkg -i dragonx-VERSION-amd64.deb (or -aarch64.deb on ARM).
  3. Run with: dragonxd.

Running a node

Start the daemon:

./src/dragonxd

It stores data in ~/.hush/DRAGONX and reads ~/.hush/DRAGONX/DRAGONX.conf. Query it with ./src/dragonx-cli, for example:

./src/dragonx-cli getinfo

To run DragonX as a background service, see doc/dragonxd-systemd.md.

CPU mining (RandomX)

DragonX is CPU-mineable via RandomX (the same algorithm family as Monero); ASICs and GPUs do not apply. To mine with your node, enable generation and choose how many threads to use:

# mine with 4 CPU threads
./src/dragonxd -gen=1 -genproclimit=4

or add to DRAGONX.conf:

gen=1
genproclimit=4

Mining rewards arrive as transparent coinbase, which is directly spendable; you can optionally move it into the shielded pool with z_shieldcoinbase (see doc/shield-coinbase.md). For more on the algorithm and its tuning options, see doc/randomx.md.

Wallets

The DragonX full node includes a built-in wallet, managed via dragonx-cli (see doc/wallet-backup.md and doc/seed-phrase.md).

Graphical and mobile wallets:

DragonX light and mobile wallets use BIP39 seed phrases that are compatible with the full node — see doc/seed-phrase.md.

Support and links

License

For license information see the file COPYING.

Description
No description provided
Readme 187 MiB
2026-07-23 20:06:47 -05:00
Languages
C++ 66.2%
C 21.4%
Python 6.5%
M4 1.4%
Shell 1.2%
Other 3.1%