⛏ QUANTUS POOL — NATIVE MINER SETUP

Quick Start

The native miner is a patched build of the official quantus-miner with pool-mode support (--payout-address + --worker-name). Three things to do: download the binary, get a payout address, run the miner.

1. Download

quantus-miner v4.0.2 (Windows, Linux) · v3.2.0 (macOS) — patched for pool mode
⬇ Windows x86_64 · Linux x86_64 · macOS arm64 · SHA256SUMS

After download, make the binary executable (Linux/macOS):

chmod +x quantus-miner-*
macOS Gatekeeper: the binary is unsigned, so first launch will be blocked. Clear the quarantine attribute once:
xattr -d com.apple.quarantine quantus-miner-darwin-arm64
macOS Intel (x86_64) build is coming later. Apple Silicon (M1/M2/M3/M4) only for now.

2. Get a payout address

You need a Quantus address (starts with qz…). Options:

Your rewards will be credited to whatever address you put on the --payout-address flag. The address is sent over the wire on every connection, so you can use different addresses on different rigs.

3. Run the miner

Minimum config (CPU only, auto-detected workers):

quantus-miner serve \
  --node-addr 38.190.136.41:9890 \
  --auth-token pool \
  --tls-cert-sha256 3bda8193b9f170a3fc3d8c482c9c51cdc50706ae1a3efb1a575cf18f43763e6b \
  --payout-address qzYOUR_ADDRESS_HERE \
  --worker-name my-rig

What to expect in the log:

⛏ Sent pool-hello (payout=qz…, worker=my-rig)
⛏ Bidirectional stream established
⛏ Received job: id=…, hash=0x…
🎉 GPU worker 0 found solution! …
⛏ Job … completed: N hashes in X.XXs (Y MH/s)

Confirm on the dashboard: your worker appears on the Connected Miners table within ~5s with a non-zero hashrate. Click your address to see the per-worker miner detail page.

NVIDIA CUDA miner (fastest for GeForce / RTX)

A separate, from-scratch CUDA implementation of QPoW for NVIDIA GPUs. On an RTX 5090 it sustains ~1.2–1.3 GH/s against this pool, versus ~330 MH/s for the standard miner above — about 3.5–4× more shares for the same electricity. It speaks the pool's WebSocket protocol directly (no bridge, no auth token), and its hashes are verified bit-exact against the reference implementation (8000 + 4096 known-answer vectors, plus every share is re-checked by the pool). The standard miner remains available above for CPU mining, Intel/Apple GPUs and older NVIDIA cards; AMD RDNA3 owners should use the native AMD miner below.

Requirements

1. Download

qpow-cuda v1.0.8 (build 2026-09-14) — prints its version with version
⬇ Windows x86_64 (CUDA) · Linux x86_64 (CUDA) · SHA256SUMS

Linux: chmod +x qpow-cuda-linux-x86_64. Windows: the binary is unsigned, so SmartScreen may ask you to confirm the first launch.

2. Run

Payout address as above (qz…). One line, no other flags needed:

qpow-cuda-windows-x86_64.exe pool ws://quantusminer.com:9901 qzYOUR_ADDRESS_HERE my-rig

Linux: ./qpow-cuda-linux-x86_64 pool ws://quantusminer.com:9901 qzYOUR_ADDRESS_HERE my-rig

Full form: pool <ws_url> <payout> [worker] [submit_gap_s] [ngpu]. For several NVIDIA cards in one machine pass the card count as the last argument (each card connects as worker-gpu0, -gpu1, … and mines a different nonce range):

qpow-cuda-linux-x86_64 pool ws://quantusminer.com:9901 qzYOUR_ADDRESS_HERE my-rig 0.2 2

