Files
dragonx/doc/randomx.md
DanS 46693a355a 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>
2026-07-21 13:59:06 -05:00

4.1 KiB

How DragonX uses RandomX

DragonX uses RandomX as its Proof-of-Work algorithm. RandomX is CPU-friendly and ASIC/GPU-resistant, which keeps mining accessible to ordinary hardware. RandomX is the same family of algorithm that Monero (XMR) and various other coins use, though DragonX uses its own configuration (see "RandomX Internals" below), so DragonX RandomX is not compatible with Monero mining hardware.

DragonX descends from the Hush lineage (Bitcoin -> Zcash -> Komodo -> Hush -> DragonX). The RandomX integration in this codebase originates from that Hush work; DragonX ships it as a fixed part of consensus rather than as a launcher option.

DragonX consensus parameters

DragonX is a single, fully private chain. Its consensus is fixed (you do not pass -ac_* arguments to run a DragonX node):

  • PoW algorithm: RandomX (CPU mineable)
  • Block time: 36 seconds on average
  • Block reward: 3 DRAGONX per block
  • Halving: every 3,500,000 blocks
  • Private from genesis: ac_private=1, with Sapling active at height 1. Transparent sends are banned from block 1; transparent addresses only receive mining coinbase (directly spendable, shielding optional). There is no "privacy switches on later" phase — DragonX is private from the very first block.

To run a DragonX node and mine on the network, use dragonxd (mining is enabled with -gen=1 and CPU threads set via -genproclimit=N), for example:

./src/dragonxd -gen=1 -genproclimit=1

You do not need to choose an algorithm, block time, reward, or supply — these are baked into DragonX consensus.

RandomX key-block tuning options

RandomX periodically rotates the "key block" it derives its dataset from. Two advanced options control this. They are inherited from the upstream Hush / Arrakis-chain tooling and default to values suited to DragonX's 36s block time; you should not normally change them:

  • -ac_randomx_interval controls how often the RandomX key block changes
    • Default is 1024 blocks
    • At DragonX's 36s block time this is roughly ~10.2 hours
  • -ac_randomx_lag sets the number of blocks to wait before updating the key block
    • Default is 64 blocks
    • At DragonX's 36s block time this is roughly ~38 minutes
  • -ac_randomx_interval should always be larger than 2 times -ac_randomx_lag
  • Setting these to arbitrary values could affect chain security
    • Do not change these values unless you are really sure why you are doing it

RandomX Internals

This section is not required reading if you just want to run or mine DragonX. Here we explain how the internals of RandomX work inside the codebase.

We use the official RandomX implementation from https://github.com/tevador/RandomX with custom configuration options. Because the configuration differs from the Monero (XMR) RandomX configuration, hardware built to mine XMR RandomX is not compatible with DragonX's RandomX. This is by design. The source code of RandomX is embedded at ./src/RandomX and the configuration options used are at ./src/RandomX/src/configuration.h.

The changes from default RandomX configuration options are listed below.

 //Argon2d salt
-#define RANDOMX_ARGON_SALT         "RandomX\x03"
+#define RANDOMX_ARGON_SALT         "RandomXHUSH\x03"

 //Number of Argon2d iterations for Cache initialization.
-#define RANDOMX_ARGON_ITERATIONS   3
+#define RANDOMX_ARGON_ITERATIONS   5
 
 //Number of parallel lanes for Cache initialization.
 #define RANDOMX_ARGON_LANES        1
@@ -53,13 +53,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #define RANDOMX_DATASET_EXTRA_SIZE 33554368
 
 //Number of instructions in a RandomX program. Must be divisible by 8.
-#define RANDOMX_PROGRAM_SIZE       256
+#define RANDOMX_PROGRAM_SIZE       512
 
 //Number of iterations during VM execution.
-#define RANDOMX_PROGRAM_ITERATIONS 2048
+#define RANDOMX_PROGRAM_ITERATIONS 4096
 
 //Number of chained VM executions per hash.
-#define RANDOMX_PROGRAM_COUNT      8
+#define RANDOMX_PROGRAM_COUNT      16
 

RandomX opcode frequencies were not modified, the defaults are used.