VerusMetal
An experimental VerusCoin GPU miner for Apple Silicon. An eight-hour Apple M4 pool run sustained 3.415 MH/s with 1,376 accepted shares. Signed and notarized for macOS 27 or later.
VerusCoin mining, built for Apple Silicon
An independent VerusHash v2.2 implementation in Swift and Metal. A focused command-line miner with GPU nonce search, CPU share verification and transparent local telemetry.
Prepare once, search on the GPU
The CPU prepares the job-constant hash state once. Metal threads reuse that pristine key and keep their nonce-specific changes separate. Every share candidate still passes full CPU hash verification before submission.
Ready for pool work
Stratum support handles new jobs, share submission and reconnection with bounded backoff. TCP and TLS endpoints are selected explicitly; TLS uses system certificate validation.
Correctness checked independently
All 148 independent reference digests pass through the full and cached CPU/GPU paths. Tests also cover repeated dispatches, partial threadgroups, prefix lengths 1–14, PBaaS jobs and the full-hash fallback.
Operation you can inspect
An in-place terminal display and optional JSONL history track hash rates, shares, GPU timing, thermal state and reconnects. A loopback-only API provides status, health and Prometheus metrics.
One standalone executable
The compiled Metal library is embedded in the arm64 CLI. Mining needs no separate shader files or Xcode installation. Use devices, verify, benchmark and mine to inspect, check and run the miner.
A verifiable release
The public download is Developer ID signed and notarized by Apple. The ZIP is accompanied by a SHA-256 checksum and the matching release source. Requires macOS 27 or later.
3.415 MH/s across an eight-hour pool run
Recorded by the maintainer on Apple M4 with the updated miner and 32,768 nonces per dispatch, from 21:24 on 28 September to 05:30 on 29 September 2026, Central European Summer Time. One completed session: 8 hours 06 minutes and 99.59 billion hashes.
Sustained throughput, including overhead
The full-session rate was 3.415 MH/s, including waiting and reconnect time. Active command time measured 3.430 MH/s; GPU timestamps measured 3.539 MH/s. These are miner measurements, not pool-estimated rates.
1,376 accepted shares · 99.855%
All 1,378 submissions were CPU-verified. The pool accepted 1,376, rejected two and left none unresolved. Both code-21 rejections followed clean job changes while the shares were in transit, consistent with obsolete work; the exact server-side cause is not recorded.
Stable rate and automatic recovery
All 973 thermal-state samples were nominal, with Low Power Mode off. The first hour averaged about 3.392 MH/s and the last 3.450 MH/s. After one peer connection reset, an authorized new job arrived in about 1.3 seconds.
More throughput from the same GPU
Controlled Apple M4 comparisons on 28 September 2026 use the real 1,487-byte mining layout. These short synthetic tests isolate the implementation gain; the separate eight-hour pool run measures sustained operation.
About 2.23× at equal batch size
Paired, interleaved runs in both argument orders measured 3.48–3.49 MH/s versus 1.56–1.57 MH/s at 32,768 nonces. Rates include command setup, submission and waiting. An identical-source control differed by less than 1%.
3.65 MH/s in the CLI benchmark
A separate ten-second benchmark reached 3.65 MH/s across the whole loop, with 3.78 MH/s measured in GPU time. This local measurement is not a pool-estimated rate or a promise for every Apple Silicon Mac.
32,768 nonces per dispatch
The larger default improves GPU utilization. Explicit Metal buffers use about 257 MiB, plus driver overhead and threadgroup masks. Use --batch-nonces 4096 when a smaller allocation is preferable.
Earlier pool operation, before key caching
Historical results from development builds before version 0.2.0: four recorded pool sessions on 27 September 2026 total about 7 hours 11 minutes, with 471 accepted shares, one rejected share and none unresolved. The three sessions below identify Apple M4. Different batch sizes and separate sessions prevent an optimization-only speedup comparison with the later eight-hour run.
4,096 nonces · 1.046 MH/s
97 min 56 sec of mining, with 93 accepted shares and one rejection. The miner reconnected once after a connection reset and continued mining. The session ended with no unresolved submissions.
8,192 nonces · 1.256 MH/s
66 min 39 sec of mining, with 76 accepted shares, no rejected shares and no reconnects. All 76 submitted candidates were CPU-verified and acknowledged by the pool.
16,384 nonces · 1.407 MH/s
3 hr 00 min 42 sec of mining, with 238 accepted shares, no rejected shares and no reconnects. This is the longest of the four recorded sessions, with all submitted candidates CPU-verified and accepted.
Download VerusMetal
Version 0.2.3 makes rig names optional and adds --password for pool authentication. Signed and notarized for Apple Silicon on macOS 27 or later. Extract the ZIP and run it from Terminal.
Before you start
What does VerusMetal require?
An Apple Silicon Mac running macOS 27 or later, a pool endpoint and a public Verus receiving address. Building from source requires Xcode 27, Swift 6.4 and XcodeGen. Intel Macs are not supported.
How do I run the download?
Extract the ZIP, open Terminal in that directory and start with ./verusmetal devices. A minimal command is: ./verusmetal mine --pool stratum+tcp://POOL:PORT --wallet YOUR_VERUS_ADDRESS. Add --worker mymac if you want a named rig. Use the scheme and port specified by your pool; TLS endpoints use stratum+tls:// or stratum+ssl://. Run ./verusmetal mine --help to review the available settings.
Which command-line options matter?
--pool and --wallet select the pool endpoint and public payout address; --worker optionally names the rig; there is no default name. --password overrides VERUSMETAL_POOL_PASSWORD, with x as the fallback. CLI passwords can appear in shell history and process arguments. --batch-nonces defaults to 32,768; --batch remains an alias. --stats-file records JSONL telemetry and --telemetry-interval controls its snapshots. The first rate appears after about one second of mining; update delays then double up to --stats-interval. Reconnects restart this sequence. --quiet suppresses stdout and stderr while retaining exit codes, JSONL and the optional loopback API (--api-bind 127.0.0.1:4079).
What has been validated so far?
Version 0.2.3 passes focused CLI and local-pool checks for optional rig names, the default password, CLI password precedence and the environment fallback, including authorization, share submission, reconnects and password omission from output and telemetry. Its packaged executable passes all 148 independent reference digests and a short Metal smoke benchmark. Earlier version 0.2.2 passed 19 unit tests, CLI and local-pool integration. Checks cover early nonzero rates with --stats-interval 240, reconnects, an 80-column terminal and silent mining with telemetry and API enabled. Version 0.2.0 passes all 18 unit tests, CLI and local-pool integration, Metal validation and CPU sanitizers. All 148 independent digests pass on the full and cached CPU/GPU paths; further checks cover 8,192 primitive cases and 512 directed mix cases. The maintainer's later eight-hour run of the updated miner recorded 1,376 accepted shares, two rejected and none unresolved, with a successful reconnect. The log records Apple M4 and batch 32,768 but no binary version or hash, so it cannot independently identify the exact release artifact.
How should I interpret the measurements?
The controlled comparison measures command end-to-end time separately from GPU time, repeats both argument orders and includes an identical-source control. The real eight-hour pool run averaged 3.415 MH/s, 6.34% below the earlier ten-second CLI result of 3.646 MH/s; workloads and conditions differ. It reached 2.43 times the earlier 1.407 MH/s pool result, but that run used batch 16,384, so this is not an isolated kernel speedup. No progressive rate decline appears in the new log. Nominal thermal state is not a temperature, clock or power measurement; broader hardware and energy-efficiency testing remain open.
Does mining require wallet secrets?
No. Use a public Verus receiving address. No private key or seed phrase is needed. TLS certificate validation remains enabled, and the miner never silently changes a TLS connection to plaintext.
Is the download ready to try?
Version 0.2.3 is an experimental public preview with a signed and notarized standalone executable. Xcode is needed only to build from source. Mining sustains GPU and memory load, so monitor the machine during use. CPU and hybrid mining modes are not included. The verify command also needs the reference fixture file from the source repository.