What to expect in the log (the rate in parentheses is the last 60 s; the first minutes read low while the pool's difficulty ramps up):

[gpu0] NVIDIA GeForce RTX 5090 (170 SMs) worker=my-rig
[gpu0] connected to ws://quantusminer.com:9901
[gpu0] HelloAck received
[gpu0] [job 1234] diff=1000 target=0041…
[gpu0] [300s] 1207.3 MH/s (60s: 1213.8) | diff=4399554609 submitted=… accepted=… rejected=… staleskip=… throttled=…

Measured hashrates (this binary, build 1.0.7 (2026-09-12))

Offline bench on stock power limits, measured 12 Sep 2026. Pool-mode rates are 1–5% lower; most cards are power-limited under this load, so cooling and power cap decide the sustained clock. Untested card? MH/s ~= SMs x sustained GHz x k, with k = 2.9 (Blackwell), 2.3 (Ada), 2.2 (Ampere), 1.65 (Turing). Blackwell rows below were re-measured on 1.0.7; other rows are 1.0.5-era and 1.0.6/1.0.7 added no gain on those architectures.

GPUMH/sClock / power during benchNotes
RTX 5090 (170 SMs)1,3942895 MHz / 575 Wmeasured on 1.0.7 (5 alternated rounds). Datacenter cooling at the full 575 W cap; fleet boxes capped at 500 W/2520 MHz do ~1,200-1,300.
RTX 4090 (128 SMs)7492326 MHz / 350 W1.0.5 adds +1.9% on Ada (no-fix reduce + unit-MAD tails + limb sums); +8% over 1.0.2 on the same card (1.0.5-era measurement, not re-tested on 1.0.7)
L40S (142 SMs)7232190 MHz / 350 Wdatacenter card; poor value per rental dollar (1.0.5-era measurement, not re-tested on 1.0.7)
RTX 5080 (84 SMs)7442700 MHz / 322 Wmeasured on 1.0.7. Best MH/s per watt of the Blackwell line (2.3).
RTX 5070 Ti (70 SMs)6262670 MHz / 250 Wmeasured on 1.0.7. Consistently the top rental value on vast.ai.
H100 SXM 80 GB (132 SMs)5521980 MHz / 434 Wdatacenter card; not power-limited; poor value per rental dollar (1.0.5-era measurement, not re-tested on 1.0.7)
RTX 4080 SUPER (80 SMs)4792595 MHz / 320 W(1.0.5-era measurement, not re-tested on 1.0.7)
RTX 5070 (48 SMs)4312820 MHz / 243 Wmeasured on 1.0.7.
RTX 4070 Ti (60 SMs)3762710 MHz / 248 W(1.0.5-era measurement, not re-tested on 1.0.7)
A100 SXM4 40 GB (108 SMs)3321410 MHz / 285 Wclock-bound datacenter card; poor value (1.0.5-era measurement, not re-tested on 1.0.7)
RTX 4070 SUPER (56 SMs)3262380 MHz / 160 Wmeasured on 1.0.7 (Ada is unchanged from 1.0.6 — the sparse path is sm_120+ only).
RTX 4070 (46 SMs)2912750 MHz / 198 W(1.0.5-era measurement, not re-tested on 1.0.7)
RTX 3090 (82 SMs)2821344 MHz / 218 Whost power cap 220 W; 1.0.5 adds +2.1% on Ampere; +9% over 1.0.2 on the same card (1.0.5-era measurement, not re-tested on 1.0.7)
RTX 5060 Ti (36 SMs)3132707 MHz / 151 Wmeasured on 1.0.7. Not power-limited at 160 W.
RTX 3080 (68 SMs)2441570 MHz / 200 Whost power cap 200 W of 370 (1.0.5-era measurement, not re-tested on 1.0.7)
RTX 5060 (30 SMs)2652760 MHz / 125 Wmeasured on 1.0.7. Lowest purchase price per MH/s.
CMP 170HX (70 SMs)2421455 MHz / 205 WGA100 mining card; firmware clock ceiling (~1460 MHz), not power-limited; 512-thread blocks +1.2%; test-only value at rental prices (~980 MH/s per $/h) (1.0.5-era measurement, not re-tested on 1.0.7)
RTX 2080 Ti (68 SMs)1841426 MHz / 155 Whost power cap 170 W; 1.0.5 adds +2.0% on Turing; +11% over 1.0.2 on the same card (1.0.5-era measurement, not re-tested on 1.0.7)
RTX 3060 (28 SMs)1241920 MHz / 161 W(1.0.5-era measurement, not re-tested on 1.0.7)

Benchmark and self-test

qpow-cuda-windows-x86_64.exe bench 10          # ~10 s offline throughput test, prints MH/s per GPU
qpow-cuda-windows-x86_64.exe mine <32-byte-hex-header> 100000000   # find one solution at a fixed difficulty

The miner auto-reconnects with backoff if the pool or your network drops, skips solutions whose job rolled over while they were on the GPU, and re-checks nothing on the CPU — the pool does that for every share. Keep the GPU cool: these cards are power-limited under this load, so a well-cooled card runs 10–15% faster than a hot one.

Windows note: mining a NVIDIA card that also drives your display makes the desktop sluggish. Prefer a dedicated card, or run it on a headless machine.

AMD GPU miner (ROCm / HIP — Linux, RDNA3)

A native AMD implementation of QPoW. On a Radeon RX 7900 XTX it sustains ~175 MH/s against this pool, versus ~96 MH/s for the standard miner on the same card — the standard miner has no AMD kernel and falls back to a generic Vulkan path. Hashes are verified bit-exact against the reference implementation (8000 known-answer vectors), and every candidate nonce is re-hashed through that verified path before it is submitted.

Worth knowing before buying hardware for it: QPoW is dominated by 64-bit integer multiplies, which RDNA3 emulates. At ~175 MH/s an RX 7900 XTX is still beaten by a far cheaper RTX 5060 at ~265 MH/s. This exists so AMD owners can mine competitively on hardware they already have.

Requirements

1. Pick the build that matches your ROCm

Check your version first — ls -d /opt/rocm* or apt list --installed | grep rocm. The two builds are not interchangeable.

Your ROCmDownloadRX 7900 XTX
5.x (Ubuntu apt install hipcc) ⬇ qpow-hip-linux-x86_64-rocm5 175 MH/s
6.x (AMD amdgpu-install --usecase=rocm) ⬇ qpow-hip-linux-x86_64-rocm6 130 MH/s

The ROCm 5 build is ~34 % faster. That is a property of the ROCm runtime, not the kernel — identical source compiled against 6.4 simply runs slower. · Full documentation · SHA256SUMS

If it will not start and prints libamdhip64.so.5: cannot open shared object file, you have ROCm 6 — download the -rocm6 build instead (and vice versa for .so.6). This happens in the dynamic loader before the miner runs, so it cannot warn you itself.

2. Run

chmod +x qpow-hip-linux-x86_64-rocm5, then the same payout address as above:

./qpow-hip-linux-x86_64-rocm5 pool ws://quantusminer.com:9901 qzYOUR_ADDRESS_HERE my-rig

Check your setup first with ./qpow-hip-linux-x86_64-rocm5 version — it prints the ROCm version the build targets, the runtime it found and your GPU, and warns if they do not match.

qpow-hip 0.1.0 | built for ROCm 5.7 | runtime ROCm 5.x | device: AMD Radeon RX 7900 XTX (gfx1100)
[job 3018] diff=1000 target=0041…
[300s] 175.6 MH/s | diff=595790077 submitted=… accepted=… rejected=…

GPU Selection

Multi-GPU systems are common (e.g., a laptop with an iGPU + dGPU, a workstation with multiple cards). The miner uses wgpu, which enumerates every GPU it can see across every supported backend (Vulkan, DirectX 12, Metal), so your "RTX 5090" may appear three or four times in the list. Picking the right one matters.

Step 1: List the GPUs

quantus-miner gpu-list

Output looks like this on Windows (RTX 5090 + iGPU + Microsoft fallback):

idx | name                                     | backend  |     vendor |     device | type
  0 | AMD Radeon(TM) 890M Graphics             | Vulkan   | 0x00001002 | 0x0000150e | IntegratedGpu
  1 | NVIDIA GeForce RTX 5090                  | Vulkan   | 0x000010de | 0x00002b85 | DiscreteGpu
  2 | NVIDIA GeForce RTX 5090                  | Vulkan   | 0x000010de | 0x00002b85 | DiscreteGpu
  3 | NVIDIA GeForce RTX 5090 Laptop GPU       | Vulkan   | 0x000010de | 0x00002c58 | DiscreteGpu
  4 | NVIDIA GeForce RTX 5090 Laptop GPU       | Vulkan   | 0x000010de | 0x00002c58 | DiscreteGpu
  5 | AMD Radeon(TM) 890M Graphics             | Dx12     | 0x00001002 | 0x0000150e | IntegratedGpu
  6 | NVIDIA GeForce RTX 5090                  | Dx12     | 0x000010de | 0x00002b85 | DiscreteGpu
  7 | NVIDIA GeForce RTX 5090 Laptop GPU       | Dx12     | 0x000010de | 0x00002c58 | DiscreteGpu
  8 | Microsoft Basic Render Driver            | Dx12     | 0x00001414 | 0x0000008c | Cpu

Same physical GPU often appears two or three times under different backends. Vulkan tends to perform best on NVIDIA & AMD discrete cards on Windows and Linux; DirectX 12 is the fallback. macOS only has Metal (via Vulkan→Metal translation).

Step 2: Choose how many GPUs to use

As of miner v4, integrated GPUs are skipped automatically whenever a discrete card is present, so you no longer have to hand-pick an index to avoid the iGPU — --gpu-devices 1 lands on your first discrete card.

FlagBehavior
--gpu-devices N Use N discrete GPUs, in enumeration order. Omit the flag to use every discrete GPU found.
--allow-integrated Also consider integrated GPUs (APUs). Off by default — an iGPU is usually far slower and can destabilise the driver while a dGPU is working.
Changed in v4: the old --gpu-device-ids flag (explicit comma-separated indices) no longer exists. Use --gpu-devices N instead. If you need to pin a specific card on a multi-dGPU box, restrict what the miner can see with the vendor's own mechanism (e.g. CUDA_VISIBLE_DEVICES, or Windows' per-app GPU preference).

