drg-xmrig: fork of xmrig-hac with unified pow-hash share model

Port miner113's RX_DRAGONX mining model into the RX_HUSH path so DragonX
mining is identical in solo and pool mode:

- CpuWorker: filter EVERY hash on SHA256D(header + RandomX solution) (the
  block-bearing pow-hash) instead of the RandomX hash; submit the full
  32-byte nonce + rx_hash. Removes the fragile pool-mode dual-check that
  was dropping ~half of block candidates.
- Job: 32-byte nonce for RX_HUSH in pool mode too (was solo-only).
- JobResult: populate nonceBytes() on the standard 4-byte path.
- Client: submit a variable-width nonce (32-byte for DragonX) with a
  dynamically laid-out temp buffer.

Effect: shares and blocks use one metric, so the pool receives every block
candidate (no under-submission gap) and the hashrate is block-relevant.

Rebrand to drg-xmrig (version.h, build.sh, package.json, README) + add
PROTOCOL.md wire spec.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-06 16:49:22 -05:00
parent f9d6bcad5e
commit 84e7d1453c
10 changed files with 385 additions and 146 deletions

View File

@@ -1,35 +1,50 @@
# XMRig-HAC
# DRG-XMRig
XMRig-HAC is a fork of [XMRig](https://github.com/xmrig/xmrig) with added support for **DragonX** coin mining using the **rx/hush** (RandomX-HUSH) algorithm.
**DRG-XMRig** is the official [DragonX](https://dragonx.is) CPU miner — a fork of
[XMRig](https://github.com/xmrig/xmrig) that mines DragonX's dual-hash
(RandomX + double-SHA256) proof of work.
**Repository:** [git.hush.is/dragonx/xmrig-hac](https://git.hush.is/dragonx/xmrig-hac)
**Repository:** https://git.dragonx.is/DragonX/drg-xmrig
## Fork Changes
## What's different
This fork adds:
- **DragonX** coin support
- **rx/hush** algorithm (RandomX-HUSH variant)
- Customized RandomX configuration for HUSH/DragonX
DragonX block validity is `SHA256D(header + RandomX(header)) <= target`: RandomX
produces the solution, and the **double-SHA256** of `header + solution` is the
difficulty-bearing hash.
Based on XMRig v6.25.0.
DRG-XMRig filters **every** hash on that double-SHA256 pow-hash (not on the RandomX
hash), uniformly in both solo and pool mode. A block is therefore simply a share
that clears a harder target, which means:
- the pool receives **every** block candidate — no under-submission gap, and
- the reported hashrate is block-relevant (it matches the network metric).
It mines the `rx/dragonx` algorithm (aliases: `rx/hush`, `dragonx`) using DragonX's
customized RandomX parameters.
The exact wire protocol (job format, 32-byte nonce / extranonce handling, submit
format, pow-hash construction) is documented in [PROTOCOL.md](PROTOCOL.md). A
DragonX pool that scores shares on the double-SHA256 pow-hash is required.
Based on XMRig v6.25.
## Mining backends
- **CPU** (x86/x64/ARMv7/ARMv8/RISC-V)
- **OpenCL** for AMD GPUs.
- **CUDA** for NVIDIA GPUs via external [CUDA plugin](https://github.com/xmrig/xmrig-cuda).
- **CPU** (x86/x64, ARMv7/ARMv8, RISC-V)
## Download
* **[Binary releases](https://git.hush.is/dragonx/xmrig-hac/releases)**
* **[Build from source](https://xmrig.com/docs/miner/build)**
## Build
```
./build.sh --linux-release # Linux x86_64 static release
./build.sh --win-release # Windows x86_64 (MinGW cross-compile)
```
Dependencies are built by `scripts/build_deps.sh` on first run.
## Usage
The preferred way to configure the miner is the [JSON config file](https://xmrig.com/docs/miner/config) as it is more flexible and human friendly. The [command line interface](https://xmrig.com/docs/miner/command-line-options) does not cover all features, such as mining profiles for different algorithms. Important options can be changed during runtime without miner restart by editing the config file or executing [API](https://xmrig.com/docs/miner/api) calls.
* **[Wizard](https://xmrig.com/wizard)** helps you create initial configuration for the miner.
* **[Workers](http://workers.xmrig.info)** helps manage your miners via HTTP API.
```
./xmrig -o <pool-host>:<port> -u <YOUR_DRGX_ADDRESS> -a rx/dragonx
```
The preferred way to configure the miner is the JSON config file (`config.json`).
## Credits
This fork is based on [XMRig](https://github.com/xmrig/xmrig) by:
* **[xmrig](https://github.com/xmrig)**
* **[sech1](https://github.com/SChernykh)**
Based on [XMRig](https://github.com/xmrig/xmrig) by
[xmrig](https://github.com/xmrig) and [sech1](https://github.com/SChernykh)).
DragonX dual-hash mining model.