Step 3: Examples

Single discrete GPU (RTX 5090 on Vulkan, ignore the iGPU):

quantus-miner serve \
  --node-addr 38.190.136.41:9890 \
  --auth-token pool \
  --tls-cert-sha256 3bda8193b9f170a3fc3d8c482c9c51cdc50706ae1a3efb1a575cf18f43763e6b \
  --payout-address qz… \
  --worker-name rtx5090-rig \
  --cpu-workers 0 \
  --gpu-devices 1

Two GPUs in parallel (desktop 5090 + laptop 5090, both on Vulkan):

quantus-miner serve \
  --node-addr 38.190.136.41:9890 \
  --auth-token pool \
  --tls-cert-sha256 3bda8193b9f170a3fc3d8c482c9c51cdc50706ae1a3efb1a575cf18f43763e6b \
  --payout-address qz… \
  --worker-name dual-5090 \
  --cpu-workers 0 \
  --gpu-devices 2

CPU + GPU mixed (4 CPU threads + one dGPU):

quantus-miner serve \
  --node-addr 38.190.136.41:9890 \
  --auth-token pool \
  --tls-cert-sha256 3bda8193b9f170a3fc3d8c482c9c51cdc50706ae1a3efb1a575cf18f43763e6b \
  --payout-address qz… \
  --worker-name mixed-rig \
  --cpu-workers 4 \
  --gpu-devices 1
On Windows with a laptop iGPU + dGPU combo, also set the GPU preference at the OS level: Settings → System → Display → Graphics → Add the miner → High performance. This makes Windows wake up the dGPU faster and keeps the iGPU available for the display.

All CLI flags

FlagDefaultWhat it does
--node-addr127.0.0.1:9833QUIC endpoint to connect to. For pool: 38.190.136.41:9890. Must be IP:port, hostnames not supported.
--payout-address—Required for pool mining. Your qz… address. Sent in the pool-hello frame.
--worker-namehostnameFriendly name shown on the dashboard. Useful when you have multiple rigs.
--cpu-workersautoCPU mining threads. Set 0 for GPU-only.
--gpu-devicesall discreteUse N discrete GPUs. Integrated cards are skipped unless --allow-integrated.
--allow-integratedoffAlso use integrated GPUs (APUs). Usually slower than the dGPU it competes with.
--auth-token—Required. Any value works against this pool; use pool. (Against a real node it must match the node's miner-auth-token.)
--tls-cert-sha256—Required. Pins the endpoint's TLS certificate. The pool bridge's fingerprint is shown in the commands above.
--gpu-batch-size1000000Nonces per GPU dispatch. Larger = higher throughput, longer cancellation latency. Default is fine.
--cpu-batch-size10000Hashes per CPU cancellation check. Default is fine.
--metrics-port9900Prometheus metrics on http://0.0.0.0:N/metrics. Change if running multiple miners on one host.
-v / --verboseoffDebug-level logging. Useful for troubleshooting; loud otherwise.

Also: quantus-miner gpu-list (enumerate GPUs) and quantus-miner benchmark (10s engine speed test, no pool needed).

Running as a service

For a long-lived rig you'll want auto-restart on crash and on reboot. On Linux with systemd:

sudo tee /etc/systemd/system/quantus-miner.service <<'EOF'
[Unit]
Description=Quantus Native Miner (pool)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=mining
WorkingDirectory=/home/mining
ExecStart=/home/mining/quantus-miner-linux-x86_64 serve \
    --node-addr 38.190.136.41:9890 \
    --auth-token pool \
    --tls-cert-sha256 3bda8193b9f170a3fc3d8c482c9c51cdc50706ae1a3efb1a575cf18f43763e6b \
    --payout-address qzYOUR_ADDRESS \
    --worker-name my-rig \
    --cpu-workers 0 \
    --gpu-devices 1
Restart=on-failure
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now quantus-miner
sudo journalctl -u quantus-miner -f

On Windows, easiest is NSSM to wrap the .exe as a service.

Troubleshooting

Connection refused / can't connect to 38.190.136.41:9890

"payout address rejected"

Hashrate drops, then climbs again

Browser GPU on Mac doesn't work, native does

Multiple miners on one host